1 /* ------------------------------------------------------------
3 * ------------------------------------------------------------ */
7 %fragment(SWIG_From_frag(bool),"header") {
8 %define_as(SWIG_From_dec(bool), Tcl_NewBooleanObj)
11 %fragment(SWIG_AsVal_frag(bool),"header") {
13 SWIG_AsVal_dec(bool)(Tcl_Obj *obj, bool *val)
16 if (Tcl_GetBooleanFromObj(0, obj, &v) == TCL_OK) {
17 if (val) *val = v ? true : false;
20 return SWIG_TypeError;
26 %fragment(SWIG_From_frag(long),"header",
27 fragment="<limits.h>") {
28 SWIGINTERNINLINE Tcl_Obj*
29 SWIG_From_dec(long)(long value)
31 if (((long) INT_MIN <= value) && (value <= (long) INT_MAX)) {
32 return Tcl_NewIntObj(%numeric_cast(value,int));
34 return Tcl_NewLongObj(value);
39 %fragment(SWIG_AsVal_frag(long),"header") {
41 SWIG_AsVal_dec(long)(Tcl_Obj *obj, long* val)
44 if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) {
45 if (val) *val = (long) v;
48 return SWIG_TypeError;
54 %fragment(SWIG_From_frag(unsigned long),"header",
55 fragment=SWIG_From_frag(long),
56 fragment="<stdio.h>") {
57 SWIGINTERNINLINE Tcl_Obj*
58 SWIG_From_dec(unsigned long)(unsigned long value)
60 if (value < (unsigned long) LONG_MAX) {
61 return SWIG_From(long)(%numeric_cast(value, long));
64 sprintf(temp, "%lu", value);
65 return Tcl_NewStringObj(temp,-1);
70 %fragment(SWIG_AsVal_frag(unsigned long),"header",
71 fragment="<limits.h>") {
73 SWIG_AsVal_dec(unsigned long)(Tcl_Obj *obj, unsigned long *val) {
75 if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) {
77 if (val) *val = (unsigned long) v;
80 /* If v is negative, then this could be a negative number, or an
81 unsigned value which doesn't fit in a signed long, so try to
82 get it as a string so we can distinguish these cases. */
86 const char *nptr = Tcl_GetStringFromObj(obj, &len);
87 if (nptr && len > 0) {
90 if (*nptr == '-') return SWIG_OverflowError;
92 v = strtoul(nptr, &endptr,0);
93 if (nptr[0] == '\0' || *endptr != '\0')
94 return SWIG_TypeError;
95 if (v == ULONG_MAX && errno == ERANGE) {
97 return SWIG_OverflowError;
99 if (*endptr == '\0') {
107 return SWIG_TypeError;
113 %fragment(SWIG_From_frag(long long),"header",
114 fragment=SWIG_From_frag(long),
115 fragment="<limits.h>",
116 fragment="<stdio.h>") {
117 SWIGINTERNINLINE Tcl_Obj*
118 SWIG_From_dec(long long)(long long value)
120 if (((long long) LONG_MIN <= value) && (value <= (long long) LONG_MAX)) {
121 return SWIG_From(long)(%numeric_cast(value,long));
124 sprintf(temp, "%lld", value);
125 return Tcl_NewStringObj(temp,-1);
130 %fragment(SWIG_AsVal_frag(long long),"header",
131 fragment="<limits.h>",
132 fragment="<stdlib.h>") {
134 SWIG_AsVal_dec(long long)(Tcl_Obj *obj, long long *val)
137 if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) {
142 const char *nptr = Tcl_GetStringFromObj(obj, &len);
143 if (nptr && len > 0) {
147 v = strtoll(nptr, &endptr,0);
148 if (nptr[0] == '\0' || *endptr != '\0')
149 return SWIG_TypeError;
150 if ((v == LLONG_MAX || v == LLONG_MIN) && errno == ERANGE) {
152 return SWIG_OverflowError;
154 if (*endptr == '\0') {
161 return SWIG_TypeError;
165 /* unsigned long long */
167 %fragment(SWIG_From_frag(unsigned long long),"header",
168 fragment=SWIG_From_frag(long long),
169 fragment="<limits.h>",
170 fragment="<stdio.h>") {
171 SWIGINTERNINLINE Tcl_Obj*
172 SWIG_From_dec(unsigned long long)(unsigned long long value)
174 if (value < (unsigned long long) LONG_MAX) {
175 return SWIG_From(long long)(%numeric_cast(value, long long));
178 sprintf(temp, "%llu", value);
179 return Tcl_NewStringObj(temp,-1);
184 %fragment(SWIG_AsVal_frag(unsigned long long),"header",
185 fragment=SWIG_AsVal_frag(unsigned long),
186 fragment="<limits.h>",
187 fragment="<stdlib.h>") {
189 SWIG_AsVal_dec(unsigned long long)(Tcl_Obj *obj, unsigned long long *val)
192 if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) {
193 if (val) *val = (unsigned long) v;
197 const char *nptr = Tcl_GetStringFromObj(obj, &len);
198 if (nptr && len > 0) {
200 unsigned long long v;
201 if (*nptr == '-') return SWIG_OverflowError;
203 v = strtoull(nptr, &endptr,0);
204 if (nptr[0] == '\0' || *endptr != '\0')
205 return SWIG_TypeError;
206 if (v == ULLONG_MAX && errno == ERANGE) {
208 return SWIG_OverflowError;
210 if (*endptr == '\0') {
217 return SWIG_TypeError;
223 %fragment(SWIG_From_frag(double),"header") {
224 %define_as(SWIG_From(double), Tcl_NewDoubleObj)
227 %fragment(SWIG_AsVal_frag(double),"header") {
229 SWIG_AsVal_dec(double)(Tcl_Obj *obj, double *val)
232 if (Tcl_GetDoubleFromObj(0, obj, &v) == TCL_OK) {
236 return SWIG_TypeError;