changeset 129:5643e97d9367 fix-leak

reproducible code generation
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 30 Aug 2023 11:40:22 +0200
parents 5b59ebc267e1
children c55b0583084b a26163d2ecd9
files CodeAnalysis/Class.mustache CodeAnalysis/ParseOrthancSDK.py CodeAnalysis/sdk.cpp.mustache CodeAnalysis/sdk.h.mustache Sources/Autogenerated/sdk.cpp Sources/Autogenerated/sdk.h Sources/Autogenerated/sdk_OrthancPluginDicomInstance.impl.h Sources/Autogenerated/sdk_OrthancPluginDicomInstance.methods.h Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.impl.h Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.methods.h Sources/Autogenerated/sdk_OrthancPluginFindAnswers.impl.h Sources/Autogenerated/sdk_OrthancPluginFindAnswers.methods.h Sources/Autogenerated/sdk_OrthancPluginFindMatcher.impl.h Sources/Autogenerated/sdk_OrthancPluginFindMatcher.methods.h Sources/Autogenerated/sdk_OrthancPluginFindQuery.impl.h Sources/Autogenerated/sdk_OrthancPluginFindQuery.methods.h Sources/Autogenerated/sdk_OrthancPluginImage.impl.h Sources/Autogenerated/sdk_OrthancPluginImage.methods.h Sources/Autogenerated/sdk_OrthancPluginJob.impl.h Sources/Autogenerated/sdk_OrthancPluginJob.methods.h Sources/Autogenerated/sdk_OrthancPluginPeers.impl.h Sources/Autogenerated/sdk_OrthancPluginPeers.methods.h Sources/Autogenerated/sdk_OrthancPluginRestOutput.impl.h Sources/Autogenerated/sdk_OrthancPluginRestOutput.methods.h Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.impl.h Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.methods.h Sources/Autogenerated/sdk_OrthancPluginStorageArea.impl.h Sources/Autogenerated/sdk_OrthancPluginStorageArea.methods.h Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.impl.h Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.methods.h Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.impl.h Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.methods.h
diffstat 32 files changed, 1563 insertions(+), 1582 deletions(-) [+]
line wrap: on
line diff
--- a/CodeAnalysis/Class.mustache	Wed Aug 30 11:02:20 2023 +0200
+++ b/CodeAnalysis/Class.mustache	Wed Aug 30 11:40:22 2023 +0200
@@ -105,25 +105,6 @@
 {{/destructor}}
 
 
-// Actual implementation of the methods
-{{#methods}}
-static PyObject *sdk_{{class_name}}_{{c_function}}(
-  sdk_{{class_name}}_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method {{c_function}}() on object of class {{class_name}}");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-{{> function_body}}
-}
-
-{{/methods}}
-
-
 static void Register{{class_name}}Class(PyObject* module)
 {
   sdk_{{class_name}}_Type.tp_new = PyType_GenericNew;
--- a/CodeAnalysis/ParseOrthancSDK.py	Wed Aug 30 11:02:20 2023 +0200
+++ b/CodeAnalysis/ParseOrthancSDK.py	Wed Aug 30 11:40:22 2023 +0200
@@ -509,14 +509,18 @@
 )
 
 with open(os.path.join(ROOT, 'Class.mustache'), 'r') as f:
-    template = f.read()
+    with open(os.path.join(ROOT, 'ClassMethods.mustache'), 'r') as g:
+        classDefinition = f.read()
+        classMethods = g.read()
 
-    for method in CUSTOM_METHODS:
-        classes[method['class_name']]['custom_methods'].append(method)
-    
-    for (key, value) in classes.items():
-        with open(os.path.join(TARGET, 'sdk_%s.impl.h' % value['class_name']), 'w') as h:
-            h.write(renderer.render(template, value))
+        for method in CUSTOM_METHODS:
+            classes[method['class_name']]['custom_methods'].append(method)
+
+        for (key, value) in classes.items():
+            with open(os.path.join(TARGET, 'sdk_%s.impl.h' % value['class_name']), 'w') as h:
+                h.write(renderer.render(classDefinition, value))
+            with open(os.path.join(TARGET, 'sdk_%s.methods.h' % value['class_name']), 'w') as h:
+                h.write(renderer.render(classMethods, value))
         
 
 def FlattenDictionary(source):
@@ -525,7 +529,11 @@
         result.append(value)
     return result
 
-            
+
+sortedClasses = sorted(FlattenDictionary(classes), key = lambda x: x['class_name'])
+sortedEnumerations = sorted(FlattenDictionary(enumerations), key = lambda x: x['name'])
+sortedGlobalFunctions = sorted(globalFunctions, key = lambda x: x['c_function'])
+
 with open(os.path.join(ROOT, 'GlobalFunctions.mustache'), 'r') as f:
     with open(os.path.join(TARGET, 'sdk_GlobalFunctions.impl.h'), 'w') as h:
         h.write(renderer.render(f.read(), {
@@ -535,15 +543,15 @@
 with open(os.path.join(ROOT, 'sdk.cpp.mustache'), 'r') as f:
     with open(os.path.join(TARGET, 'sdk.cpp'), 'w') as h:
         h.write(renderer.render(f.read(), {
-            'classes' : FlattenDictionary(classes),
-            'enumerations' : FlattenDictionary(enumerations),
+            'classes' : sortedClasses,
+            'enumerations' : sortedEnumerations,
             'global_functions' : globalFunctions,
         }))
             
 with open(os.path.join(ROOT, 'sdk.h.mustache'), 'r') as f:
     with open(os.path.join(TARGET, 'sdk.h'), 'w') as h:
         h.write(renderer.render(f.read(), {
-            'classes' : FlattenDictionary(classes),
+            'classes' : sortedClasses,
         }))
 
 
--- a/CodeAnalysis/sdk.cpp.mustache	Wed Aug 30 11:02:20 2023 +0200
+++ b/CodeAnalysis/sdk.cpp.mustache	Wed Aug 30 11:40:22 2023 +0200
@@ -34,6 +34,10 @@
 
 #include "./sdk_GlobalFunctions.impl.h"
 
+{{#classes}}
+#include "./sdk_{{class_name}}.methods.h"
+{{/classes}}
+
 void RegisterOrthancSdk(PyObject* module)
 {
 {{#enumerations}}
--- a/CodeAnalysis/sdk.h.mustache	Wed Aug 30 11:02:20 2023 +0200
+++ b/CodeAnalysis/sdk.h.mustache	Wed Aug 30 11:40:22 2023 +0200
@@ -32,7 +32,7 @@
 #include <orthanc/OrthancCPlugin.h>
 
 {{#classes}}
-typedef struct 
+typedef struct
 {
   PyObject_HEAD
 
--- a/Sources/Autogenerated/sdk.cpp	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk.cpp	Wed Aug 30 11:40:22 2023 +0200
@@ -24,79 +24,93 @@
 
 #include "../../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 
+#include "./sdk_OrthancPluginChangeType.impl.h"
+#include "./sdk_OrthancPluginCompressionType.impl.h"
+#include "./sdk_OrthancPluginConstraintType.impl.h"
+#include "./sdk_OrthancPluginContentType.impl.h"
+#include "./sdk_OrthancPluginCreateDicomFlags.impl.h"
+#include "./sdk_OrthancPluginDicomToJsonFlags.impl.h"
+#include "./sdk_OrthancPluginDicomToJsonFormat.impl.h"
+#include "./sdk_OrthancPluginDicomWebBinaryMode.impl.h"
+#include "./sdk_OrthancPluginErrorCode.impl.h"
+#include "./sdk_OrthancPluginHttpMethod.impl.h"
+#include "./sdk_OrthancPluginIdentifierConstraint.impl.h"
+#include "./sdk_OrthancPluginImageFormat.impl.h"
 #include "./sdk_OrthancPluginInstanceOrigin.impl.h"
 #include "./sdk_OrthancPluginJobStepStatus.impl.h"
-#include "./sdk_OrthancPluginDicomWebBinaryMode.impl.h"
-#include "./sdk_OrthancPluginHttpMethod.impl.h"
-#include "./sdk_OrthancPluginResourceType.impl.h"
-#include "./sdk_OrthancPluginConstraintType.impl.h"
+#include "./sdk_OrthancPluginJobStopReason.impl.h"
+#include "./sdk_OrthancPluginMetricsType.impl.h"
 #include "./sdk_OrthancPluginPixelFormat.impl.h"
-#include "./sdk_OrthancPluginCompressionType.impl.h"
-#include "./sdk_OrthancPluginJobStopReason.impl.h"
-#include "./sdk_OrthancPluginIdentifierConstraint.impl.h"
-#include "./sdk_OrthancPluginContentType.impl.h"
+#include "./sdk_OrthancPluginReceivedInstanceAction.impl.h"
+#include "./sdk_OrthancPluginResourceType.impl.h"
 #include "./sdk_OrthancPluginStorageCommitmentFailureReason.impl.h"
-#include "./sdk_OrthancPluginDicomToJsonFlags.impl.h"
-#include "./sdk_OrthancPluginErrorCode.impl.h"
-#include "./sdk_OrthancPluginCreateDicomFlags.impl.h"
-#include "./sdk_OrthancPluginDicomToJsonFormat.impl.h"
-#include "./sdk_OrthancPluginMetricsType.impl.h"
 #include "./sdk_OrthancPluginValueRepresentation.impl.h"
-#include "./sdk_OrthancPluginReceivedInstanceAction.impl.h"
-#include "./sdk_OrthancPluginImageFormat.impl.h"
-#include "./sdk_OrthancPluginChangeType.impl.h"
 
+#include "./sdk_OrthancPluginDicomInstance.impl.h"
+#include "./sdk_OrthancPluginDicomWebNode.impl.h"
+#include "./sdk_OrthancPluginFindAnswers.impl.h"
+#include "./sdk_OrthancPluginFindMatcher.impl.h"
+#include "./sdk_OrthancPluginFindQuery.impl.h"
+#include "./sdk_OrthancPluginImage.impl.h"
+#include "./sdk_OrthancPluginJob.impl.h"
+#include "./sdk_OrthancPluginPeers.impl.h"
 #include "./sdk_OrthancPluginRestOutput.impl.h"
 #include "./sdk_OrthancPluginServerChunkedRequestReader.impl.h"
-#include "./sdk_OrthancPluginImage.impl.h"
-#include "./sdk_OrthancPluginJob.impl.h"
+#include "./sdk_OrthancPluginStorageArea.impl.h"
+#include "./sdk_OrthancPluginWorklistAnswers.impl.h"
 #include "./sdk_OrthancPluginWorklistQuery.impl.h"
-#include "./sdk_OrthancPluginStorageArea.impl.h"
-#include "./sdk_OrthancPluginFindMatcher.impl.h"
-#include "./sdk_OrthancPluginDicomWebNode.impl.h"
-#include "./sdk_OrthancPluginWorklistAnswers.impl.h"
-#include "./sdk_OrthancPluginFindAnswers.impl.h"
-#include "./sdk_OrthancPluginPeers.impl.h"
-#include "./sdk_OrthancPluginDicomInstance.impl.h"
-#include "./sdk_OrthancPluginFindQuery.impl.h"
 
 #include "./sdk_GlobalFunctions.impl.h"
 
+#include "./sdk_OrthancPluginDicomInstance.methods.h"
+#include "./sdk_OrthancPluginDicomWebNode.methods.h"
+#include "./sdk_OrthancPluginFindAnswers.methods.h"
+#include "./sdk_OrthancPluginFindMatcher.methods.h"
+#include "./sdk_OrthancPluginFindQuery.methods.h"
+#include "./sdk_OrthancPluginImage.methods.h"
+#include "./sdk_OrthancPluginJob.methods.h"
+#include "./sdk_OrthancPluginPeers.methods.h"
+#include "./sdk_OrthancPluginRestOutput.methods.h"
+#include "./sdk_OrthancPluginServerChunkedRequestReader.methods.h"
+#include "./sdk_OrthancPluginStorageArea.methods.h"
+#include "./sdk_OrthancPluginWorklistAnswers.methods.h"
+#include "./sdk_OrthancPluginWorklistQuery.methods.h"
+
 void RegisterOrthancSdk(PyObject* module)
 {
+  RegisterOrthancPluginChangeTypeEnumeration(module);
+  RegisterOrthancPluginCompressionTypeEnumeration(module);
+  RegisterOrthancPluginConstraintTypeEnumeration(module);
+  RegisterOrthancPluginContentTypeEnumeration(module);
+  RegisterOrthancPluginCreateDicomFlagsEnumeration(module);
+  RegisterOrthancPluginDicomToJsonFlagsEnumeration(module);
+  RegisterOrthancPluginDicomToJsonFormatEnumeration(module);
+  RegisterOrthancPluginDicomWebBinaryModeEnumeration(module);
+  RegisterOrthancPluginErrorCodeEnumeration(module);
+  RegisterOrthancPluginHttpMethodEnumeration(module);
+  RegisterOrthancPluginIdentifierConstraintEnumeration(module);
+  RegisterOrthancPluginImageFormatEnumeration(module);
   RegisterOrthancPluginInstanceOriginEnumeration(module);
   RegisterOrthancPluginJobStepStatusEnumeration(module);
-  RegisterOrthancPluginDicomWebBinaryModeEnumeration(module);
-  RegisterOrthancPluginHttpMethodEnumeration(module);
-  RegisterOrthancPluginResourceTypeEnumeration(module);
-  RegisterOrthancPluginConstraintTypeEnumeration(module);
+  RegisterOrthancPluginJobStopReasonEnumeration(module);
+  RegisterOrthancPluginMetricsTypeEnumeration(module);
   RegisterOrthancPluginPixelFormatEnumeration(module);
-  RegisterOrthancPluginCompressionTypeEnumeration(module);
-  RegisterOrthancPluginJobStopReasonEnumeration(module);
-  RegisterOrthancPluginIdentifierConstraintEnumeration(module);
-  RegisterOrthancPluginContentTypeEnumeration(module);
+  RegisterOrthancPluginReceivedInstanceActionEnumeration(module);
+  RegisterOrthancPluginResourceTypeEnumeration(module);
   RegisterOrthancPluginStorageCommitmentFailureReasonEnumeration(module);
-  RegisterOrthancPluginDicomToJsonFlagsEnumeration(module);
-  RegisterOrthancPluginErrorCodeEnumeration(module);
-  RegisterOrthancPluginCreateDicomFlagsEnumeration(module);
-  RegisterOrthancPluginDicomToJsonFormatEnumeration(module);
-  RegisterOrthancPluginMetricsTypeEnumeration(module);
   RegisterOrthancPluginValueRepresentationEnumeration(module);
-  RegisterOrthancPluginReceivedInstanceActionEnumeration(module);
-  RegisterOrthancPluginImageFormatEnumeration(module);
-  RegisterOrthancPluginChangeTypeEnumeration(module);
 
+  RegisterOrthancPluginDicomInstanceClass(module);
+  RegisterOrthancPluginDicomWebNodeClass(module);
+  RegisterOrthancPluginFindAnswersClass(module);
+  RegisterOrthancPluginFindMatcherClass(module);
+  RegisterOrthancPluginFindQueryClass(module);
+  RegisterOrthancPluginImageClass(module);
+  RegisterOrthancPluginJobClass(module);
+  RegisterOrthancPluginPeersClass(module);
   RegisterOrthancPluginRestOutputClass(module);
   RegisterOrthancPluginServerChunkedRequestReaderClass(module);
-  RegisterOrthancPluginImageClass(module);
-  RegisterOrthancPluginJobClass(module);
+  RegisterOrthancPluginStorageAreaClass(module);
+  RegisterOrthancPluginWorklistAnswersClass(module);
   RegisterOrthancPluginWorklistQueryClass(module);
-  RegisterOrthancPluginStorageAreaClass(module);
-  RegisterOrthancPluginFindMatcherClass(module);
-  RegisterOrthancPluginDicomWebNodeClass(module);
-  RegisterOrthancPluginWorklistAnswersClass(module);
-  RegisterOrthancPluginFindAnswersClass(module);
-  RegisterOrthancPluginPeersClass(module);
-  RegisterOrthancPluginDicomInstanceClass(module);
-  RegisterOrthancPluginFindQueryClass(module);
 }
--- a/Sources/Autogenerated/sdk.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk.h	Wed Aug 30 11:40:22 2023 +0200
@@ -25,23 +25,95 @@
 void RegisterOrthancSdk(PyObject* module);
 PyMethodDef* GetOrthancSdkFunctions();
 
-PyTypeObject* GetOrthancPluginRestOutputType();
-PyTypeObject* GetOrthancPluginServerChunkedRequestReaderType();
+PyTypeObject* GetOrthancPluginDicomInstanceType();
+PyTypeObject* GetOrthancPluginDicomWebNodeType();
+PyTypeObject* GetOrthancPluginFindAnswersType();
+PyTypeObject* GetOrthancPluginFindMatcherType();
+PyTypeObject* GetOrthancPluginFindQueryType();
 PyTypeObject* GetOrthancPluginImageType();
 PyTypeObject* GetOrthancPluginJobType();
-PyTypeObject* GetOrthancPluginWorklistQueryType();
+PyTypeObject* GetOrthancPluginPeersType();
+PyTypeObject* GetOrthancPluginRestOutputType();
+PyTypeObject* GetOrthancPluginServerChunkedRequestReaderType();
 PyTypeObject* GetOrthancPluginStorageAreaType();
-PyTypeObject* GetOrthancPluginFindMatcherType();
-PyTypeObject* GetOrthancPluginDicomWebNodeType();
 PyTypeObject* GetOrthancPluginWorklistAnswersType();
-PyTypeObject* GetOrthancPluginFindAnswersType();
-PyTypeObject* GetOrthancPluginPeersType();
-PyTypeObject* GetOrthancPluginDicomInstanceType();
-PyTypeObject* GetOrthancPluginFindQueryType();
+PyTypeObject* GetOrthancPluginWorklistQueryType();
 
 #include <orthanc/OrthancCPlugin.h>
 
-typedef struct 
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginDicomInstance* object_;
+  bool borrowed_;
+} sdk_OrthancPluginDicomInstance_Object;
+
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginDicomWebNode* object_;
+  bool borrowed_;
+} sdk_OrthancPluginDicomWebNode_Object;
+
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginFindAnswers* object_;
+  bool borrowed_;
+} sdk_OrthancPluginFindAnswers_Object;
+
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginFindMatcher* object_;
+  bool borrowed_;
+} sdk_OrthancPluginFindMatcher_Object;
+
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginFindQuery* object_;
+  bool borrowed_;
+} sdk_OrthancPluginFindQuery_Object;
+
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginImage* object_;
+  bool borrowed_;
+} sdk_OrthancPluginImage_Object;
+
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginJob* object_;
+  bool borrowed_;
+} sdk_OrthancPluginJob_Object;
+
+typedef struct
+{
+  PyObject_HEAD
+
+  /* Type-specific fields go here. */
+  OrthancPluginPeers* object_;
+  bool borrowed_;
+} sdk_OrthancPluginPeers_Object;
+
+typedef struct
 {
   PyObject_HEAD
 
@@ -50,7 +122,7 @@
   bool borrowed_;
 } sdk_OrthancPluginRestOutput_Object;
 
-typedef struct 
+typedef struct
 {
   PyObject_HEAD
 
@@ -59,25 +131,25 @@
   bool borrowed_;
 } sdk_OrthancPluginServerChunkedRequestReader_Object;
 
-typedef struct 
+typedef struct
 {
   PyObject_HEAD
 
   /* Type-specific fields go here. */
-  OrthancPluginImage* object_;
+  OrthancPluginStorageArea* object_;
   bool borrowed_;
-} sdk_OrthancPluginImage_Object;
+} sdk_OrthancPluginStorageArea_Object;
 
-typedef struct 
+typedef struct
 {
   PyObject_HEAD
 
   /* Type-specific fields go here. */
-  OrthancPluginJob* object_;
+  OrthancPluginWorklistAnswers* object_;
   bool borrowed_;
-} sdk_OrthancPluginJob_Object;
+} sdk_OrthancPluginWorklistAnswers_Object;
 
-typedef struct 
+typedef struct
 {
   PyObject_HEAD
 
@@ -86,75 +158,3 @@
   bool borrowed_;
 } sdk_OrthancPluginWorklistQuery_Object;
 
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginStorageArea* object_;
-  bool borrowed_;
-} sdk_OrthancPluginStorageArea_Object;
-
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginFindMatcher* object_;
-  bool borrowed_;
-} sdk_OrthancPluginFindMatcher_Object;
-
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginDicomWebNode* object_;
-  bool borrowed_;
-} sdk_OrthancPluginDicomWebNode_Object;
-
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginWorklistAnswers* object_;
-  bool borrowed_;
-} sdk_OrthancPluginWorklistAnswers_Object;
-
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginFindAnswers* object_;
-  bool borrowed_;
-} sdk_OrthancPluginFindAnswers_Object;
-
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginPeers* object_;
-  bool borrowed_;
-} sdk_OrthancPluginPeers_Object;
-
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginDicomInstance* object_;
-  bool borrowed_;
-} sdk_OrthancPluginDicomInstance_Object;
-
-typedef struct 
-{
-  PyObject_HEAD
-
-  /* Type-specific fields go here. */
-  OrthancPluginFindQuery* object_;
-  bool borrowed_;
-} sdk_OrthancPluginFindQuery_Object;
-
--- a/Sources/Autogenerated/sdk_OrthancPluginDicomInstance.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginDicomInstance.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -160,361 +160,6 @@
 }
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceRemoteAet(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceRemoteAet() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  const char* s = OrthancPluginGetInstanceRemoteAet(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  if (s == NULL)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    return PyUnicode_FromString(s);
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceSize(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceSize() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginGetInstanceSize(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceJson(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceJson() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPlugins::OrthancString s;
-  s.Assign(OrthancPluginGetInstanceJson(OrthancPlugins::GetGlobalContext(), self->object_));
-  
-  if (s.GetContent() == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;
-  }
-  else
-  {
-    return PyUnicode_FromString(s.GetContent());
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceSimplifiedJson(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceSimplifiedJson() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPlugins::OrthancString s;
-  s.Assign(OrthancPluginGetInstanceSimplifiedJson(OrthancPlugins::GetGlobalContext(), self->object_));
-  
-  if (s.GetContent() == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;
-  }
-  else
-  {
-    return PyUnicode_FromString(s.GetContent());
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginHasInstanceMetadata(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginHasInstanceMetadata() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-
-  if (!PyArg_ParseTuple(args, "s", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  long value = OrthancPluginHasInstanceMetadata(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceMetadata(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceMetadata() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-
-  if (!PyArg_ParseTuple(args, "s", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  const char* s = OrthancPluginGetInstanceMetadata(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-  if (s == NULL)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    return PyUnicode_FromString(s);
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceOrigin(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceOrigin() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPluginInstanceOrigin value = OrthancPluginGetInstanceOrigin(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceTransferSyntaxUid(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceTransferSyntaxUid() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPlugins::OrthancString s;
-  s.Assign(OrthancPluginGetInstanceTransferSyntaxUid(OrthancPlugins::GetGlobalContext(), self->object_));
-  
-  if (s.GetContent() == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;
-  }
-  else
-  {
-    return PyUnicode_FromString(s.GetContent());
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginHasInstancePixelData(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginHasInstancePixelData() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginHasInstancePixelData(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceFramesCount(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceFramesCount() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginGetInstanceFramesCount(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceRawFrame(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceRawFrame() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "k", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPlugins::MemoryBuffer buffer;
-  OrthancPluginErrorCode code = OrthancPluginGetInstanceRawFrame(OrthancPlugins::GetGlobalContext(), *buffer, self->object_, arg0);
-  
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;  
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceDecodedFrame(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceDecodedFrame() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "k", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  // This is the case of a constructor
-  OrthancPluginImage* obj = OrthancPluginGetInstanceDecodedFrame(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-  if (obj == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;  
-  }
-  else
-  {
-    PyObject *argList = Py_BuildValue("Lb", obj, false /* not borrowed */);
-    PyObject *python = PyObject_CallObject((PyObject *) &sdk_OrthancPluginImage_Type, argList);
-    Py_DECREF(argList);
-    return python;
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginSerializeDicomInstance(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSerializeDicomInstance() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPlugins::MemoryBuffer buffer;
-  OrthancPluginErrorCode code = OrthancPluginSerializeDicomInstance(OrthancPlugins::GetGlobalContext(), *buffer, self->object_);
-  
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;  
-  }
-}
-
-static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceAdvancedJson(
-  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetInstanceAdvancedJson() on object of class OrthancPluginDicomInstance");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  long int arg0 = 0;
-  long int arg1 = 0;
-  unsigned long arg2 = 0;
-
-  if (!PyArg_ParseTuple(args, "llk", &arg0, &arg1, &arg2))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (3 arguments expected)");
-    return NULL;
-  }
-  OrthancPlugins::OrthancString s;
-  s.Assign(OrthancPluginGetInstanceAdvancedJson(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginDicomToJsonFormat>(arg0), static_cast<OrthancPluginDicomToJsonFlags>(arg1), arg2));
-  
-  if (s.GetContent() == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;
-  }
-  else
-  {
-    return PyUnicode_FromString(s.GetContent());
-  }
-}
-
-
-
 static void RegisterOrthancPluginDicomInstanceClass(PyObject* module)
 {
   sdk_OrthancPluginDicomInstance_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginDicomInstance.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,353 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceRemoteAet(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceRemoteAet() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  const char* s = OrthancPluginGetInstanceRemoteAet(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  if (s == NULL)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    return PyUnicode_FromString(s);
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceSize(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceSize() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginGetInstanceSize(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceJson(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceJson() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPlugins::OrthancString s;
+  s.Assign(OrthancPluginGetInstanceJson(OrthancPlugins::GetGlobalContext(), self->object_));
+  
+  if (s.GetContent() == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;
+  }
+  else
+  {
+    return PyUnicode_FromString(s.GetContent());
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceSimplifiedJson(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceSimplifiedJson() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPlugins::OrthancString s;
+  s.Assign(OrthancPluginGetInstanceSimplifiedJson(OrthancPlugins::GetGlobalContext(), self->object_));
+  
+  if (s.GetContent() == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;
+  }
+  else
+  {
+    return PyUnicode_FromString(s.GetContent());
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginHasInstanceMetadata(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginHasInstanceMetadata() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+
+  if (!PyArg_ParseTuple(args, "s", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  long value = OrthancPluginHasInstanceMetadata(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceMetadata(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceMetadata() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+
+  if (!PyArg_ParseTuple(args, "s", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  const char* s = OrthancPluginGetInstanceMetadata(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+  if (s == NULL)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    return PyUnicode_FromString(s);
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceOrigin(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceOrigin() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPluginInstanceOrigin value = OrthancPluginGetInstanceOrigin(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceTransferSyntaxUid(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceTransferSyntaxUid() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPlugins::OrthancString s;
+  s.Assign(OrthancPluginGetInstanceTransferSyntaxUid(OrthancPlugins::GetGlobalContext(), self->object_));
+  
+  if (s.GetContent() == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;
+  }
+  else
+  {
+    return PyUnicode_FromString(s.GetContent());
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginHasInstancePixelData(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginHasInstancePixelData() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginHasInstancePixelData(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceFramesCount(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceFramesCount() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginGetInstanceFramesCount(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceRawFrame(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceRawFrame() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "k", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPlugins::MemoryBuffer buffer;
+  OrthancPluginErrorCode code = OrthancPluginGetInstanceRawFrame(OrthancPlugins::GetGlobalContext(), *buffer, self->object_, arg0);
+  
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;  
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceDecodedFrame(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceDecodedFrame() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "k", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  // This is the case of a constructor
+  OrthancPluginImage* obj = OrthancPluginGetInstanceDecodedFrame(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+  if (obj == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;  
+  }
+  else
+  {
+    PyObject *argList = Py_BuildValue("Lb", obj, false /* not borrowed */);
+    PyObject *python = PyObject_CallObject((PyObject *) &sdk_OrthancPluginImage_Type, argList);
+    Py_DECREF(argList);
+    return python;
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginSerializeDicomInstance(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSerializeDicomInstance() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPlugins::MemoryBuffer buffer;
+  OrthancPluginErrorCode code = OrthancPluginSerializeDicomInstance(OrthancPlugins::GetGlobalContext(), *buffer, self->object_);
+  
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;  
+  }
+}
+
+static PyObject *sdk_OrthancPluginDicomInstance_OrthancPluginGetInstanceAdvancedJson(
+  sdk_OrthancPluginDicomInstance_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetInstanceAdvancedJson() on object of class OrthancPluginDicomInstance");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  long int arg0 = 0;
+  long int arg1 = 0;
+  unsigned long arg2 = 0;
+
+  if (!PyArg_ParseTuple(args, "llk", &arg0, &arg1, &arg2))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (3 arguments expected)");
+    return NULL;
+  }
+  OrthancPlugins::OrthancString s;
+  s.Assign(OrthancPluginGetInstanceAdvancedJson(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginDicomToJsonFormat>(arg0), static_cast<OrthancPluginDicomToJsonFlags>(arg1), arg2));
+  
+  if (s.GetContent() == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;
+  }
+  else
+  {
+    return PyUnicode_FromString(s.GetContent());
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -70,9 +70,6 @@
 
 
 
-// Actual implementation of the methods
-
-
 static void RegisterOrthancPluginDicomWebNodeClass(PyObject* module)
 {
   sdk_OrthancPluginDicomWebNode_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,1 @@
+// Actual implementation of the methods
--- a/Sources/Autogenerated/sdk_OrthancPluginFindAnswers.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginFindAnswers.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -80,69 +80,6 @@
 
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginFindAnswers_OrthancPluginFindAddAnswer(
-  sdk_OrthancPluginFindAnswers_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginFindAddAnswer() on object of class OrthancPluginFindAnswers");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  Py_buffer arg0;
-
-  if (!PyArg_ParseTuple(args, "s*", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginErrorCode code = OrthancPluginFindAddAnswer(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
-  PyBuffer_Release(&arg0);
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-static PyObject *sdk_OrthancPluginFindAnswers_OrthancPluginFindMarkIncomplete(
-  sdk_OrthancPluginFindAnswers_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginFindMarkIncomplete() on object of class OrthancPluginFindAnswers");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPluginErrorCode code = OrthancPluginFindMarkIncomplete(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-
-
 static void RegisterOrthancPluginFindAnswersClass(PyObject* module)
 {
   sdk_OrthancPluginFindAnswers_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginFindAnswers.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,61 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginFindAnswers_OrthancPluginFindAddAnswer(
+  sdk_OrthancPluginFindAnswers_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginFindAddAnswer() on object of class OrthancPluginFindAnswers");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  Py_buffer arg0;
+
+  if (!PyArg_ParseTuple(args, "s*", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginErrorCode code = OrthancPluginFindAddAnswer(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
+  PyBuffer_Release(&arg0);
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
+static PyObject *sdk_OrthancPluginFindAnswers_OrthancPluginFindMarkIncomplete(
+  sdk_OrthancPluginFindAnswers_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginFindMarkIncomplete() on object of class OrthancPluginFindAnswers");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPluginErrorCode code = OrthancPluginFindMarkIncomplete(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginFindMatcher.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginFindMatcher.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -90,32 +90,6 @@
 }
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginFindMatcher_OrthancPluginFindMatcherIsMatch(
-  sdk_OrthancPluginFindMatcher_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginFindMatcherIsMatch() on object of class OrthancPluginFindMatcher");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  Py_buffer arg0;
-
-  if (!PyArg_ParseTuple(args, "s*", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  long value = OrthancPluginFindMatcherIsMatch(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
-  PyBuffer_Release(&arg0);
-  return PyLong_FromLong(value);
-}
-
-
-
 static void RegisterOrthancPluginFindMatcherClass(PyObject* module)
 {
   sdk_OrthancPluginFindMatcher_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginFindMatcher.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,24 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginFindMatcher_OrthancPluginFindMatcherIsMatch(
+  sdk_OrthancPluginFindMatcher_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginFindMatcherIsMatch() on object of class OrthancPluginFindMatcher");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  Py_buffer arg0;
+
+  if (!PyArg_ParseTuple(args, "s*", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  long value = OrthancPluginFindMatcherIsMatch(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
+  PyBuffer_Release(&arg0);
+  return PyLong_FromLong(value);
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginFindQuery.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginFindQuery.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -95,90 +95,6 @@
 
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginFindQuery_OrthancPluginGetFindQuerySize(
-  sdk_OrthancPluginFindQuery_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetFindQuerySize() on object of class OrthancPluginFindQuery");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginGetFindQuerySize(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginFindQuery_OrthancPluginGetFindQueryTagName(
-  sdk_OrthancPluginFindQuery_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetFindQueryTagName() on object of class OrthancPluginFindQuery");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "k", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPlugins::OrthancString s;
-  s.Assign(OrthancPluginGetFindQueryTagName(OrthancPlugins::GetGlobalContext(), self->object_, arg0));
-  
-  if (s.GetContent() == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;
-  }
-  else
-  {
-    return PyUnicode_FromString(s.GetContent());
-  }
-}
-
-static PyObject *sdk_OrthancPluginFindQuery_OrthancPluginGetFindQueryValue(
-  sdk_OrthancPluginFindQuery_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetFindQueryValue() on object of class OrthancPluginFindQuery");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "k", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPlugins::OrthancString s;
-  s.Assign(OrthancPluginGetFindQueryValue(OrthancPlugins::GetGlobalContext(), self->object_, arg0));
-  
-  if (s.GetContent() == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;
-  }
-  else
-  {
-    return PyUnicode_FromString(s.GetContent());
-  }
-}
-
-
-
 static void RegisterOrthancPluginFindQueryClass(PyObject* module)
 {
   sdk_OrthancPluginFindQuery_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginFindQuery.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,82 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginFindQuery_OrthancPluginGetFindQuerySize(
+  sdk_OrthancPluginFindQuery_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetFindQuerySize() on object of class OrthancPluginFindQuery");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginGetFindQuerySize(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginFindQuery_OrthancPluginGetFindQueryTagName(
+  sdk_OrthancPluginFindQuery_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetFindQueryTagName() on object of class OrthancPluginFindQuery");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "k", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPlugins::OrthancString s;
+  s.Assign(OrthancPluginGetFindQueryTagName(OrthancPlugins::GetGlobalContext(), self->object_, arg0));
+  
+  if (s.GetContent() == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;
+  }
+  else
+  {
+    return PyUnicode_FromString(s.GetContent());
+  }
+}
+
+static PyObject *sdk_OrthancPluginFindQuery_OrthancPluginGetFindQueryValue(
+  sdk_OrthancPluginFindQuery_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetFindQueryValue() on object of class OrthancPluginFindQuery");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "k", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPlugins::OrthancString s;
+  s.Assign(OrthancPluginGetFindQueryValue(OrthancPlugins::GetGlobalContext(), self->object_, arg0));
+  
+  if (s.GetContent() == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;
+  }
+  else
+  {
+    return PyUnicode_FromString(s.GetContent());
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginImage.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginImage.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -120,151 +120,6 @@
 }
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImagePixelFormat(
-  sdk_OrthancPluginImage_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetImagePixelFormat() on object of class OrthancPluginImage");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPluginPixelFormat value = OrthancPluginGetImagePixelFormat(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImageWidth(
-  sdk_OrthancPluginImage_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetImageWidth() on object of class OrthancPluginImage");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginGetImageWidth(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImageHeight(
-  sdk_OrthancPluginImage_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetImageHeight() on object of class OrthancPluginImage");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginGetImageHeight(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImagePitch(
-  sdk_OrthancPluginImage_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetImagePitch() on object of class OrthancPluginImage");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginGetImagePitch(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginImage_OrthancPluginConvertPixelFormat(
-  sdk_OrthancPluginImage_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginConvertPixelFormat() on object of class OrthancPluginImage");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  long int arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "l", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  // This is the case of a constructor
-  OrthancPluginImage* obj = OrthancPluginConvertPixelFormat(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginPixelFormat>(arg0));
-  
-  if (obj == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;  
-  }
-  else
-  {
-    PyObject *argList = Py_BuildValue("Lb", obj, false /* not borrowed */);
-    PyObject *python = PyObject_CallObject((PyObject *) &sdk_OrthancPluginImage_Type, argList);
-    Py_DECREF(argList);
-    return python;
-  }
-}
-
-static PyObject *sdk_OrthancPluginImage_OrthancPluginDrawText(
-  sdk_OrthancPluginImage_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginDrawText() on object of class OrthancPluginImage");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-  const char* arg1 = NULL;
-  long int arg2 = 0;
-  long int arg3 = 0;
-  unsigned char arg4 = 0;
-  unsigned char arg5 = 0;
-  unsigned char arg6 = 0;
-
-  if (!PyArg_ParseTuple(args, "ksllbbb", &arg0, &arg1, &arg2, &arg3, &arg4, &arg5, &arg6))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (7 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginErrorCode code = OrthancPluginDrawText(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-  
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-
-
 static void RegisterOrthancPluginImageClass(PyObject* module)
 {
   sdk_OrthancPluginImage_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginImage.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,143 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImagePixelFormat(
+  sdk_OrthancPluginImage_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetImagePixelFormat() on object of class OrthancPluginImage");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPluginPixelFormat value = OrthancPluginGetImagePixelFormat(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImageWidth(
+  sdk_OrthancPluginImage_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetImageWidth() on object of class OrthancPluginImage");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginGetImageWidth(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImageHeight(
+  sdk_OrthancPluginImage_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetImageHeight() on object of class OrthancPluginImage");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginGetImageHeight(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginImage_OrthancPluginGetImagePitch(
+  sdk_OrthancPluginImage_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetImagePitch() on object of class OrthancPluginImage");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginGetImagePitch(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginImage_OrthancPluginConvertPixelFormat(
+  sdk_OrthancPluginImage_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginConvertPixelFormat() on object of class OrthancPluginImage");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  long int arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "l", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  // This is the case of a constructor
+  OrthancPluginImage* obj = OrthancPluginConvertPixelFormat(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginPixelFormat>(arg0));
+  
+  if (obj == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;  
+  }
+  else
+  {
+    PyObject *argList = Py_BuildValue("Lb", obj, false /* not borrowed */);
+    PyObject *python = PyObject_CallObject((PyObject *) &sdk_OrthancPluginImage_Type, argList);
+    Py_DECREF(argList);
+    return python;
+  }
+}
+
+static PyObject *sdk_OrthancPluginImage_OrthancPluginDrawText(
+  sdk_OrthancPluginImage_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginDrawText() on object of class OrthancPluginImage");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+  const char* arg1 = NULL;
+  long int arg2 = 0;
+  long int arg3 = 0;
+  unsigned char arg4 = 0;
+  unsigned char arg5 = 0;
+  unsigned char arg6 = 0;
+
+  if (!PyArg_ParseTuple(args, "ksllbbb", &arg0, &arg1, &arg2, &arg3, &arg4, &arg5, &arg6))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (7 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginErrorCode code = OrthancPluginDrawText(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+  
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginJob.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginJob.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -90,41 +90,6 @@
 }
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginJob_OrthancPluginSubmitJob(
-  sdk_OrthancPluginJob_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSubmitJob() on object of class OrthancPluginJob");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  int arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "i", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPlugins::OrthancString s;
-  s.Assign(OrthancPluginSubmitJob(OrthancPlugins::GetGlobalContext(), self->object_, arg0));
-  
-  if (s.GetContent() == NULL)
-  {
-    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
-    return NULL;
-  }
-  else
-  {
-    return PyUnicode_FromString(s.GetContent());
-  }
-}
-
-
-
 static void RegisterOrthancPluginJobClass(PyObject* module)
 {
   sdk_OrthancPluginJob_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginJob.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,33 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginJob_OrthancPluginSubmitJob(
+  sdk_OrthancPluginJob_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSubmitJob() on object of class OrthancPluginJob");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  int arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "i", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPlugins::OrthancString s;
+  s.Assign(OrthancPluginSubmitJob(OrthancPlugins::GetGlobalContext(), self->object_, arg0));
+  
+  if (s.GetContent() == NULL)
+  {
+    PythonLock::RaiseException(OrthancPluginErrorCode_InternalError);
+    return NULL;
+  }
+  else
+  {
+    return PyUnicode_FromString(s.GetContent());
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginPeers.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginPeers.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -105,120 +105,6 @@
 }
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeersCount(
-  sdk_OrthancPluginPeers_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetPeersCount() on object of class OrthancPluginPeers");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  long value = OrthancPluginGetPeersCount(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeerName(
-  sdk_OrthancPluginPeers_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetPeerName() on object of class OrthancPluginPeers");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "k", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  const char* s = OrthancPluginGetPeerName(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-  if (s == NULL)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    return PyUnicode_FromString(s);
-  }
-}
-
-static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeerUrl(
-  sdk_OrthancPluginPeers_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetPeerUrl() on object of class OrthancPluginPeers");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "k", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  const char* s = OrthancPluginGetPeerUrl(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-  if (s == NULL)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    return PyUnicode_FromString(s);
-  }
-}
-
-static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeerUserProperty(
-  sdk_OrthancPluginPeers_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginGetPeerUserProperty() on object of class OrthancPluginPeers");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned long arg0 = 0;
-  const char* arg1 = NULL;
-
-  if (!PyArg_ParseTuple(args, "ks", &arg0, &arg1))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  const char* s = OrthancPluginGetPeerUserProperty(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
-  
-  if (s == NULL)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    return PyUnicode_FromString(s);
-  }
-}
-
-
-
 static void RegisterOrthancPluginPeersClass(PyObject* module)
 {
   sdk_OrthancPluginPeers_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginPeers.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,112 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeersCount(
+  sdk_OrthancPluginPeers_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetPeersCount() on object of class OrthancPluginPeers");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  long value = OrthancPluginGetPeersCount(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeerName(
+  sdk_OrthancPluginPeers_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetPeerName() on object of class OrthancPluginPeers");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "k", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  const char* s = OrthancPluginGetPeerName(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+  if (s == NULL)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    return PyUnicode_FromString(s);
+  }
+}
+
+static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeerUrl(
+  sdk_OrthancPluginPeers_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetPeerUrl() on object of class OrthancPluginPeers");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "k", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  const char* s = OrthancPluginGetPeerUrl(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+  if (s == NULL)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    return PyUnicode_FromString(s);
+  }
+}
+
+static PyObject *sdk_OrthancPluginPeers_OrthancPluginGetPeerUserProperty(
+  sdk_OrthancPluginPeers_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginGetPeerUserProperty() on object of class OrthancPluginPeers");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned long arg0 = 0;
+  const char* arg1 = NULL;
+
+  if (!PyArg_ParseTuple(args, "ks", &arg0, &arg1))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  const char* s = OrthancPluginGetPeerUserProperty(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
+  
+  if (s == NULL)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    return PyUnicode_FromString(s);
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginRestOutput.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginRestOutput.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -135,366 +135,6 @@
 
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginAnswerBuffer(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginAnswerBuffer() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  Py_buffer arg0;
-  const char* arg2 = NULL;
-
-  if (!PyArg_ParseTuple(args, "s*s", &arg0, &arg2))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginAnswerBuffer(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len, arg2);
-  PyBuffer_Release(&arg0);
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginCompressAndAnswerPngImage(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginCompressAndAnswerPngImage() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  long int arg0 = 0;
-  unsigned long arg1 = 0;
-  unsigned long arg2 = 0;
-  unsigned long arg3 = 0;
-  Py_buffer arg4;
-
-  if (!PyArg_ParseTuple(args, "lkkks*", &arg0, &arg1, &arg2, &arg3, &arg4))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (5 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginCompressAndAnswerPngImage(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginPixelFormat>(arg0), arg1, arg2, arg3, arg4.buf);
-  PyBuffer_Release(&arg4);
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginRedirect(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginRedirect() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-
-  if (!PyArg_ParseTuple(args, "s", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginRedirect(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendHttpStatusCode(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSendHttpStatusCode() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned short arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "H", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginSendHttpStatusCode(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendUnauthorized(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSendUnauthorized() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-
-  if (!PyArg_ParseTuple(args, "s", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginSendUnauthorized(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendMethodNotAllowed(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSendMethodNotAllowed() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-
-  if (!PyArg_ParseTuple(args, "s", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginSendMethodNotAllowed(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSetCookie(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSetCookie() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-  const char* arg1 = NULL;
-
-  if (!PyArg_ParseTuple(args, "ss", &arg0, &arg1))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginSetCookie(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSetHttpHeader(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSetHttpHeader() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-  const char* arg1 = NULL;
-
-  if (!PyArg_ParseTuple(args, "ss", &arg0, &arg1))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginSetHttpHeader(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginStartMultipartAnswer(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginStartMultipartAnswer() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-  const char* arg1 = NULL;
-
-  if (!PyArg_ParseTuple(args, "ss", &arg0, &arg1))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginErrorCode code = OrthancPluginStartMultipartAnswer(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
-  
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendMultipartItem(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSendMultipartItem() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  Py_buffer arg0;
-
-  if (!PyArg_ParseTuple(args, "s*", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginErrorCode code = OrthancPluginSendMultipartItem(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
-  PyBuffer_Release(&arg0);
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendHttpStatus(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSendHttpStatus() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  unsigned short arg0 = 0;
-  const char* arg1 = NULL;
-  unsigned long arg2 = 0;
-
-  if (!PyArg_ParseTuple(args, "Hsk", &arg0, &arg1, &arg2))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (3 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginSendHttpStatus(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1, arg2);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginCompressAndAnswerJpegImage(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginCompressAndAnswerJpegImage() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  long int arg0 = 0;
-  unsigned long arg1 = 0;
-  unsigned long arg2 = 0;
-  unsigned long arg3 = 0;
-  Py_buffer arg4;
-  unsigned char arg5 = 0;
-
-  if (!PyArg_ParseTuple(args, "lkkks*b", &arg0, &arg1, &arg2, &arg3, &arg4, &arg5))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (6 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginCompressAndAnswerJpegImage(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginPixelFormat>(arg0), arg1, arg2, arg3, arg4.buf, arg5);
-  PyBuffer_Release(&arg4);
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSetHttpErrorDetails(
-  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginSetHttpErrorDetails() on object of class OrthancPluginRestOutput");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-  unsigned char arg1 = 0;
-
-  if (!PyArg_ParseTuple(args, "sb", &arg0, &arg1))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginSetHttpErrorDetails(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
-  
-
-  Py_INCREF(Py_None);
-  return Py_None;
-}
-
-
-
 static void RegisterOrthancPluginRestOutputClass(PyObject* module)
 {
   sdk_OrthancPluginRestOutput_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginRestOutput.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,358 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginAnswerBuffer(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginAnswerBuffer() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  Py_buffer arg0;
+  const char* arg2 = NULL;
+
+  if (!PyArg_ParseTuple(args, "s*s", &arg0, &arg2))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginAnswerBuffer(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len, arg2);
+  PyBuffer_Release(&arg0);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginCompressAndAnswerPngImage(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginCompressAndAnswerPngImage() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  long int arg0 = 0;
+  unsigned long arg1 = 0;
+  unsigned long arg2 = 0;
+  unsigned long arg3 = 0;
+  Py_buffer arg4;
+
+  if (!PyArg_ParseTuple(args, "lkkks*", &arg0, &arg1, &arg2, &arg3, &arg4))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (5 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginCompressAndAnswerPngImage(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginPixelFormat>(arg0), arg1, arg2, arg3, arg4.buf);
+  PyBuffer_Release(&arg4);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginRedirect(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginRedirect() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+
+  if (!PyArg_ParseTuple(args, "s", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginRedirect(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendHttpStatusCode(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSendHttpStatusCode() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned short arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "H", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginSendHttpStatusCode(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendUnauthorized(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSendUnauthorized() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+
+  if (!PyArg_ParseTuple(args, "s", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginSendUnauthorized(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendMethodNotAllowed(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSendMethodNotAllowed() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+
+  if (!PyArg_ParseTuple(args, "s", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginSendMethodNotAllowed(OrthancPlugins::GetGlobalContext(), self->object_, arg0);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSetCookie(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSetCookie() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+  const char* arg1 = NULL;
+
+  if (!PyArg_ParseTuple(args, "ss", &arg0, &arg1))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginSetCookie(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSetHttpHeader(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSetHttpHeader() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+  const char* arg1 = NULL;
+
+  if (!PyArg_ParseTuple(args, "ss", &arg0, &arg1))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginSetHttpHeader(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginStartMultipartAnswer(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginStartMultipartAnswer() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+  const char* arg1 = NULL;
+
+  if (!PyArg_ParseTuple(args, "ss", &arg0, &arg1))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginErrorCode code = OrthancPluginStartMultipartAnswer(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
+  
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendMultipartItem(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSendMultipartItem() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  Py_buffer arg0;
+
+  if (!PyArg_ParseTuple(args, "s*", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginErrorCode code = OrthancPluginSendMultipartItem(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
+  PyBuffer_Release(&arg0);
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSendHttpStatus(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSendHttpStatus() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  unsigned short arg0 = 0;
+  const char* arg1 = NULL;
+  unsigned long arg2 = 0;
+
+  if (!PyArg_ParseTuple(args, "Hsk", &arg0, &arg1, &arg2))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (3 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginSendHttpStatus(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1, arg2);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginCompressAndAnswerJpegImage(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginCompressAndAnswerJpegImage() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  long int arg0 = 0;
+  unsigned long arg1 = 0;
+  unsigned long arg2 = 0;
+  unsigned long arg3 = 0;
+  Py_buffer arg4;
+  unsigned char arg5 = 0;
+
+  if (!PyArg_ParseTuple(args, "lkkks*b", &arg0, &arg1, &arg2, &arg3, &arg4, &arg5))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (6 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginCompressAndAnswerJpegImage(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginPixelFormat>(arg0), arg1, arg2, arg3, arg4.buf, arg5);
+  PyBuffer_Release(&arg4);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject *sdk_OrthancPluginRestOutput_OrthancPluginSetHttpErrorDetails(
+  sdk_OrthancPluginRestOutput_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginSetHttpErrorDetails() on object of class OrthancPluginRestOutput");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+  unsigned char arg1 = 0;
+
+  if (!PyArg_ParseTuple(args, "sb", &arg0, &arg1))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginSetHttpErrorDetails(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1);
+  
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -70,9 +70,6 @@
 
 
 
-// Actual implementation of the methods
-
-
 static void RegisterOrthancPluginServerChunkedRequestReaderClass(PyObject* module)
 {
   sdk_OrthancPluginServerChunkedRequestReader_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,1 @@
+// Actual implementation of the methods
--- a/Sources/Autogenerated/sdk_OrthancPluginStorageArea.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginStorageArea.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -90,145 +90,6 @@
 
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginStorageAreaCreate(
-  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginStorageAreaCreate() on object of class OrthancPluginStorageArea");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-  Py_buffer arg1;
-  unsigned long long arg2 = 0;
-  long int arg3 = 0;
-
-  if (!PyArg_ParseTuple(args, "ss*Kl", &arg0, &arg1, &arg2, &arg3))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (4 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginErrorCode code = OrthancPluginStorageAreaCreate(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1.buf, arg2, static_cast<OrthancPluginContentType>(arg3));
-  PyBuffer_Release(&arg1);
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginStorageAreaRead(
-  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginStorageAreaRead() on object of class OrthancPluginStorageArea");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-  long int arg1 = 0;
-
-  if (!PyArg_ParseTuple(args, "sl", &arg0, &arg1))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  OrthancPlugins::MemoryBuffer buffer;
-  OrthancPluginErrorCode code = OrthancPluginStorageAreaRead(OrthancPlugins::GetGlobalContext(), *buffer, self->object_, arg0, static_cast<OrthancPluginContentType>(arg1));
-  
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;  
-  }
-}
-
-static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginStorageAreaRemove(
-  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginStorageAreaRemove() on object of class OrthancPluginStorageArea");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  const char* arg0 = NULL;
-  long int arg1 = 0;
-
-  if (!PyArg_ParseTuple(args, "sl", &arg0, &arg1))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginErrorCode code = OrthancPluginStorageAreaRemove(OrthancPlugins::GetGlobalContext(), self->object_, arg0, static_cast<OrthancPluginContentType>(arg1));
-  
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginReconstructMainDicomTags(
-  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginReconstructMainDicomTags() on object of class OrthancPluginStorageArea");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  long int arg0 = 0;
-
-  if (!PyArg_ParseTuple(args, "l", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  OrthancPluginErrorCode code = OrthancPluginReconstructMainDicomTags(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginResourceType>(arg0));
-  
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-
-
 static void RegisterOrthancPluginStorageAreaClass(PyObject* module)
 {
   sdk_OrthancPluginStorageArea_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginStorageArea.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,137 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginStorageAreaCreate(
+  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginStorageAreaCreate() on object of class OrthancPluginStorageArea");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+  Py_buffer arg1;
+  unsigned long long arg2 = 0;
+  long int arg3 = 0;
+
+  if (!PyArg_ParseTuple(args, "ss*Kl", &arg0, &arg1, &arg2, &arg3))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (4 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginErrorCode code = OrthancPluginStorageAreaCreate(OrthancPlugins::GetGlobalContext(), self->object_, arg0, arg1.buf, arg2, static_cast<OrthancPluginContentType>(arg3));
+  PyBuffer_Release(&arg1);
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
+static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginStorageAreaRead(
+  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginStorageAreaRead() on object of class OrthancPluginStorageArea");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+  long int arg1 = 0;
+
+  if (!PyArg_ParseTuple(args, "sl", &arg0, &arg1))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  OrthancPlugins::MemoryBuffer buffer;
+  OrthancPluginErrorCode code = OrthancPluginStorageAreaRead(OrthancPlugins::GetGlobalContext(), *buffer, self->object_, arg0, static_cast<OrthancPluginContentType>(arg1));
+  
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;  
+  }
+}
+
+static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginStorageAreaRemove(
+  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginStorageAreaRemove() on object of class OrthancPluginStorageArea");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  const char* arg0 = NULL;
+  long int arg1 = 0;
+
+  if (!PyArg_ParseTuple(args, "sl", &arg0, &arg1))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (2 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginErrorCode code = OrthancPluginStorageAreaRemove(OrthancPlugins::GetGlobalContext(), self->object_, arg0, static_cast<OrthancPluginContentType>(arg1));
+  
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
+static PyObject *sdk_OrthancPluginStorageArea_OrthancPluginReconstructMainDicomTags(
+  sdk_OrthancPluginStorageArea_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginReconstructMainDicomTags() on object of class OrthancPluginStorageArea");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  long int arg0 = 0;
+
+  if (!PyArg_ParseTuple(args, "l", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  OrthancPluginErrorCode code = OrthancPluginReconstructMainDicomTags(OrthancPlugins::GetGlobalContext(), self->object_, static_cast<OrthancPluginResourceType>(arg0));
+  
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -80,36 +80,6 @@
 
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginWorklistAnswers_OrthancPluginWorklistMarkIncomplete(
-  sdk_OrthancPluginWorklistAnswers_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginWorklistMarkIncomplete() on object of class OrthancPluginWorklistAnswers");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPluginErrorCode code = OrthancPluginWorklistMarkIncomplete(OrthancPlugins::GetGlobalContext(), self->object_);
-  
-
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    Py_INCREF(Py_None);
-    return Py_None;
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;
-  }
-}
-
-
-
 static void RegisterOrthancPluginWorklistAnswersClass(PyObject* module)
 {
   sdk_OrthancPluginWorklistAnswers_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,28 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginWorklistAnswers_OrthancPluginWorklistMarkIncomplete(
+  sdk_OrthancPluginWorklistAnswers_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginWorklistMarkIncomplete() on object of class OrthancPluginWorklistAnswers");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPluginErrorCode code = OrthancPluginWorklistMarkIncomplete(OrthancPlugins::GetGlobalContext(), self->object_);
+  
+
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;
+  }
+}
+
--- a/Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.impl.h	Wed Aug 30 11:02:20 2023 +0200
+++ b/Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.impl.h	Wed Aug 30 11:40:22 2023 +0200
@@ -80,58 +80,6 @@
 
 
 
-// Actual implementation of the methods
-static PyObject *sdk_OrthancPluginWorklistQuery_OrthancPluginWorklistIsMatch(
-  sdk_OrthancPluginWorklistQuery_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginWorklistIsMatch() on object of class OrthancPluginWorklistQuery");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-  Py_buffer arg0;
-
-  if (!PyArg_ParseTuple(args, "s*", &arg0))
-  {
-    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
-    return NULL;
-  }
-  long value = OrthancPluginWorklistIsMatch(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
-  PyBuffer_Release(&arg0);
-  return PyLong_FromLong(value);
-}
-
-static PyObject *sdk_OrthancPluginWorklistQuery_OrthancPluginWorklistGetDicomQuery(
-  sdk_OrthancPluginWorklistQuery_Object* self, PyObject *args)
-{
-  PythonLock::LogCall("Calling method OrthancPluginWorklistGetDicomQuery() on object of class OrthancPluginWorklistQuery");
-
-  if (self->object_ == NULL)
-  {
-    PyErr_SetString(PyExc_ValueError, "Invalid object");
-    return NULL;
-  }
-
-
-  OrthancPlugins::MemoryBuffer buffer;
-  OrthancPluginErrorCode code = OrthancPluginWorklistGetDicomQuery(OrthancPlugins::GetGlobalContext(), *buffer, self->object_);
-  
-  if (code == OrthancPluginErrorCode_Success)
-  {
-    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
-  }
-  else
-  {
-    PythonLock::RaiseException(code);
-    return NULL;  
-  }
-}
-
-
-
 static void RegisterOrthancPluginWorklistQueryClass(PyObject* module)
 {
   sdk_OrthancPluginWorklistQuery_Type.tp_new = PyType_GenericNew;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.methods.h	Wed Aug 30 11:40:22 2023 +0200
@@ -0,0 +1,50 @@
+// Actual implementation of the methods
+static PyObject *sdk_OrthancPluginWorklistQuery_OrthancPluginWorklistIsMatch(
+  sdk_OrthancPluginWorklistQuery_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginWorklistIsMatch() on object of class OrthancPluginWorklistQuery");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+  Py_buffer arg0;
+
+  if (!PyArg_ParseTuple(args, "s*", &arg0))
+  {
+    PyErr_SetString(PyExc_TypeError, "Bad types for the arguments (1 arguments expected)");
+    return NULL;
+  }
+  long value = OrthancPluginWorklistIsMatch(OrthancPlugins::GetGlobalContext(), self->object_, arg0.buf, arg0.len);
+  PyBuffer_Release(&arg0);
+  return PyLong_FromLong(value);
+}
+
+static PyObject *sdk_OrthancPluginWorklistQuery_OrthancPluginWorklistGetDicomQuery(
+  sdk_OrthancPluginWorklistQuery_Object* self, PyObject *args)
+{
+  PythonLock::LogCall("Calling method OrthancPluginWorklistGetDicomQuery() on object of class OrthancPluginWorklistQuery");
+
+  if (self->object_ == NULL)
+  {
+    PyErr_SetString(PyExc_ValueError, "Invalid object");
+    return NULL;
+  }
+
+
+  OrthancPlugins::MemoryBuffer buffer;
+  OrthancPluginErrorCode code = OrthancPluginWorklistGetDicomQuery(OrthancPlugins::GetGlobalContext(), *buffer, self->object_);
+  
+  if (code == OrthancPluginErrorCode_Success)
+  {
+    return PyBytes_FromStringAndSize(buffer.GetData(), buffer.GetSize());
+  }
+  else
+  {
+    PythonLock::RaiseException(code);
+    return NULL;  
+  }
+}
+