The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

ObjectType (3)
  • >> ObjectType (3) ( Solaris man: Библиотечные вызовы )
  • 
    _________________________________________________________________
    
    NAME
         Tcl_RegisterObjType, Tcl_GetObjType,  Tcl_AppendAllObjTypes,
         Tcl_ConvertToType  - manipulate Tcl object types
    
    SYNOPSIS
         #include <tcl.h>
    
         Tcl_RegisterObjType(typePtr)
    
         Tcl_ObjType *
         Tcl_GetObjType(typeName)
    
         int
         Tcl_AppendAllObjTypes(interp, objPtr)
    
         int
         Tcl_ConvertToType(interp, objPtr, typePtr)
    
    ARGUMENTS
         Tcl_ObjType   *typePtr    (in)      Points to the  structure
                                             containing   information
                                             about  the  Tcl   object
                                             type.  This storage must
                                             must live forever, typi-
                                             cally  by  being  stati-
                                             cally allocated.
    
         char          *typeName   (in)      The name of a Tcl object
                                             type that Tcl_GetObjType
                                             should look up.
    
         Tcl_Interp    *interp     (in)      Interpreter to  use  for
                                             error reporting.
    
         Tcl_Obj       *objPtr     (in)      For
                                             Tcl_AppendAllObjTypes,
                                             this   points   to   the
                                             object   onto  which  it
                                             appends the name of each
                                             object  type  as  a list
                                             element.             For
                                             Tcl_ConvertToType,  this
                                             points to an object that
                                             must   have   been   the
                                             result  of  a   previous
                                             call to Tcl_NewObj.
    _________________________________________________________________
    
    
    
    DESCRIPTION
         The procedures in this man page  manage  Tcl  object  types.
         The  are  used  to register new object types, look up types,
         and force conversions from one type to another.
    
         Tcl_RegisterObjType registers a new Tcl object type  in  the
         table  of  all  object types supported by Tcl.  The argument
         typePtr points to a Tcl_ObjType structure that describes the
         new  type  by  giving  its name and by supplying pointers to
         four procedures that implement the type.  If the type  table
         already  containes  a type with the same name as in typePtr,
         it is replaced with the new type.  The Tcl_ObjType structure
         is described in the section THE TCL_OBJTYPE STRUCTURE below.
    
         Tcl_GetObjType returns a pointer  to  the  Tcl_ObjType  with
         name typeName.  It returns NULL if no type with that name is
         registered.
    
         Tcl_AppendAllObjTypes appends the name of each  object  type
         as  a list element onto the Tcl object referenced by objPtr.
         The return value is TCL_OK unless there was  an  error  con-
         verting  objPtr  to a list object; in that case TCL_ERROR is
         returned.
    
         Tcl_ConvertToType  converts  an  object  from  one  type  to
         another  if possible.  It creates a new internal representa-
         tion for objPtr appropriate for the target type typePtr  and
         sets   its  typePtr  member  to  that  type.   Any  internal
         representation for objPtr's old type is freed.  If an  error
         occurs during conversion, it returns TCL_ERROR and leaves an
         error message in the result object for interp unless  interp
         is  NULL.   Otherwise,  it  returns  TCL_OK.  Passing a NULL
         interp allows this procedure to be used as  a  test  whether
         the conversion can be done (and in fact was done).
    
    
    THE TCL_OBJTYPE STRUCTURE
         Extension writers can define new object  types  by  defining
         four  procedures,  initializing  a  Tcl_ObjType structure to
         describe the type,  and  calling  Tcl_RegisterObjType.   The
         Tcl_ObjType structure is defined as follows:
              typedef struct Tcl_ObjType {
                char *name;
                Tcl_FreeInternalRepProc *freeIntRepProc;
                Tcl_DupInternalRepProc *dupIntRepProc;
                Tcl_UpdateStringProc *updateStringProc;
                Tcl_SetFromAnyProc *setFromAnyProc;
              } Tcl_ObjType;
    
         The name member describes the name of the  type,  e.g.  int.
         Extension  writers can look up an object type using its name
         with  the  Tcl_GetObjType  procedure.   The  remaining  four
         members are pointers to procedures called by the generic Tcl
         object code:
    
         The setFromAnyProc member contains the address of a function
         called  to  create  a  valid internal representation from an
         object's string representation.
              typedef int (Tcl_SetFromAnyProc) (Tcl_Interp *interp, Tcl_Obj *objPtr);
         If an internal representation  can't  be  created  from  the
         string,  it  returns TCL_ERROR and puts a message describing
         the error in the result object for interp unless  interp  is
         NULL.   If  setFromAnyProc  is successful, it stores the new
         internal representation, sets  objPtr's  typePtr  member  to
         point  to  setFromAnyProc's Tcl_ObjType, and returns TCL_OK.
         Before setting the new  internal  representation,  the  set-
         FromAnyProc   must   free  any  internal  representation  of
         objPtr's old type; it does this by calling  the  old  type's
         freeIntRepProc  if  it is not NULL.  As an example, the set-
         FromAnyProc for the builtin Tcl integer type gets an  up-to-
         date   string   representation   for   objPtr   by   calling
         Tcl_GetStringFromObj.  It parses the  string  to  obtain  an
         integer  and,  if  this  succeeds,  stores  the  integer  in
         objPtr's internal representation and sets  objPtr's  typePtr
         member to point to the integer type's Tcl_ObjType structure.
    
         The updateStringProc member contains the address of a  func-
         tion  called to create a valid string representation from an
         object's internal representation.
              typedef void (Tcl_UpdateStringProc) (Tcl_Obj *objPtr);
         objPtr's bytes member is always NULL when it is called.   It
         must always set bytes non-NULL before returning.  We require
         the string representation's byte array to have a null  after
         the   last  byte,  at  offset  length;  this  allows  string
         representations that do not contain null bytes to be treated
         as   conventional   null   character-terminated  C  strings.
         Storage for the byte array must be allocated in the heap  by
         Tcl_Alloc.  Note that updateStringProcs must allocate enough
         storage for the string's  bytes  and  the  terminating  null
         byte.  The updateStringProc for Tcl's builtin list type, for
         example, builds an array of strings for each element  object
         and  then  calls Tcl_Merge to construct a string with proper
         Tcl list structure.  It  stores  this  string  as  the  list
         object's string representation.
    
         The dupIntRepProc member contains the address of a  function
         called to copy an internal representation from one object to
         another.
              typedef void (Tcl_DupInternalRepProc) (Tcl_Obj *srcPtr, Tcl_Obj *dupPtr);
         dupPtr's internal representation is made a copy of  srcPtr's
         internal representation.  Before the call, srcPtr's internal
         representation is  valid  and  dupPtr's  is  not.   srcPtr's
         object type determines what copying its internal representa-
         tion means.  For example,  the  dupIntRepProc  for  the  Tcl
         integer  type  simply  copies  an integer.  The builtin list
         type's dupIntRepProc allocates a new array  that  points  at
         the  original  element  objects;  the  elements  are  shared
         between the two lists (and their reference counts are incre-
         mented to reflect the new references).
    
         The freeIntRepProc member contains the address of a function
         that is called when an object is freed.
              typedef void (Tcl_FreeInternalRepProc) (Tcl_Obj *objPtr);
         The freeIntRepProc function can deallocate the  storage  for
         the  object's  internal  representation  and  do other type-
         specific processing necessary when an object is freed.   For
         example,  Tcl list objects have an internalRep.otherValuePtr
         that points to an array of pointers to each element  in  the
         list.   The list type's freeIntRepProc decrements the refer-
         ence count for each element object (since the list  will  no
         longer refer to those objects), then deallocates the storage
         for the array of pointers.  The freeIntRepProc member can be
         set  to  NULL  to  indicate that the internal representation
         does not require freeing.
    
    
    SEE ALSO
         Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount
    
    
    KEYWORDS
         internal  representation,  object,   object   type,   string
         representation, type conversion
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру