⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tossim_wrap.cxx

📁 tinyos2.0版本驱动
💻 CXX
📖 第 1 页 / 共 5 页
字号:
  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 + -