Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / share / swig / 1.3.26 / cdata.i
CommitLineData
920dae64
AT
1/* -----------------------------------------------------------------------------
2 * cdata.i
3 *
4 * Author(s): David Beazley (beazley@cs.uchicago.edu)
5 *
6 * This library file contains macros for manipulating raw C data as strings.
7 *
8 * $Header: /cvsroot/swig/SWIG/Lib/cdata.i,v 1.6 2005/04/05 17:48:30 wuzzeb Exp $
9 * ----------------------------------------------------------------------------- */
10
11%{
12typedef struct SWIGCDATA {
13 char *data;
14 int len;
15} SWIGCDATA;
16%}
17
18/* -----------------------------------------------------------------------------
19 * Typemaps for returning binary data
20 * ----------------------------------------------------------------------------- */
21
22#if SWIGPYTHON
23%typemap(out) SWIGCDATA {
24 $result = PyString_FromStringAndSize($1.data,$1.len);
25}
26%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH);
27#elif SWIGPERL
28%typemap(out) SWIGCDATA {
29 ST(argvi) = sv_newmortal();
30 sv_setpvn((SV*)ST(argvi++),$1.data,$1.len);
31}
32%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH);
33#elif SWIGTCL
34%typemap(out) SWIGCDATA {
35 Tcl_SetObjResult(interp,Tcl_NewStringObj($1.data,$1.len));
36}
37%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH);
38#elif SWIGRUBY
39%typemap(out) SWIGCDATA {
40 $result = rb_str_new($1.data,$1.len);
41}
42%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH);
43#elif SWIGGUILE
44%typemap(out) SWIGCDATA {
45 $result = gh_str2scm($1.data,$1.len);
46}
47%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH);
48#elif SWIGCHICKEN
49%typemap(out) SWIGCDATA {
50 C_word *string_space = C_alloc(C_SIZEOF_STRING($1.len));
51 $result = C_string(&string_space, $1.len, $1.data);
52}
53%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH);
54#else
55%echo "cdata.i module not supported."
56#endif
57
58
59/* -----------------------------------------------------------------------------
60 * %cdata(TYPE [, NAME])
61 *
62 * Convert raw C data to a binary string.
63 * ----------------------------------------------------------------------------- */
64
65%define %cdata(TYPE,NAME...)
66
67%insert("header") {
68#if #NAME == ""
69static SWIGCDATA cdata_##TYPE(TYPE *ptr, int nelements) {
70#else
71static SWIGCDATA cdata_##NAME(TYPE *ptr, int nelements) {
72#endif
73 SWIGCDATA d;
74 d.data = (char *) ptr;
75#if #TYPE != "void"
76 d.len = nelements*sizeof(TYPE);
77#else
78 d.len = nelements;
79#endif
80 return d;
81}
82}
83
84%typemap(default) int nelements "$1 = 1;"
85
86#if #NAME == ""
87SWIGCDATA cdata_##TYPE(TYPE *ptr, int nelements);
88#else
89SWIGCDATA cdata_##NAME(TYPE *ptr, int nelements);
90#endif
91%enddef
92
93%typemap(default) int nelements;
94
95%rename(cdata) ::cdata_void(void *ptr, int nelements);
96
97%cdata(void);
98
99/* Memory move function */
100void memmove(void *data, const void *indata, int inlen);
101
102
103
104