#ifndef _TCLOOINT_H
typedef int (*TclOO_PreCallProc)(ClientData clientData, Tcl_Interp *interp,
        Tcl_ObjectContext contextPtr, Tcl_CallFrame *framePtr, int *isFinished);
typedef int (*TclOO_PostCallProc)(ClientData clientData, Tcl_Interp *interp,
        Tcl_ObjectContext contextPtr, Tcl_Namespace *nsPtr, int result);
typedef int (*TclOO_MapMethodNameProc)(Tcl_Interp *interp, Tcl_Object oPtr,
        Tcl_Class *startClsPtr, Tcl_Obj *methodObj);
#endif

EXTERN void Tcl_ObjectSetMapMethodNameProc(Tcl_Object oPtr,
        TclOO_MapMethodNameProc mapMethodNameProc);


EXTERN Tcl_Method Tcl_NewProcMethod(Tcl_Interp *interp, Tcl_Object oPtr,
        TclOO_PreCallProc preCallPtr, TclOO_PostCallProc postCallPtr,
        Tcl_ProcErrorProc errProc, ClientData clientData, Tcl_Obj *nameObj,
	Tcl_Obj *argsObj, Tcl_Obj *bodyObj, int flags, ClientData *clientData2);
EXTERN Tcl_Method Tcl_NewProcClassMethod(Tcl_Interp *interp, Tcl_Class clsPtr,
        TclOO_PreCallProc preCallPtr, TclOO_PostCallProc postCallPtr,
        Tcl_ProcErrorProc errProc, ClientData clientData, Tcl_Obj *nameObj,
	Tcl_Obj *argsObj, Tcl_Obj *bodyObj, int flags, ClientData *clientData2);
EXTERN Tcl_Method Tcl_NewForwardMethod(Tcl_Interp *interp, Tcl_Object oPtr,
        int flags, Tcl_Obj *nameObj, Tcl_Obj *prefixObj);
EXTERN Tcl_Method Tcl_NewForwardClassMethod(Tcl_Interp *interp,
        Tcl_Class clsPtr, int flags, Tcl_Obj *nameObj, Tcl_Obj *prefixObj);
EXTERN void Tcl_AddToMixinSubs(Tcl_Class subPtr, Tcl_Class superPtr);
EXTERN void Tcl_RemoveFromMixinSubs(Tcl_Class subPtr, Tcl_Class superPtr);


