critcl_literals man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

critcl::literals(n)	   C Runtime In Tcl (CriTcl)	   critcl::literals(n)

______________________________________________________________________________

NAME
       critcl::literals - CriTcl Utilities: Constant string pools

SYNOPSIS
       package require Tcl  8.4

       package require critcl  ?3.1.11?

       package require critcl::literals	 ?1.1?

       ::critcl::literals::def name definition

______________________________________________________________________________

DESCRIPTION
       Welcome	to the C Runtime In Tcl, CriTcl for short, a system to build C
       extension packages for Tcl on the fly, from C code embedded within  Tcl
       scripts, for all who wish to make their code go faster.

       This  document  is the reference manpage for the critcl::literals pack‐
       age. This package provides convenience commands for advanced  function‐
       ality built on top of both critcl core and package critcl::iassoc.

       Many packages will have a fixed set of string constants occuring in one
       or places. Most of them will be coded to create a new  string  Tcl_Obj*
       from  a	C  char* every time the constant is needed, as this is easy to
       to, despite the inherent waste of memory.

       This package was written to make declaration and management  of	string
       pools  which do not waste memory as easy as the wasteful solution, hid‐
       ing all attendant complexity from the user.

       Its intended audience are mainly developers wishing to write Tcl	 pack‐
       ages with embedded C code.

       This package resides in the Core Package Layer of CriTcl.

       +----------------+
       |Applications	|
       | critcl		|
       | critcl::app	|
       +----------------+

       *================*
       |Core Packages	|
       | critcl		|
       | critcl::util	|
       *================*

       +----------------+
       |Support Packages|
       | stubs::*	|
       | md5, platform	|
       |  ...		|
       +----------------+

API
       ::critcl::literals::def name definition
	      This command defines a C function with the given name which pro‐
	      vides access to a pool of constant strings  with	a  Tcl	inter‐
	      preter.

	      The  definition dictionary provides the mapping from the C-level
	      symbolic names to the string themselves.

	      The new function	has  two  parameters,  a  Tcl_Interp*  pointer
	      refering	to the interpreter holding the string pool, and a code
	      of type "name_names" (see below), the symbolic name of the  lit‐
	      eral to return. Tcl result of the function is a Tcl_Obj* pointer
	      to the requested string constant.

	      The underlying string pool is automatically initialized on first
	      access, and finalized on interpreter destruction.

	      The  package generates multiple things (declarations and defini‐
	      tions) with names derived from name, which has to be a proper  C
	      identifier.

	      name   The  function  providing  access to the string pool.  Its
		     signature is

		     Tcl_Obj* name (Tcl_Interp* interp, name_names literal);

	      name_names
		     A C enumeration type containing the symbolic names of the
		     strings provided by the pool.

	      name.h A	header file containing the declarations for the acces‐
		     sor function and enumeration type, for use by other parts
		     of the system, if necessary.

		     The generated file is stored in a place where it will not
		     interfere with the overall system outside of the package,
		     yet also be available for easy inclusion by package files
		     (csources).

	      name   New in version 1.1: At the level  of  critcl  itself  the
		     command  registers	 a  new result-type for critcl::cproc,
		     which takes an integer result from the function and  con‐
		     verts  it	to  the	 equivalent string in the pool for the
		     script.

EXAMPLE
       The example shown below is the specification of the string pool	pulled
       from the draft work on a Tcl binding to Linux's inotify APIs.

	      package require Tcl 8.5
	      package require critcl 3.1.11

	      critcl::buildrequirement {
		  package require critcl::literals
	      }

	      critcl::literals::def tcl_inotify_strings {
		  w_create"create"
		  w_directory"directory"
		  w_events"events"
		  w_file"file"
		  w_handler"handler"
		  w_remove"remove"
	      }

	      # Declarations: tcl_inotify_strings.h
	      # Type:	      tcl_inotify_strings_names
	      # Accessor:     Tcl_Obj* tcl_inotify_strings (Tcl_Interp*		      interp,
	      #						    tcl_inotify_strings_names literal);
	      # ResultType:   tcl_inotify_strings

AUTHORS
       Andreas Kupries

BUGS, IDEAS, FEEDBACK
       This  document,	and the package it describes, will undoubtedly contain
       bugs    and    other    problems.     Please	report	   such	    at
       https://github.com/andreas-kupries/critcl.    Please  also  report  any
       ideas for enhancements you may have for either package and/or  documen‐
       tation.

KEYWORDS
       C  code,	 Embedded C Code, Tcl Interp Association, code generator, com‐
       pile & run, compiler, dynamic  code  generation,	 dynamic  compilation,
       generate	 package, linker, literal pool, on demand compilation, on-the-
       fly compilation, singleton, string pool

CATEGORY
       Glueing/Embedded C code

COPYRIGHT
       Copyright (c) 2011-2015 Andreas Kupries

doc				      1.1		   critcl::literals(n)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net