Fast IFS using RPN notation
python
c
x86-64
nasm
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

python_const.c 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "python_const.h"
  2. PyModuleDef rpnconstmodule = {
  3. PyModuleDef_HEAD_INIT,
  4. "pyrpn.const",
  5. "librarie's constants",
  6. -1, // module size
  7. NULL, // methods
  8. NULL,
  9. NULL,
  10. NULL
  11. };
  12. int Py_rpnconst_add(PyObject* mod, const char* name, int value)
  13. {
  14. PyObject *val;
  15. val = Py_BuildValue("i", value);
  16. Py_INCREF(val);
  17. if(PyModule_AddObject(mod, name, val) < 0)
  18. {
  19. Py_DECREF(val);
  20. return -1;
  21. }
  22. return 0;
  23. }
  24. PyObject *Py_rpnconst_init(void)
  25. {
  26. PyObject *mod;
  27. mod = PyModule_Create(&rpnconstmodule);
  28. if(mod == NULL) { return NULL; }
  29. if(Py_rpnconst_add(mod, "POS_LINEAR", RPN_IF_POSITION_LINEAR) ||
  30. Py_rpnconst_add(mod, "POS_XY", RPN_IF_POSITION_XY) ||
  31. Py_rpnconst_add(mod, "POS_XDIM", RPN_IF_POSITION_XDIM) ||
  32. Py_rpnconst_add(mod, "RESULT_BOOL", RPN_IF_RES_BOOL) ||
  33. Py_rpnconst_add(mod, "RESULT_CONST", RPN_IF_RES_CONST) ||
  34. Py_rpnconst_add(mod, "RESULT_CONST_RGBA", RPN_IF_RES_CONST_RGBA) ||
  35. Py_rpnconst_add(mod, "RESULT_COUNT", RPN_IF_RES_COUNT) ||
  36. Py_rpnconst_add(mod, "RESULT_XFUN", RPN_IF_RES_XFUN) ||
  37. Py_rpnconst_add(mod, "RESULT_RGB", RPN_IF_RES_RGB) ||
  38. Py_rpnconst_add(mod, "RESULT_RGBA", RPN_IF_RES_RGBA))
  39. {
  40. Py_DECREF(mod);
  41. return NULL;
  42. }
  43. return mod;
  44. }