2 // SWIG Pointer manipulation library
4 // This library can be used to manipulate C pointers.
5 %title "SWIG Pointer Library"
10 %section "Pointer Handling Library",noinfo,after,pre,nosort,skip=1,chop_left=3,chop_right=0,chop_top=0,chop_bottom=0
15 The pointer.i library provides run-time support for managing and
16 manipulating a variety of C/C++ pointer values. In particular,
17 you can create various kinds of objects and dereference common
18 pointer types. This is done through a common set of functions:
20 ptrcast - Casts a pointer to a new type
21 ptrvalue - Dereferences a pointer
22 ptrset - Set the value of an object referenced by
24 ptrcreate - Create a new object and return a pointer.
25 ptrfree - Free the memory allocated by ptrcreate.
26 ptradd - Increment/decrement a pointer value.
27 ptrmap - Make two datatypes equivalent to each other.
28 (Is a runtime equivalent of typedef).
30 When creating, dereferencing, or setting the value of pointer
31 variable, only the common C datatypes of int, short, long, float,
32 double, char, and char * are currently supported. Other
33 datatypes may generate an error.
35 One of the more interesting aspects of this library is that
36 it operates with a wide range of datatypes. For example,
37 the "ptrvalue" function can dereference "double *", "int *",
38 "long *", "char *", and other datatypes. Since SWIG encodes
39 pointers with type information, this can be done transparently
40 and in most cases, you can dereference a pointer without
41 ever knowing what type it actually is.
43 This library is primarily designed for utility, not high
44 performance (the dynamic determination of pointer types takes
45 more work than most normal wrapper functions). As a result,
46 you may achieve better performance by writing customized
47 "helper" functions if you're making lots of calls to these
48 functions in inner loops or other intensive operations.
51 // This library is a pretty hideous mess of language dependent code.
52 // Grab the implementation from the appropriate libray