File: FunctionBody.mustache

package info (click to toggle)
orthanc-python 3.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,160 kB
  • sloc: cpp: 13,623; python: 419; sh: 40; makefile: 28
file content (110 lines) | stat: -rw-r--r-- 3,509 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{{#args}}
  {{python_type}} {{name}}{{initialization}};
{{/args}}

{{#has_args}}
  if (!PyArg_ParseTuple(args, {{tuple_format}}))
  {
    // TODO => RAISE : https://stackoverflow.com/questions/60832317
    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments ({{count_args}} arguments expected)");
    return NULL;
  }
{{/has_args}}
{{#return_long}}
  long value = {{c_function}}(OrthancPlugins::GetGlobalContext(){{self}}{{call_args}});
  {{#args}}{{release}}{{/args}}
  return PyLong_FromLong(value);
{{/return_long}}
{{#return_static_string}}
  const char* s = {{c_function}}(OrthancPlugins::GetGlobalContext(){{self}}{{call_args}});
  {{#args}}{{release}}{{/args}}
  if (s == NULL)
  {
    Py_INCREF(Py_None);
    return Py_None;
  }
  else
  {
    return PyUnicode_FromString(s);
  }
{{/return_static_string}}
{{#return_dynamic_string}}
  OrthancPlugins::OrthancString s;
  s.Assign({{c_function}}(OrthancPlugins::GetGlobalContext(){{self}}{{call_args}}));
  {{#args}}{{release}}{{/args}}
  if (s.GetContent() == NULL)
  {
    // TODO => RAISE : https://stackoverflow.com/questions/60832317
    //PythonLock::RaiseException(module, OrthancPluginErrorCode_InternalError);
    PyErr_SetString(PyExc_ValueError, "Internal error");
    return NULL;
  }
  else
  {
    return PyUnicode_FromString(s.GetContent());
  }
{{/return_dynamic_string}}
{{#return_void}}
  {{c_function}}(OrthancPlugins::GetGlobalContext(){{self}}{{call_args}});
  {{#args}}{{release}}{{/args}}

  Py_INCREF(Py_None);
  return Py_None;
{{/return_void}}
{{#return_error}}
  OrthancPluginErrorCode code = {{c_function}}(OrthancPlugins::GetGlobalContext(){{self}}{{call_args}});
  {{#args}}{{release}}{{/args}}

  if (code == OrthancPluginErrorCode_Success)
  {
    Py_INCREF(Py_None);
    return Py_None;
  }
  else
  {
    // TODO => RAISE : https://stackoverflow.com/questions/60832317
    //PythonLock::RaiseException(module, code);
    PyErr_SetString(PyExc_ValueError, "Internal error");
    return NULL;
  }
{{/return_error}}
{{#return_object}}
  // This is the case of a constructor
  {{return_object}}* obj = {{c_function}}(OrthancPlugins::GetGlobalContext(){{self}}{{call_args}});
  {{#args}}{{release}}{{/args}}
  if (obj == NULL)
  {
    // TODO => RAISE : https://stackoverflow.com/questions/60832317
    //PythonLock::RaiseException(module, OrthancPluginErrorCode_InternalError);
    PyErr_SetString(PyExc_ValueError, "Internal error");
    return NULL;  
  }
  else
  {
    PyObject *argList = Py_BuildValue("Lb", obj, false /* not borrowed */);
    PyObject *python = PyObject_CallObject((PyObject *) &sdk_{{return_object}}_Type, argList);
    Py_DECREF(argList);
    return python;
  }
{{/return_object}}
{{#return_bytes}}
  OrthancPlugins::MemoryBuffer buffer;
  OrthancPluginErrorCode code = {{c_function}}(OrthancPlugins::GetGlobalContext(), *buffer{{self}}{{call_args}});
  {{#args}}{{release}}{{/args}}
  if (code == OrthancPluginErrorCode_Success)
  {
    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
  }
  else
  {
    // TODO => RAISE : https://stackoverflow.com/questions/60832317
    //PythonLock::RaiseException(module, OrthancPluginErrorCode_InternalError);
    PyErr_SetString(PyExc_ValueError, "Internal error");
    return NULL;  
  }
{{/return_bytes}}
{{#return_enumeration}}
  {{return_enumeration}} value = {{c_function}}(OrthancPlugins::GetGlobalContext(){{self}}{{call_args}});
  {{#args}}{{release}}{{/args}}
  return PyLong_FromLong(value);
{{/return_enumeration}}