X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=gdcmPython%2Fgdcm.i;h=69e8a82f14ec51c0ebe174b5025fe4cc18bca6e3;hb=e076cec25dcf959255d710a5cffdbe96d2998a7d;hp=46c2ec1eeab41783abff3117b53f38fafd9a3278;hpb=9676e37a52824da2f69d22c721178a4b5dc12191;p=gdcm.git diff --git a/gdcmPython/gdcm.i b/gdcmPython/gdcm.i index 46c2ec1e..69e8a82f 100644 --- a/gdcmPython/gdcm.i +++ b/gdcmPython/gdcm.i @@ -1,6 +1,15 @@ %module gdcm %{ -#include "gdcm.h" +#include "gdcmCommon.h" +#include "gdcmDictEntry.h" +#include "gdcmDict.h" +#include "gdcmDictSet.h" +#include "gdcmElValue.h" +#include "gdcmElValSet.h" +#include "gdcmUtil.h" +#include "gdcmHeader.h" +#include "gdcmFile.h" +using namespace std; // Utility functions on strings for removing leading and trailing spaces void EatLeadingAndTrailingSpaces(string & s) { @@ -13,7 +22,14 @@ void EatLeadingAndTrailingSpaces(string & s) { typedef unsigned short guint16; typedef unsigned int guint32; -%typemap(out) list * { +//////////////////////////////////////////////////////////////////////////// +// Global variables get exported to cvar in Python +%immutable; +extern gdcmGlobal gdcmGlob; +%mutable; + +//////////////////////////////////////////////////////////////////////////// +%typemap(out) std::list * { PyObject* NewItem = (PyObject*)0; PyObject* NewList = PyList_New(0); // The result of this typemap for (list::iterator NewString = ($1)->begin(); @@ -24,14 +40,20 @@ typedef unsigned int guint32; $result = NewList; } -%typemap(out) map > * { +//////////////////////////////////////////////////////////////////////////// +// Convert a c++ hash table in a python native dictionary +%typemap(out) std::map > * { PyObject* NewDict = PyDict_New(); // The result of this typemap PyObject* NewKey = (PyObject*)0; PyObject* NewVal = (PyObject*)0; for (map >::iterator tag = ($1)->begin(); tag != ($1)->end(); ++tag) { - NewKey = PyString_FromString(tag->first.c_str()); + string first = tag->first; + // Do not publish entries whose keys is made of spaces + if (first.length() == 0) + continue; + NewKey = PyString_FromString(first.c_str()); PyObject* NewList = PyList_New(0); for (list::iterator Item = tag->second.begin(); Item != tag->second.end(); ++Item) { @@ -43,7 +65,8 @@ typedef unsigned int guint32; $result = NewDict; } -// Return an hash table as a python native dictionary +//////////////////////////////////////////////////////////////////////////// +// Convert a c++ hash table in a python native dictionary %typemap(out) TagElValueHT & { PyObject* NewDict = PyDict_New(); // The result of this typemap string RawName; // Element name as gotten from gdcm @@ -72,4 +95,23 @@ typedef unsigned int guint32; $result = NewDict; } -%include gdcm.h +//////////////////////////////////////////////////////////////////////////// +// Deals with function returning a C++ string. +%typemap(out) string { + $result = PyString_FromString(($1).c_str()); +} +%typemap(out) std::string { + $result = PyString_FromString(($1).c_str()); +} + +//////////////////////////////////////////////////////////////////////////// +%include "gdcmCommon.h" +%include "gdcmDictEntry.h" +%include "gdcmDict.h" +%include "gdcmDictSet.h" +%include "gdcmElValue.h" +%include "gdcmElValSet.h" +%include "gdcmUtil.h" +%include "gdcmHeader.h" +%include "gdcmFile.h" +