xotclInt.h

Clone Tools
  • last updated 23 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- renamed parseObjv() -> ArgumentParse() - renamed ifdSize -> nrParameters - argDefinitionsFree() -> ParameterDefinitionsFree() - renamed argDefinitionsNew() -> ParameterDefinitionsNew() - renamed struct XOTclParsedInterfaceDefinition -> XOTclParsedParameterDefinition - renamed ParsedInterfaceDefinitionFree() -> ParsedParameterDefinitionFree() - renamed struct argDefinition -> parameterDefinition - renamed struct XOTclNonposArgs ->XOTclParamDefs - renamed GeneratIfd() -> ParsedParameterDefinitionGet() - renamed parseNonposArgs() -> ParseParameterDefinitions() - renamed parseArgDefinition() -> ParseParamDefintion()

- new function ArgumentDefaults()

- new functions ArgumentError()

- ArgumentParse() handles now defaults as well (could be optimized)

- made varargs passing explicit

  1. … 4 more files in changeset.
- keep flags for every objv in the parse context to communicate needed DECR_REF_COUNTS - keep Tcl_Obj "nameObj" in argDefinitions to avoid repetitious creations - move convertToRelation handling from ProcessMethodArguments() to configureMethod - move substDefault handing from configureMethod to other default handling in ProcessMethodArguments()

  1. … 2 more files in changeset.
- new option initcmd for nonposarg parser (necessary for regression test) - error handling for failed relation settings - fixed crash when canonicalNonpositionalArgs returned result != 0 - regession test runs again

  1. … 4 more files in changeset.
- renamed "objinterface" to "objectparameter" - renamed "invalidateinterfacedefinition" to "invalidateobjectparameter" - fixed regression test "filterAddRemove" and "filterClassChange" to be more robust - deactivated regression test "filterInfo", since this traces the detail of object configuration - object parameters pass now testx regression test, run currently into problems in slottest

  1. … 6 more files in changeset.
- renamed "configureargs" to "objinterface"

  1. … 4 more files in changeset.
- new option substdefault for nonposarg parser - changed per-argument options for argument definitions to bitfield named "flags" - removed CONFIGURE_SIGNATURE_GENERATOR - can start now with cacheInterface 1

  1. … 4 more files in changeset.
- added first verison of configure based on nonpos args (many thanks to Stefan!)

  1. … 8 more files in changeset.
-added missing Makefile dependency for xotclAccessInt.h -switched from XOTclObjectType to Tcl cmdName type (removed all type usages, removed RegisterObjTypes()) -removed compile flag KEEP_TCL_CMD_TYPE -renamed XOTclObjConvertObject() to GetObjectFromObj() -renamed GetXOTclClassFromObj() to GetClassFromObj() -simplified name/object conversion to lookup xotcl Objects -handle imported cmds in XOTclGetClientDataFromCmdPtr() -removed object flag XOTCL_NS_DESTROYED -removed member "parameters" from XOTclClass -removed member "parameterClass" from XOTclClassOpt

  1. … 7 more files in changeset.
- fix a bug in CopyHandler (while copying slot objects) - found and fixed two cases, where xotcl could crash during deletion of active objects - simplified deletion logic of active objects significantly unsing an explicit activation count - removed old deletion logic (state variable callIsDestroy, callstate XOTCL_CSC_CALL_IS_DESTROY, destroyedCmd on stack content) - removed now obsolete functions CallStackMarkDestroyed() and CallStackMarkUndestroyed() - made changes for with and without TCL85STACK

  1. … 11 more files in changeset.
- changed version number from 2.0.0a to 2.0.0 to avoid problems with package require - found crashes in deletion order (when tcl implicitly deletes xotcl objects), introduced temporary compile flag OLD_DELETE

  1. … 13 more files in changeset.
- added c functions for handling nonposargs in XOTclProcContext: getNonposArgs(), addNonposArgs() - provide convenient means to get Proc *: getObjectProc() getClassProc() - removed old hashtables and managing functions for nonposargs - reduced size of XOTclObject and XOTclClass structures

  1. … 1 more file in changeset.
- XOTclProcContext and XOTclProcDeleteProc(): hooks for storing method information in command structures - added nonpos args lookup via XOTclProcContext

  1. … 2 more files in changeset.
- removed XOTclCallStack definition and datastructures, when compiled with TCL85STACK

- CallStackPop(): when compiled with TCL85STACK,

the function just initializes a given call stack content;

allocation based on C-Stack

- some function cleanup and minor optimizations

  1. … 4 more files in changeset.
- get rid of fakeNS - minor simplification in XOTcl_PopFrame()

  1. … 1 more file in changeset.
- Removed currentFramePtr (the pointer from the xotcl stack to the tcl stack) from the call stack content. Now, all access to the call stack content happens via the tcl85stack.

- For the time being, the xotcl stack is purely an allocation stack

(we still have to evaluate, where we should store the call stack content efficiently:

some options: via alloca, on the c-stack, on the tcl stack, on an allocation stack)

  1. … 2 more files in changeset.
- implemented XOTclCallStackFindActiveFrame() for tcl85stack

  1. … 3 more files in changeset.
- defined new (3rd) frame type FRAME_IS_XOTCL_CMETHOD for calling c-implemented methods (the same as FRAME_IS_XOTCL_OBJECT, except that it uses csc as clientData instead of only the xotcl object - implemented XOTclCallStackFindLastInvocation() for tcl85stack

  1. … 6 more files in changeset.
- snapshot 3 - first version passing regression test again

  1. … 3 more files in changeset.
- snapshot #2

  1. … 4 more files in changeset.
- starting to use tcl85 stack (when complied with TCL85STACK). Goal is to remove the own stack handling, when compiled with Tcl 8.5+ Introduced two frame types, FRAME_IS_XOTCL_METHOD and FRAME_IS_XOTCL_OBJECt - Currently, only self is resolved this way from the Tcl stack. - Currentlsy, just parts (e.g. testo.tcl) of the regression test work

  1. … 3 more files in changeset.
- updating changelog - cleanup and documentation in xotcl.c

  1. … 2 more files in changeset.
commit snapshot

  1. … 1 more file in changeset.
- based introspection for procs/instprocs on new argument definition structures

- allowing type checkers also for positional arguments

(for now only, when nonpos args are given as well; we have

to think about using these either for all procs/instprocs,

or only, when e.g. type checkers are used; we have to

make more benchmarking to get a better foundation)

- registered the following type checkers for procs/instprocs:

switch, integer, boolean, object, class

Example

o proc bar {-enable:switch o:object c:class} {

return "o=$o c=$c"

}

- generated interface for ::xotcl::configure; now 97 interfaces are

generated; shortcoming for bool/int converter stubs: optional

0-vaues are not recognized, so use tclobj for the time being

- extended regression test

  1. … 7 more files in changeset.
- parse non-pos-args for procs/instprocs into new argument definition structure - using new parseObjv for calling procs and instproc when nonpos-args are used (invocation time went from 9.08ms to 5.95ms) - TODO: complete implementation for regression test, base introspection/copy etc. on new structures

  1. … 5 more files in changeset.
- removed compatibility for versions before Tcl 8.4 (was not tested anyhow) This version requires at least Tcl 8.4.

  1. … 3 more files in changeset.
- !!! removed obsolete features * ability to specify nonpos args and pos args as different arguments * compile flags AUTOVARS, REFCOUNTED, REFCOUNT_TRACE - added -flags with one argument + type - generated all class methods from interface descriptions

- transtional version, not all test of regression test work correctly

  1. … 9 more files in changeset.
- committing snapshot - changed method name "instdestroy" into "dealloc" - new file: tclAPI.h

  1. … 3 more files in changeset.
- new command: ::xotcl::createobjectsystem <rootClass> <rootMetaClass> This command creates a basic object system with the specified <rootClass> as most general root class and the specified metaclass as most general meta class.

Example: ::xotcl::createobjectsystem ::oo::object ::oo::class

In general, it would be possible to remove an objects system

at runtime, but there is so far no tcl interface for this.

- extended framework to work with multiple root classes

- the basic root class of XOTcl is now ::xotcl::Object again

(instead of ::oo::object) as before. The old setup can be

achieved on the Tcl-layer.

  1. … 7 more files in changeset.
- added metaclass property for root metaclass - metaclass property is set via ::xotcl::relation ... metaclass

  1. … 3 more files in changeset.
- use objectName() and className() when possible - implemented XOTclClassInfoMixinofMethod() and XOTclClassInfoInstmixinofMethod() - some cleanup in regression tests

  1. … 4 more files in changeset.