📄 tossim_wrap.cxx
字号:
int newref = 0; PyObject *pyobj = 0; if (!obj) return 0; if (obj == Py_None) { *ptr = 0; return 0; }#ifdef SWIG_COBJECT_TYPES if (!(PyCObject_Check(obj))) { if (!SWIG_this) SWIG_this = PyString_FromString("this"); pyobj = obj; obj = PyObject_GetAttr(obj,SWIG_this); newref = 1; if (!obj) goto type_error; if (!PyCObject_Check(obj)) { Py_DECREF(obj); goto type_error; } } *ptr = PyCObject_AsVoidPtr(obj); c = (char *) PyCObject_GetDesc(obj); if (newref) Py_DECREF(obj); goto cobject;#else if (!(PyString_Check(obj))) { if (!SWIG_this) SWIG_this = PyString_FromString("this"); pyobj = obj; obj = PyObject_GetAttr(obj,SWIG_this); newref = 1; if (!obj) goto type_error; if (!PyString_Check(obj)) { Py_DECREF(obj); goto type_error; } } c = PyString_AsString(obj); /* Pointer values must start with leading underscore */ if (*c != '_') { *ptr = (void *) 0; if (strcmp(c,"NULL") == 0) { if (newref) { Py_DECREF(obj); } return 0; } else { if (newref) { Py_DECREF(obj); } goto type_error; } } c++; c = SWIG_UnpackData(c,ptr,sizeof(void *)); if (newref) { Py_DECREF(obj); }#endif#ifdef SWIG_COBJECT_TYPEScobject:#endif if (ty) { tc = SWIG_TypeCheck(c,ty); if (!tc) goto type_error; *ptr = SWIG_TypeCast(tc,(void*) *ptr); } if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) { PyObject *zero = PyInt_FromLong(0); PyObject_SetAttrString(pyobj,(char*)"thisown",zero); Py_DECREF(zero); } return 0;type_error: if (flags & SWIG_POINTER_EXCEPTION) { if (ty) { char *temp = (char *) malloc(64+strlen(ty->name)); sprintf(temp,"Type error. Expected %s", ty->name); PyErr_SetString(PyExc_TypeError, temp); free((char *) temp); } else { PyErr_SetString(PyExc_TypeError,"Expected a pointer"); } } return -1;}/* Convert a packed value value */SWIGRUNTIME(int)SWIG_ConvertPacked(PyObject *obj, void *ptr, int sz, swig_type_info *ty, int flags) { swig_type_info *tc; char *c; if ((!obj) || (!PyString_Check(obj))) goto type_error; c = PyString_AsString(obj); /* Pointer values must start with leading underscore */ if (*c != '_') goto type_error; c++; c = SWIG_UnpackData(c,ptr,sz); if (ty) { tc = SWIG_TypeCheck(c,ty); if (!tc) goto type_error; } return 0;type_error: if (flags) { if (ty) { char *temp = (char *) malloc(64+strlen(ty->name)); sprintf(temp,"Type error. Expected %s", ty->name); PyErr_SetString(PyExc_TypeError, temp); free((char *) temp); } else { PyErr_SetString(PyExc_TypeError,"Expected a pointer"); } } return -1;}/* Create a new pointer object */SWIGRUNTIME(PyObject *)SWIG_NewPointerObj(void *ptr, swig_type_info *type, int own) { PyObject *robj; if (!ptr) { Py_INCREF(Py_None); return Py_None; }#ifdef SWIG_COBJECT_TYPES robj = PyCObject_FromVoidPtrAndDesc((void *) ptr, (char *) type->name, NULL);#else { char result[1024]; char *r = result; *(r++) = '_'; r = SWIG_PackData(r,&ptr,sizeof(void *)); strcpy(r,type->name); robj = PyString_FromString(result); }#endif if (!robj || (robj == Py_None)) return robj; if (type->clientdata) { PyObject *inst; PyObject *args = Py_BuildValue((char*)"(O)", robj); Py_DECREF(robj); inst = PyObject_CallObject((PyObject *) type->clientdata, args); Py_DECREF(args); if (inst) { if (own) { PyObject *n = PyInt_FromLong(1); PyObject_SetAttrString(inst,(char*)"thisown",n); Py_DECREF(n); } robj = inst; } } return robj;}SWIGRUNTIME(PyObject *)SWIG_NewPackedObj(void *ptr, int sz, swig_type_info *type) { char result[1024]; char *r = result; if ((2*sz + 1 + strlen(type->name)) > 1000) return 0; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); strcpy(r,type->name); return PyString_FromString(result);}/* Install Constants */SWIGRUNTIME(void)SWIG_InstallConstants(PyObject *d, swig_const_info constants[]) { int i; PyObject *obj; for (i = 0; constants[i].type; i++) { switch(constants[i].type) { case SWIG_PY_INT: obj = PyInt_FromLong(constants[i].lvalue); break; case SWIG_PY_FLOAT: obj = PyFloat_FromDouble(constants[i].dvalue); break; case SWIG_PY_STRING: obj = PyString_FromString((char *) constants[i].pvalue); break; case SWIG_PY_POINTER: obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); break; case SWIG_PY_BINARY: obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); break; default: obj = 0; break; } if (obj) { PyDict_SetItemString(d,constants[i].name,obj); Py_DECREF(obj); } }}#endif#ifdef __cplusplus}#endif/* -------- TYPES TABLE (BEGIN) -------- */#define SWIGTYPE_p_Radio swig_types[0] #define SWIGTYPE_p_nesc_app_t swig_types[1] #define SWIGTYPE_p_FILE swig_types[2] #define SWIGTYPE_p_MAC swig_types[3] #define SWIGTYPE_p_Packet swig_types[4] #define SWIGTYPE_p_Variable swig_types[5] #define SWIGTYPE_p_Tossim swig_types[6] #define SWIGTYPE_p_variable_string_t swig_types[7] #define SWIGTYPE_p_Mote swig_types[8] #define SWIGTYPE_p_p_char swig_types[9] #define SWIGTYPE_p_int swig_types[10] static swig_type_info *swig_types[12];/* -------- TYPES TABLE (END) -------- *//*----------------------------------------------- @(target):= _TOSSIM.so ------------------------------------------------*/#define SWIG_init init_TOSSIM#define SWIG_name "_TOSSIM"#include <memory.h>#include <tossim.h>enum { PRIMITIVE_INTEGER = 0, PRIMITIVE_FLOAT = 1, PRIMITIVE_UNKNOWN = 2};int lengthOfType(char* type) { if (strcmp(type, "uint8_t") == 0) { return sizeof(uint8_t); } else if (strcmp(type, "uint16_t") == 0) { return sizeof(uint16_t); } else if (strcmp(type, "uint32_t") == 0) { return sizeof(uint32_t); } else if (strcmp(type, "int8_t") == 0) { return sizeof(int8_t); } else if (strcmp(type, "int16_t") == 0) { return sizeof(int16_t); } else if (strcmp(type, "int32_t") == 0) { return sizeof(int32_t); } else if (strcmp(type, "char") == 0) { return sizeof(char); } else if (strcmp(type, "short") == 0) { return sizeof(short); } else if (strcmp(type, "int") == 0) { return sizeof(int); } else if (strcmp(type, "long") == 0) { return sizeof(long); } else if (strcmp(type, "unsigned char") == 0) { return sizeof(unsigned char); } else if (strcmp(type, "unsigned short") == 0) { return sizeof(unsigned short); } else if (strcmp(type, "unsigned int") == 0) { return sizeof(unsigned int); } else if (strcmp(type, "unsigned long") == 0) { return sizeof(unsigned long); } else if (strcmp(type, "float") == 0) { return sizeof(float); } else if (strcmp(type, "double") == 0) { return sizeof(double); } else { return 1; }}int memoryToPrimitive(char* type, char* ptr, long* lval, double* dval) { if (strcmp(type, "uint8_t") == 0) { uint8_t val; memcpy(&val, ptr, sizeof(uint8_t)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "uint16_t") == 0) { uint16_t val; memcpy(&val, ptr, sizeof(uint16_t)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "uint32_t") == 0) { uint32_t val; memcpy(&val, ptr, sizeof(uint32_t)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "int8_t") == 0) { int8_t val; memcpy(&val, ptr, sizeof(int8_t)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "int16_t") == 0) { int16_t val; memcpy(&val, ptr, sizeof(int16_t)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "int32_t") == 0) { int32_t val; memcpy(&val, ptr, sizeof(int32_t)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "char") == 0) { long val; memcpy(&val, ptr, sizeof(char)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "short") == 0) { short val; memcpy(&val, ptr, sizeof(short)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "int") == 0) { int val; memcpy(&val, ptr, sizeof(int)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "long") == 0) { long val; memcpy(&val, ptr, sizeof(long)); *lval = val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "unsigned char") == 0) { unsigned char val; memcpy(&val, ptr, sizeof(unsigned char)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "unsigned short") == 0) { unsigned short val; memcpy(&val, ptr, sizeof(unsigned short)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "unsigned int") == 0) { unsigned int val; memcpy(&val, ptr, sizeof(unsigned int)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "unsigned long") == 0) { unsigned long val; memcpy(&val, ptr, sizeof(unsigned long)); *lval = (long)val; return PRIMITIVE_INTEGER; } else if (strcmp(type, "float") == 0) { float val; memcpy(&val, ptr, sizeof(float)); *dval = (double)val; return PRIMITIVE_FLOAT; } else if (strcmp(type, "double") == 0) { double val; memcpy(&val, ptr, sizeof(double)); *dval = val; return PRIMITIVE_FLOAT; } else { return PRIMITIVE_UNKNOWN; }}PyObject* valueFromScalar(char* type, char* ptr, int len) { long lval; double dval; int rval = memoryToPrimitive(type, ptr, &lval, &dval); switch(rval) { case PRIMITIVE_INTEGER: return PyInt_FromLong(lval); case PRIMITIVE_FLOAT: return PyFloat_FromDouble(dval); case PRIMITIVE_UNKNOWN: default: return PyString_FromStringAndSize(ptr, len); }}PyObject* listFromArray(char* type, char* ptr, int len) { long lval; double dval; int elementLen = lengthOfType(type); PyObject* list = PyList_New(0); //printf("Generating list of %s\n", type); for (char* tmpPtr = ptr; tmpPtr < ptr + len; tmpPtr += elementLen) { PyList_Append(list, valueFromScalar(type, tmpPtr, elementLen)); } return list;}#include <mac.h>#include <radio.h>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -