[include 31181.inc] [include 3118.inc] [include 3117.inc] [include 3116.inc] [include 3115.inc] [include 3114.inc] [include 3113.inc] [include 3112.inc] [include 3111.inc] [include 3110.inc] [include 319.inc] [include 318.inc] [include 317.inc] [include 316.inc] [include 315.inc] [include 314.inc] [include 313.inc] [include 312.inc] [include 311.inc] [section {Changes for version 3.1}] [list_begin enumerated] [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Added a new higher-level package [package critcl::iassoc]. [para] This package simplifies the creation of code associating data with an interpreter via Tcl's [fun Tcl_(Get|Set)AssocData()] APIs. The user can concentrate on his data while all the necessary boilerplate C code to support this is generated by the package. [para] This package uses several of the new features which were added to the core [package critcl] package, see below. [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Added the higher-level package [package critcl::class]. [para] This package simplifies the creation of C level objects with class and instance commands. The user can write a class definition with class- and instance-variables and -methods similar to a TclOO class, with all the necessary boilerplate C code to support this generated by the package. [para] This package uses several of the new features which were added to the core [package critcl] package, see below. [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Extended the API for handling TEApot metadata. Added the command [cmd critcl::meta?] to query the stored information. Main use currently envisioned is retrieval of the current package's name by utility commands, for use in constructed names. This particular information is always available due to the static scan of the package file on execution of the first critcl command. [para] The new packages [package critcl::iassoc] and [package critcl::class] (see above) are users of this command. [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Extended the API with a command, [cmd critcl::name2c], exposing the process of converting a Tcl name into base name, namespace, and C namespace. This enables higher-level code generators to generate the same type of C identifiers as [package critcl] itself. [para] The new package [package critcl::class] (see above) is a user of this command. [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Extended the API with a command, [cmd critcl::source], executing critcl commands found in a separate file in the context of the current file. This enables easier management of larger bodies of code as it allows the user to split such up into easier to digest smaller chunks without causing the generation of multiple packages. [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Related to the previous item, extended the API with commands to divert collection of generated C code into memory. This makes it easier to use the commands for embedded C code in higher-level code generators. [para] See the section [sectref {Advanced: Diversions}] for details of the provided commands. [para] The new package [package critcl::class] (see above) is a user of these facilities. [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Extended the API with commands helping developers with the generation of proper C [term #line] directives. This allows higher-level code generators to generate and insert their own directives, ensuring that compile errors in their code are properly attributed. [para] See the section [sectref {Advanced: Location management}] for details of the provided commands. [para] The new packages [package critcl::iassoc] and [package critcl::class] (see above) are users of these facilities. [comment {- - -- --- ----- -------- ------------- ---------------------}] [enum] Extended the API with commands giving users the ability to define custom argument and result types for [cmd ::critcl::cproc]. [para] See the section [sectref {CriTcl cproc Type Reference}] for details of the provided commands. [comment {- - -- --- ----- -------- ------------- ---------------------}] [list_end]