py_lsup_rdf.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /** @file lsup_rdf_mod.c
  2. *
  3. * @brief LSUP_RDF package.
  4. *
  5. * This "package" module includes all RDF modules in a monolithic compiled
  6. * object, in order to resolve internal symbol dependencies. Individual modules
  7. * are extracted and exposed by the package __init__.py .
  8. */
  9. #define PY_SSIZE_T_CLEAN
  10. #include <Python.h>
  11. #include "py_graph.h"
  12. static PyModuleDef _lsup_rdf_pkg = {
  13. PyModuleDef_HEAD_INIT,
  14. .m_name = "_lsup_rdf",
  15. .m_doc = "Lakesuperior RDF package.",
  16. .m_size = -1,
  17. };
  18. PyMODINIT_FUNC
  19. PyInit__lsup_rdf (void)
  20. { return PyModule_Create (&_lsup_rdf_pkg); }
  21. static PyModuleDef term_mod = {
  22. PyModuleDef_HEAD_INIT,
  23. .m_name = "term",
  24. .m_doc = "RDF term module.",
  25. .m_size = -1,
  26. };
  27. PyMODINIT_FUNC
  28. PyInit_term()
  29. {
  30. if (PyType_Ready (&TermType) < 0) return NULL;
  31. PyObject *m = PyModule_Create(&term_mod);
  32. if (m == NULL) return NULL;
  33. #define ENTRY(a, b) \
  34. if (PyModule_AddIntConstant (m, "TERM_" #a, b) < 0) return NULL;
  35. TTYPE_TBL
  36. #undef ENTRY
  37. Py_INCREF(&TermType);
  38. if (PyModule_AddObject(m, "Term", (PyObject *) &TermType) < 0) {
  39. Py_DECREF(&TermType);
  40. Py_DECREF(m);
  41. return NULL;
  42. }
  43. return m;
  44. }
  45. static PyModuleDef triple_mod = {
  46. PyModuleDef_HEAD_INIT,
  47. .m_name = "triple",
  48. .m_doc = "RDF triple module.",
  49. .m_size = -1,
  50. };
  51. PyMODINIT_FUNC
  52. PyInit_triple()
  53. {
  54. if (PyType_Ready (&TripleType) < 0) return NULL;
  55. PyObject *m = PyModule_Create(&triple_mod);
  56. if (m == NULL) return NULL;
  57. Py_INCREF(&TripleType);
  58. if (PyModule_AddObject(m, "Triple", (PyObject *) &TripleType) < 0) {
  59. Py_DECREF(&TripleType);
  60. Py_DECREF(m);
  61. return NULL;
  62. }
  63. return m;
  64. }
  65. static PyModuleDef graph_mod = {
  66. PyModuleDef_HEAD_INIT,
  67. .m_name = "graph",
  68. .m_doc = "RDF graph module.",
  69. .m_size = -1,
  70. };
  71. PyMODINIT_FUNC
  72. PyInit_graph()
  73. {
  74. if (PyType_Ready (&GraphType) < 0) return NULL;
  75. PyObject *m = PyModule_Create(&graph_mod);
  76. if (!m) return NULL;
  77. #define ENTRY(a, b) \
  78. if (PyModule_AddIntConstant (m, "STORE_" #a, b) < 0) return NULL;
  79. BACKEND_TBL
  80. #undef ENTRY
  81. Py_INCREF(&GraphType);
  82. if (PyModule_AddObject(m, "Graph", (PyObject *) &GraphType) < 0) {
  83. Py_DECREF(&GraphType);
  84. Py_DECREF(m);
  85. return NULL;
  86. }
  87. return m;
  88. }