ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

This manual page is associated with the Mac OS X developer tools. The software or headers described may not be present on your Mac OS X installation until you install the developer tools package. This package is available on your Mac OS X installation DVD, and the latest versions can be downloaded from developer.apple.com.

For more information about the manual page format, see the manual page for manpages(5).



Tcl_ByteArrayObj(3)                        Tcl Library Procedures                        Tcl_ByteArrayObj(3)



____________________________________________________________________________________________________________

NAME
       Tcl_NewByteArrayObj,  Tcl_SetByteArrayObj,  Tcl_GetByteArrayFromObj, Tcl_SetByteArrayLength - manipu-late manipulate
       late Tcl objects as a arrays of bytes

SYNOPSIS
       #include <tcl.h>

       Tcl_Obj *
       Tcl_NewByteArrayObj(bytes, length)

       void
       Tcl_SetByteArrayObj(objPtr, bytes, length)

       unsigned char *
       Tcl_GetByteArrayFromObj(objPtr, lengthPtr)

       unsigned char *
       Tcl_SetByteArrayLength(objPtr, length)

ARGUMENTS
       CONST unsigned char          *bytes(in)
                                              The array of bytes used to  initialize  or  set  a  byte-array
                                              object.

       int             length       (in)      The length of the array of bytes.  It must be >= 0.

       Tcl_Obj         *objPtr      (in/out)  For  Tcl_SetByteArrayObj, this points to the object to be con-verted converted
                                              verted to byte-array type.   For  Tcl_GetByteArrayFromObj  and
                                              Tcl_SetByteArrayLength,  this  points to the object from which
                                              to get the byte-array value; if objPtr does not already  point
                                              to a byte-array object, it will be converted to one.

       int             *lengthPtr   (out)     If  non-NULL,  filled with the length of the array of bytes in
                                              the object.
____________________________________________________________________________________________________________


DESCRIPTION
       These procedures are used to create, modify, and read Tcl byte-array objects from C code.  Byte-array
       objects  are  typically  used  to hold the results of binary IO operations or data structures created
       with the binary command.  In Tcl, an array of bytes is not equivalent to a string.   Conceptually,  a
       string  is an array of Unicode characters, while a byte-array is an array of 8-bit quantities with no
       implicit meaning.  Accesser functions are provided to get the string representation of  a  byte-array
       or  to  convert  an arbitrary object to a byte-array.  Obtaining the string representation of a byte-array bytearray
       array object (by calling Tcl_GetStringFromObj) produces a properly formed UTF-8 sequence with a  one-to-one oneto-one
       to-one  mapping  between  the  bytes  in  the internal representation and the UTF-8 characters in the
       string representation.

       Tcl_NewByteArrayObj and Tcl_SetByteArrayObj will create a new object of byte-array type or modify  an
       existing  object  to  have  a  byte-array type.  Both of these procedures set the object's type to be
       byte-array and set the object's internal representation to a copy of the  array  of  bytes  given  by
       bytes.  Tcl_NewByteArrayObj  returns  a pointer to a newly allocated object with a reference count of
       zero.  Tcl_SetByteArrayObj invalidates any old string  representation  and,  if  the  object  is  not
       already a byte-array object, frees any old internal representation.

       Tcl_GetByteArrayFromObj  converts  a  Tcl  object  to  byte-array  type  and returns a pointer to the
       object's new internal representation as an array of bytes.  The length of this  array  is  stored  in
       lengthPtr  if  lengthPtr  is non-NULL.  The storage for the array of bytes is owned by the object and
       should not be freed.  The contents of the array may be modified by the caller only if the  object  is
       not shared and the caller invalidates the string representation.

       Tcl_SetByteArrayLength  converts  the  Tcl  object  to  byte-array type and changes the length of the
       object's internal representation as an array of bytes.  If length is greater than the space currently
       allocated for the array, the array is reallocated to the new length; the newly allocated bytes at the
       end of the array have arbitrary values.  If length is less than the space currently allocated for the
       array,  the  length  of  array  is  reduced  to the new length.  The return value is a pointer to the
       object's new array of bytes.


SEE ALSO
       Tcl_GetStringFromObj, Tcl_NewObj, Tcl_IncrRefCount, Tcl_DecrRefCount


KEYWORDS
       object, byte array, utf, unicode, internationalization



Tcl                                                  8.1                                 Tcl_ByteArrayObj(3)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.