diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-10-19 15:53:14 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-10-19 15:53:14 (GMT) |
commit | e87ceb89576dc37f5f988edd8b27e2be84ecc918 (patch) | |
tree | b618a526471d0d0959cd61fb4f2f6710ea3ee4bf /generic/tclOOInt.h | |
parent | 251aca8829d76cd4994afdf3bcbc966523809053 (diff) | |
parent | cb061edef8250a8cd969eb0eb291f4c44d65d74e (diff) | |
download | tcl-e87ceb89576dc37f5f988edd8b27e2be84ecc918.zip tcl-e87ceb89576dc37f5f988edd8b27e2be84ecc918.tar.gz tcl-e87ceb89576dc37f5f988edd8b27e2be84ecc918.tar.bz2 |
Merge 8.7
Diffstat (limited to 'generic/tclOOInt.h')
-rw-r--r-- | generic/tclOOInt.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/generic/tclOOInt.h b/generic/tclOOInt.h index 2f3b470..6fa0925 100644 --- a/generic/tclOOInt.h +++ b/generic/tclOOInt.h @@ -242,6 +242,10 @@ typedef struct Object { /* Object/class has (or had) private methods, * and so shouldn't be cached so * aggressively. */ +#define DONT_DELETE 0x40000 /* Inhibit deletion of this object. Used + * during fundamental object type mutation to + * make sure that the object actually survives + * to the end of the operation. */ /* * And the definition of a class. Note that every class also has an associated @@ -550,6 +554,8 @@ MODULE_SCOPE int TclOO_Object_VarName(void *clientData, MODULE_SCOPE void TclOOAddToInstances(Object *oPtr, Class *clsPtr); MODULE_SCOPE void TclOOAddToMixinSubs(Class *subPtr, Class *mixinPtr); MODULE_SCOPE void TclOOAddToSubclasses(Class *subPtr, Class *superPtr); +MODULE_SCOPE Class * TclOOAllocClass(Tcl_Interp *interp, + Object *useThisObj); MODULE_SCOPE int TclNRNewObjectInstance(Tcl_Interp *interp, Tcl_Class cls, const char *nameStr, const char *nsNameStr, int objc, @@ -564,6 +570,8 @@ MODULE_SCOPE int TclOODefineSlots(Foundation *fPtr); MODULE_SCOPE void TclOODeleteChain(CallChain *callPtr); MODULE_SCOPE void TclOODeleteChainCache(Tcl_HashTable *tablePtr); MODULE_SCOPE void TclOODeleteContext(CallContext *contextPtr); +MODULE_SCOPE void TclOODeleteDescendants(Tcl_Interp *interp, + Object *oPtr); MODULE_SCOPE void TclOODelMethodRef(Method *method); MODULE_SCOPE CallContext *TclOOGetCallContext(Object *oPtr, Tcl_Obj *methodNameObj, int flags, @@ -591,7 +599,10 @@ MODULE_SCOPE int TclNRObjectContextInvokeNext(Tcl_Interp *interp, MODULE_SCOPE void TclOONewBasicMethod(Tcl_Interp *interp, Class *clsPtr, const DeclaredClassMethod *dcm); MODULE_SCOPE Tcl_Obj * TclOOObjectName(Tcl_Interp *interp, Object *oPtr); +MODULE_SCOPE void TclOOReleaseClassContents(Tcl_Interp *interp, + Object *oPtr); MODULE_SCOPE int TclOORemoveFromInstances(Object *oPtr, Class *clsPtr); +MODULE_SCOPE int TclOORemoveFromMixins(Class *mixinPtr, Object *oPtr); MODULE_SCOPE int TclOORemoveFromMixinSubs(Class *subPtr, Class *mixinPtr); MODULE_SCOPE int TclOORemoveFromSubclasses(Class *subPtr, |