1 /*=========================================================================
2 
3   Program: GDCM (Grassroots DICOM). A DICOM library
4 
5   Copyright (c) 2006-2011 Mathieu Malaterre
6   All rights reserved.
7   See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
8 
9      This software is distributed WITHOUT ANY WARRANTY; without even
10      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11      PURPOSE.  See the above copyright notice for more information.
12 
13 =========================================================================*/
14 // See docs:
15 // http://www.swig.org/Doc1.3/Php.html
16 // http://www.swig.org/Doc1.3/SWIGPlus.html#SWIGPlus
17 
18 %module(docstring="A DICOM library",directors=1) gdcm
19 #pragma SWIG nowarn=302,303,312,362,383,389,401,503,504,509,510,514,516,842
20 
21 #if defined(SWIGPHP)
22 %{
23 #define SWIGPHP
24 %}
25 #endif
26 
27 %{
28 #include "gdcmTypes.h"
29 #include "gdcmASN1.h"
30 #include "gdcmSmartPointer.h"
31 #include "gdcmSwapCode.h"
32 #include "gdcmEvent.h"
33 #include "gdcmProgressEvent.h"
34 #include "gdcmAnonymizeEvent.h"
35 #include "gdcmDirectory.h"
36 #ifdef GDCM_BUILD_TESTING
37 #include "gdcmTesting.h"
38 #endif
39 #include "gdcmObject.h"
40 #include "gdcmPixelFormat.h"
41 #include "gdcmMediaStorage.h"
42 #include "gdcmTag.h"
43 #include "gdcmPrivateTag.h"
44 #include "gdcmVL.h"
45 #include "gdcmVR.h"
46 #include "gdcmVM.h"
47 #include "gdcmObject.h"
48 #include "gdcmValue.h"
49 #include "gdcmByteValue.h"
50 #include "gdcmDataElement.h"
51 #include "gdcmItem.h"
52 #include "gdcmSequenceOfItems.h"
53 #include "gdcmDataSet.h"
54 //#include "gdcmString.h"
55 //#include "gdcmCodeString.h"
56 #include "gdcmPreamble.h"
57 #include "gdcmFile.h"
58 #include "gdcmBitmap.h"
59 #include "gdcmIconImage.h"
60 #include "gdcmPixmap.h"
61 #include "gdcmImage.h"
62 #include "gdcmFragment.h"
63 #include "gdcmCSAHeader.h"
64 #include "gdcmPDBHeader.h"
65 #include "gdcmSequenceOfFragments.h"
66 #include "gdcmTransferSyntax.h"
67 #include "gdcmBasicOffsetTable.h"
68 //#include "gdcmLO.h"
69 #include "gdcmCSAElement.h"
70 #include "gdcmPDBElement.h"
71 #include "gdcmFileSet.h"
72 
73 #include "gdcmReader.h"
74 #include "gdcmPixmapReader.h"
75 #include "gdcmImageReader.h"
76 #include "gdcmWriter.h"
77 #include "gdcmPixmapWriter.h"
78 #include "gdcmImageWriter.h"
79 #include "gdcmStringFilter.h"
80 #include "gdcmGlobal.h"
81 #include "gdcmDicts.h"
82 #include "gdcmDict.h"
83 #include "gdcmCSAHeaderDict.h"
84 #include "gdcmDictEntry.h"
85 #include "gdcmCSAHeaderDictEntry.h"
86 #include "gdcmUIDGenerator.h"
87 #include "gdcmUUIDGenerator.h"
88 //#include "gdcmConstCharWrapper.h"
89 #include "gdcmScanner.h"
90 #include "gdcmAttribute.h"
91 #include "gdcmSubject.h"
92 #include "gdcmCommand.h"
93 #include "gdcmAnonymizer.h"
94 #include "gdcmFileAnonymizer.h"
95 #include "gdcmFileStreamer.h"
96 #include "gdcmSystem.h"
97 #include "gdcmTrace.h"
98 #include "gdcmUIDs.h"
99 #include "gdcmSorter.h"
100 #include "gdcmIPPSorter.h"
101 #include "gdcmSpectroscopy.h"
102 #include "gdcmPrinter.h"
103 #include "gdcmXMLPrinter.h"
104 #include "gdcmDumper.h"
105 #include "gdcmOrientation.h"
106 #include "gdcmFiducials.h"
107 #include "gdcmWaveform.h"
108 #include "gdcmPersonName.h"
109 #include "gdcmCurve.h"
110 #include "gdcmDICOMDIR.h"
111 #include "gdcmValidate.h"
112 #include "gdcmApplicationEntity.h"
113 #include "gdcmDictPrinter.h"
114 #include "gdcmFilenameGenerator.h"
115 #include "gdcmVersion.h"
116 #include "gdcmFilename.h"
117 #include "gdcmEnumeratedValues.h"
118 #include "gdcmPatient.h"
119 #include "gdcmStudy.h"
120 #include "gdcmUsage.h"
121 #include "gdcmMacroEntry.h"
122 #include "gdcmModuleEntry.h"
123 #include "gdcmNestedModuleEntries.h"
124 #include "gdcmMacro.h"
125 #include "gdcmMacros.h"
126 #include "gdcmModule.h"
127 #include "gdcmModules.h"
128 #include "gdcmDefs.h"
129 #include "gdcmIOD.h"
130 #include "gdcmIODs.h"
131 #include "gdcmTableEntry.h"
132 #include "gdcmDefinedTerms.h"
133 #include "gdcmSeries.h"
134 #include "gdcmIODEntry.h"
135 #include "gdcmRescaler.h"
136 #include "gdcmSegmentedPaletteColorLookupTable.h"
137 #include "gdcmUnpacker12Bits.h"
138 #include "gdcmDirectionCosines.h"
139 #include "gdcmTagPath.h"
140 #include "gdcmBitmapToBitmapFilter.h"
141 #include "gdcmPixmapToPixmapFilter.h"
142 #include "gdcmImageToImageFilter.h"
143 #include "gdcmSOPClassUIDToIOD.h"
144 #include "gdcmCoder.h"
145 #include "gdcmDecoder.h"
146 #include "gdcmCodec.h"
147 #include "gdcmImageCodec.h"
148 #include "gdcmJPEGCodec.h"
149 #include "gdcmJPEGLSCodec.h"
150 #include "gdcmJPEG2000Codec.h"
151 #include "gdcmPNMCodec.h"
152 #include "gdcmImageChangeTransferSyntax.h"
153 #include "gdcmFileChangeTransferSyntax.h"
154 #include "gdcmImageApplyLookupTable.h"
155 #include "gdcmSplitMosaicFilter.h"
156 #include "gdcmImageChangePhotometricInterpretation.h"
157 #include "gdcmImageChangePlanarConfiguration.h"
158 #include "gdcmImageFragmentSplitter.h"
159 #include "gdcmDataSetHelper.h"
160 #include "gdcmFileExplicitFilter.h"
161 #include "gdcmImageHelper.h"
162 #include "gdcmMD5.h"
163 #include "gdcmDummyValueGenerator.h"
164 #include "gdcmSHA1.h"
165 #include "gdcmBase64.h"
166 #include "gdcmCryptographicMessageSyntax.h"
167 #include "gdcmCryptoFactory.h"
168 #include "gdcmSpacing.h"
169 #include "gdcmIconImageGenerator.h"
170 #include "gdcmIconImageFilter.h"
171 
172 #include "gdcmSimpleSubjectWatcher.h"
173 #include "gdcmDICOMDIRGenerator.h"
174 #include "gdcmFileDerivation.h"
175 
176 #include "gdcmQueryBase.h"
177 #include "gdcmQueryFactory.h"
178 #include "gdcmBaseRootQuery.h"
179 #include "gdcmPresentationContext.h"
180 #include "gdcmPresentationContextGenerator.h"
181 #include "gdcmCompositeNetworkFunctions.h"
182 #include "gdcmServiceClassUser.h"
183 
184 #include "gdcmStreamImageReader.h"
185 
186 #include "gdcmRegion.h"
187 #include "gdcmBoxRegion.h"
188 #include "gdcmImageRegionReader.h"
189 
190 using namespace gdcm;
191 %}
192 
193 //%include "docstrings.i"
194 
195 // swig need to know what are uint16_t, uint8_t...
196 %include "stdint.i"
197 
198 // gdcm does not use std::string in its interface, but we do need it for the
199 // %extend (see below)
200 %include "std_string.i"
201 //%include "std_set.i"
202 %include "std_vector.i"
203 %include "std_pair.i"
204 %include "std_map.i"
205 %include "exception.i"
206 
207 // operator= is not needed in python AFAIK
208 %ignore operator=;                      // Ignore = everywhere.
209 %ignore operator++;                     // Ignore
210 
211 %define EXTEND_CLASS_PRINT_GENERAL(classfuncname,classname)
212 %extend classname
213 {
classfuncname()214   const char *classfuncname() {
215     static std::string buffer;
216     std::ostringstream os;
217     os << *self;
218     buffer = os.str();
219     return buffer.c_str();
220   }
221 };
222 %enddef
223 
224 #if defined(SWIGPHP)
225 %define EXTEND_CLASS_PRINT(classname)
226 EXTEND_CLASS_PRINT_GENERAL(__toString,classname)
227 %enddef
228 #endif
229 
230 //%feature("autodoc", "1")
231 %include "gdcmConfigure.h"
232 //%include "gdcmTypes.h"
233 //%include "gdcmWin32.h"
234 // I cannot include gdcmWin32.h without gdcmTypes.h, first. But gdcmTypes.h needs to know _MSC_VER at swig time...
235 #define GDCM_EXPORT
236 %include "gdcmLegacyMacro.h"
237 
238 // The following must be define early on as gdcmVL.h get included real early
239 %rename(GetValueLength) gdcm::VL::operator uint32_t;
240 //%csmethodmodifiers gdcm::VL::GetValueLength "private"
241 //%csmethodmodifiers GetValueLength "private"
242 //%rename(GetValue) VL::operator uint32_t ();
243 //  public static implicit operator int( MyType a )
244 //        {
245 //            return a.value;
246 //        }
247 %include "gdcmSwapCode.h"
248 
249 //%feature("director") Event;
250 //%feature("director") AnyEvent;
251 %include "gdcmEvent.h"
252 
253 %include "gdcmPixelFormat.h"
254 EXTEND_CLASS_PRINT(gdcm::PixelFormat)
255 %include "gdcmMediaStorage.h"
256 EXTEND_CLASS_PRINT(gdcm::MediaStorage)
257 //%rename(__getitem__) gdcm::Tag::operator[];
258 //%rename(this ) gdcm::Tag::operator[];
259 %include "gdcmTag.h"
260 EXTEND_CLASS_PRINT(gdcm::Tag)
261 %include "gdcmPrivateTag.h"
262 EXTEND_CLASS_PRINT(gdcm::PrivateTag)
263 
264 %include "gdcmProgressEvent.h"
265 //%feature("director") AnonymizeEvent;
266 %include "gdcmAnonymizeEvent.h"
267 
268 %include "gdcmVL.h"
269 EXTEND_CLASS_PRINT(gdcm::VL)
270 %include "gdcmVR.h"
271 EXTEND_CLASS_PRINT(gdcm::VR)
272 %include "gdcmVM.h"
273 EXTEND_CLASS_PRINT(gdcm::VM)
274 //%template (FilenameType) std::string;
275 %template (FilenamesType) std::vector<std::string>;
276 %include "gdcmDirectory.h"
277 EXTEND_CLASS_PRINT(gdcm::Directory)
278 %include "gdcmObject.h"
279 %include "gdcmValue.h"
280 EXTEND_CLASS_PRINT(gdcm::Value)
281 // Array marshaling for arrays of primitives
282 
283 
284 
285 
286 %apply char[] { char* buffer }
287 %ignore gdcm::ByteValue::WriteBuffer(std::ostream &os) const;
288 //%ignore gdcm::ByteValue::GetPointer() const;
289 //%ignore gdcm::ByteValue::GetBuffer(char *buffer, unsigned long length) const;
290 %include "gdcmByteValue.h"
291 EXTEND_CLASS_PRINT(gdcm::ByteValue)
292 %clear char* buffer;
293 
294 %apply char[] { const char* array }
295 
296 %include "gdcmASN1.h"
297 %include "gdcmSmartPointer.h"
298 %template(SmartPtrSQ) gdcm::SmartPointer<gdcm::SequenceOfItems>;
299 %template(SmartPtrFrag) gdcm::SmartPointer<gdcm::SequenceOfFragments>;
300 %include "gdcmDataElement.h"
301 EXTEND_CLASS_PRINT(gdcm::DataElement)
302 
303 %clear const char* array;
304 %extend gdcm::DataElement
305 {
SetArray(unsigned char array[],unsigned int nitems)306  void SetArray(unsigned char array[], unsigned int nitems) {
307    $self->SetByteValue((char*)array, nitems * sizeof(unsigned char) );
308  }
SetArray(char array[],unsigned int nitems)309  void SetArray(char array[], unsigned int nitems) {
310    $self->SetByteValue((char*)array, nitems * sizeof(char) );
311  }
SetArray(unsigned short array[],unsigned int nitems)312  void SetArray(unsigned short array[], unsigned int nitems) {
313    $self->SetByteValue((char*)array, nitems * sizeof(unsigned short) );
314  }
SetArray(short array[],unsigned int nitems)315  void SetArray(short array[], unsigned int nitems) {
316    $self->SetByteValue((char*)array, nitems * sizeof(short) );
317  }
SetArray(float array[],unsigned int nitems)318  void SetArray(float array[], unsigned int nitems) {
319    $self->SetByteValue((char*)array, nitems * sizeof(float) );
320  }
SetArray(double array[],unsigned int nitems)321  void SetArray(double array[], unsigned int nitems) {
322    $self->SetByteValue((char*)array, nitems * sizeof(double) );
323  }
324 };
325 
326 %include "gdcmItem.h"
327 EXTEND_CLASS_PRINT(gdcm::Item)
328 /*
329  The following line is very important it properly convert :
330 SWIGTYPE_p_std__vectorT_int_t__size_type -> uint
331 */
332 %template() std::vector< gdcm::Item >;
333 %include "gdcmSequenceOfItems.h"
334 EXTEND_CLASS_PRINT(gdcm::SequenceOfItems)
335 %rename (PHPDataSet) SWIGDataSet;
336 %rename (PHPTagToValue) SWIGTagToValue;
337 %include "gdcmDataSet.h"
338 EXTEND_CLASS_PRINT(gdcm::DataSet)
339 //%include "gdcmString.h"
340 //%include "gdcmCodeString.h"
341 //%include "gdcmTransferSyntax.h"
342 %include "gdcmPhotometricInterpretation.h"
343 EXTEND_CLASS_PRINT(gdcm::PhotometricInterpretation)
344 %include "gdcmObject.h"
345 %include "gdcmLookupTable.h"
346 EXTEND_CLASS_PRINT(gdcm::LookupTable)
347 %include "gdcmOverlay.h"
348 EXTEND_CLASS_PRINT(gdcm::Overlay)
349 //%include "gdcmVR.h"
350 //%template (DataElementSet) std::set<gdcm::DataElement>;
351 %include "gdcmPreamble.h"
352 EXTEND_CLASS_PRINT(gdcm::Preamble)
353 %include "gdcmTransferSyntax.h"
354 EXTEND_CLASS_PRINT(gdcm::TransferSyntax)
355 %include "gdcmFileMetaInformation.h"
356 EXTEND_CLASS_PRINT(gdcm::FileMetaInformation)
357 
358 //%template(File) gdcm::SmartPointer<gdcm::File>;
359 //%ignore gdcm::File;
360 
361 %include "gdcmFile.h"
362 EXTEND_CLASS_PRINT(gdcm::File)
363 //%include "gdcm_arrays_csharp.i"
364 
365 %apply char[] { char* buffer }
366 %apply unsigned int[] { unsigned int dims[2] }
367 %apply unsigned int[] { unsigned int dims[3] }
368 
369 //%apply byte OUTPUT[] { char* buffer } ;
370 //%ignore gdcm::Pixmap::GetBuffer(char*) const;
371 //%apply byte FIXED[] { char *buffer }
372 //%csmethodmodifiers gdcm::Pixmap::GetBuffer "public unsafe";
373 //%define %cs_marshal_array(TYPE, CSTYPE)
374 //       %typemap(ctype)  TYPE[] "void*"
375 //       %typemap(imtype, inattributes="[MarshalAs(UnmanagedType.LPArray)]") TYPE[] "CSTYPE[]"
376 //       %typemap(cstype) TYPE[] "CSTYPE[]"
377 //       %typemap(in)     TYPE[] %{ $1 = (TYPE*)$input; %}
378 //       %typemap(csin)   TYPE[] "$csinput"
379 //%enddef
380 //%cs_marshal_array(char, byte)
381 %include "gdcmBitmap.h"
382 EXTEND_CLASS_PRINT(gdcm::Bitmap)
383 
384 %include "gdcmIconImage.h"
385 EXTEND_CLASS_PRINT(gdcm::IconImage)
386 %include "gdcmPixmap.h"
387 EXTEND_CLASS_PRINT(gdcm::Pixmap)
388 
389 %include "gdcmImage.h"
390 EXTEND_CLASS_PRINT(gdcm::Image)
391 %include "gdcmFragment.h"
392 EXTEND_CLASS_PRINT(gdcm::Fragment)
393 %include "gdcmPDBElement.h"
394 EXTEND_CLASS_PRINT(gdcm::PDBElement)
395 %include "gdcmPDBHeader.h"
396 EXTEND_CLASS_PRINT(gdcm::PDBHeader)
397 %include "gdcmCSAElement.h"
398 EXTEND_CLASS_PRINT(gdcm::CSAElement)
399 %include "gdcmCSAHeader.h"
400 EXTEND_CLASS_PRINT(gdcm::CSAHeader)
401 %include "gdcmSequenceOfFragments.h"
402 EXTEND_CLASS_PRINT(gdcm::SequenceOfFragments)
403 %include "gdcmBasicOffsetTable.h"
404 EXTEND_CLASS_PRINT(gdcm::BasicOffsetTable)
405 //%include "gdcmLO.h"
406 %include "gdcmFileSet.h"
407 EXTEND_CLASS_PRINT(gdcm::FileSet)
408 
409 %include "gdcmGlobal.h"
410 EXTEND_CLASS_PRINT(gdcm::Global)
411 
412 %include "gdcmDictEntry.h"
413 EXTEND_CLASS_PRINT(gdcm::DictEntry)
414 %include "gdcmCSAHeaderDictEntry.h"
415 EXTEND_CLASS_PRINT(gdcm::CSAHeaderDictEntry)
416 
417 %include "gdcmDict.h"
418 EXTEND_CLASS_PRINT(gdcm::Dict)
419 %include "gdcmCSAHeaderDict.h"
420 EXTEND_CLASS_PRINT(gdcm::CSAHeaderDictEntry)
421 %include "gdcmDicts.h"
422 EXTEND_CLASS_PRINT(gdcm::Dicts)
423 
424 //%template (TagSetType) std::set<gdcm::Tag>;
425 %ignore gdcm::Reader::SetStream;
426 %include "gdcmReader.h"
427 //EXTEND_CLASS_PRINT(gdcm::Reader)
428 %include "gdcmPixmapReader.h"
429 //EXTEND_CLASS_PRINT(gdcm::PixmapReader)
430 %include "gdcmImageReader.h"
431 //EXTEND_CLASS_PRINT(gdcm::ImageReader)
432 %include "gdcmWriter.h"
433 //EXTEND_CLASS_PRINT(gdcm::Writer)
434 %include "gdcmPixmapWriter.h"
435 //EXTEND_CLASS_PRINT(gdcm::PixmapWriter)
436 %include "gdcmImageWriter.h"
437 //EXTEND_CLASS_PRINT(gdcm::ImageWriter)
438 %template (PairString) std::pair<std::string,std::string>;
439 //%template (MyM) std::map<gdcm::Tag,gdcm::ConstCharWrapper>;
440 %include "gdcmStringFilter.h"
441 //EXTEND_CLASS_PRINT(gdcm::StringFilter)
442 %include "gdcmUIDGenerator.h"
443 //EXTEND_CLASS_PRINT(gdcm::UIDGenerator)
444 %include "gdcmUUIDGenerator.h"
445 //EXTEND_CLASS_PRINT(gdcm::UUIDGenerator)
446 //%template (ValuesType)      std::set<std::string>;
447 %rename (CSharpTagToValue) SWIGTagToValue;
448 #define GDCM_STATIC_ASSERT(x)
449 %include "gdcmAttribute.h"
450 %include "gdcmSubject.h"
451 %include "gdcmCommand.h"
452 
453 %template(SmartPtrScan) gdcm::SmartPointer<gdcm::Scanner>;
454 %include "gdcmScanner.h"
455 EXTEND_CLASS_PRINT(gdcm::Scanner)
456 
457 %template(SmartPtrAno) gdcm::SmartPointer<gdcm::Anonymizer>;
458 //%ignore gdcm::Anonymizer::Anonymizer;
459 
460 
461 //%template(Anonymizer) gdcm::SmartPointer<gdcm::Anonymizer>;
462 //
463 //%ignore gdcm::Anonymizer;
464 //%feature("unref") Anonymizer "coucou $this->Delete();"
465 // http://www.swig.org/Doc1.3/SWIGPlus.html#SWIGPlus%5Fnn34
466 %include "gdcmAnonymizer.h"
467 %apply char[] { char* value_data }
468 %include "gdcmFileAnonymizer.h"
469 %clear char* value_data;
470 
471 %apply char[] { char* array }
472 %template(SmartPtrFStreamer) gdcm::SmartPointer<gdcm::FileStreamer>;
473 %include "gdcmFileStreamer.h"
474 %clear char* array;
475 
476 //EXTEND_CLASS_PRINT(gdcm::Anonymizer)
477 //%extend gdcm::Anonymizer
478 //{
479 //%typemap(cscode) gdcm::Anonymizer
480 //%{
481 //  public Anonymizer() : this(gdcmPINVOKE.Anonymizer_New(), false) {
482 //  }
483 //%}
484 //};
485 
486 // System is a namespace in C#, need to rename to something different
487 %rename (PosixEmulation) System;
488 %include "gdcmSystem.h"
489 //EXTEND_CLASS_PRINT(gdcm::System)
490 
491 %include "gdcmTrace.h"
492 //EXTEND_CLASS_PRINT(gdcm::Trace)
493 %include "gdcmUIDs.h"
494 EXTEND_CLASS_PRINT(gdcm::UIDs)
495 //%feature("director") gdcm::IPPSorter;
496 
497 ////////////////////////////////////////////////////////////////////////////
498 // cs_callback is used to marshall callbacks. It allows a C# function to
499 // be passed to C++ as a function pointer through P/Invoke, which has the
500 // ability to make unmanaged-to-managed thunks. It does NOT allow you to
501 // pass C++ function pointers to C#.
502 //
503 // I would have liked to support FastDelegate<...> as the C++ argument
504 // type; this would have involved the cs_callback2 macro... but it turns
505 // out not to work under default project settings because .NET functions
506 // use the __stdcall calling convention, but FastDelegate uses the default
507 // convention which tends to be something else (__fastcall?). So nevermind.
508 //
509 // Anyway, to use this macro you need to declare the function pointer type
510 // TYPE in the appropriate header file (including the calling convention),
511 // declare a delegate named after CSTYPE in your C# project, and use this
512 // macro in your .i file. Here is an example:
513 //
514 // in C++ header file (%include this header in your .i file):
515 // typedef void (__stdcall *Callback)(PCWSTR);
516 // void Foo(Callback c);
517 //
518 // in C# code:
519 // public delegate void CppCallback([MarshalAs(UnmanagedType.LPWStr)] string message);
520 //
521 // in your .i file:
522 // %cs_callback(Callback, CppCallback)
523 //
524 // Remember to invoke %cs_callback before any code involving Callback.
525 %define %cs_callback(TYPE, CSTYPE)
526        %typemap(ctype) TYPE, TYPE& "void*"
527        %typemap(in) TYPE  %{ $1 = (TYPE)$input; %}
528        %typemap(in) TYPE& %{ $1 = (TYPE*)&$input; %}
529        %typemap(imtype, out="IntPtr") TYPE, TYPE& "CSTYPE"
530        %typemap(cstype, out="IntPtr") TYPE, TYPE& "CSTYPE"
531        %typemap(csin) TYPE, TYPE& "$csinput"
532 %enddef
533 %define %cs_callback2(TYPE, CTYPE, CSTYPE)
534        %typemap(ctype) TYPE "CTYPE"
535        %typemap(in) TYPE %{ $1 = (TYPE)$input; %}
536        %typemap(imtype, out="IntPtr") TYPE "CSTYPE"
537        %typemap(cstype, out="IntPtr") TYPE "CSTYPE"
538        %typemap(csin) TYPE "$csinput"
539 %enddef
540 
541 %cs_callback(Sorter::SortFunction, Sorter::CppSortFunction)
542 
543 %include "gdcmSorter.h"
544 EXTEND_CLASS_PRINT(gdcm::Sorter)
545 %include "gdcmIPPSorter.h"
546 EXTEND_CLASS_PRINT(gdcm::IPPSorter)
547 %include "gdcmSpectroscopy.h"
548 //EXTEND_CLASS_PRINT(gdcm::Spectroscopy)
549 %include "gdcmPrinter.h"
550 //EXTEND_CLASS_PRINT(gdcm::Printer)
551 %include "gdcmXMLPrinter.h"
552 //EXTEND_CLASS_PRINT(gdcm::XMLPrinter)
553 %include "gdcmDumper.h"
554 //EXTEND_CLASS_PRINT(gdcm::Dumper)
555 %include "gdcmOrientation.h"
556 EXTEND_CLASS_PRINT(gdcm::Orientation)
557 %include "gdcmDirectionCosines.h"
558 EXTEND_CLASS_PRINT(gdcm::DirectionCosines)
559 
560 %include "gdcmFiducials.h"
561 %include "gdcmWaveform.h"
562 %include "gdcmPersonName.h"
563 %include "gdcmCurve.h"
564 %include "gdcmDICOMDIR.h"
565 %include "gdcmValidate.h"
566 %include "gdcmApplicationEntity.h"
567 %include "gdcmDictPrinter.h"
568 %include "gdcmFilenameGenerator.h"
569 %include "gdcmVersion.h"
570 EXTEND_CLASS_PRINT(gdcm::Version)
571 %include "gdcmFilename.h"
572 %include "gdcmEnumeratedValues.h"
573 %include "gdcmPatient.h"
574 %include "gdcmStudy.h"
575 %include "gdcmUsage.h"
576 %include "gdcmMacroEntry.h"
577 %include "gdcmModuleEntry.h"
578 EXTEND_CLASS_PRINT(gdcm::ModuleEntry)
579 %include "gdcmNestedModuleEntries.h"
580 %include "gdcmMacro.h"
581 %include "gdcmMacros.h"
582 %include "gdcmModule.h"
583 %include "gdcmModules.h"
584 %include "gdcmDefs.h"
585 %include "gdcmIOD.h"
586 %include "gdcmIODs.h"
587 %include "gdcmTableEntry.h"
588 %include "gdcmDefinedTerms.h"
589 %include "gdcmSeries.h"
590 %include "gdcmIODEntry.h"
591 
592 %apply char[] { char* out }
593 %apply char[] { char* in }
594 %include "gdcmRescaler.h"
595 //EXTEND_CLASS_PRINT(gdcm::Rescaler)
596 %extend gdcm::Rescaler
597 {
Rescale(double out[],const short in[],size_t n)598   bool Rescale(double out[], const short in[], size_t n) {
599     return $self->Rescale((char*)out, (char*)in, n);
600   }
601 }
602 %clear char* out;
603 %clear char* in;
604 
605 %include "gdcmSegmentedPaletteColorLookupTable.h"
606 %include "gdcmUnpacker12Bits.h"
607 
608 %include "gdcmConfigure.h"
609 #ifdef GDCM_BUILD_TESTING
610 %include "gdcmTesting.h"
611 %ignore gdcm::Testing::ComputeMD5(const char *, const unsigned long , char []);
612 %ignore gdcm::Testing::ComputeFileMD5(const char*, char []);
613 %extend gdcm::Testing
614 {
ComputeFileMD5(const char * filename)615   static const char *ComputeFileMD5(const char *filename) {
616     static char buffer[33];
617     gdcm::Testing::ComputeFileMD5(filename, buffer);
618     return buffer;
619   }
620 };
621 #endif
622 %include "gdcmTagPath.h"
623 %include "gdcmBitmapToBitmapFilter.h"
624 %include "gdcmPixmapToPixmapFilter.h"
625 //%ignore gdcm::ImageToImageFilter::GetOutput() const;
626 %include "gdcmImageToImageFilter.h"
627 %include "gdcmSOPClassUIDToIOD.h"
628 //%feature("director") Coder;
629 //%include "gdcmCoder.h"
630 //%feature("director") Decoder;
631 //%include "gdcmDecoder.h"
632 //%feature("director") Codec;
633 //%include "gdcmCodec.h"
634 %feature("director") ImageCodec;
635 %include "gdcmImageCodec.h"
636 %include "gdcmJPEGCodec.h"
637 %include "gdcmJPEGLSCodec.h"
638 %include "gdcmJPEG2000Codec.h"
639 %include "gdcmPNMCodec.h"
640 %include "gdcmImageChangeTransferSyntax.h"
641 %template(SmartPtrFCTS) gdcm::SmartPointer<gdcm::FileChangeTransferSyntax>;
642 %include "gdcmFileChangeTransferSyntax.h"
643 %include "gdcmImageApplyLookupTable.h"
644 %include "gdcmSplitMosaicFilter.h"
645 %include "gdcmImageChangePhotometricInterpretation.h"
646 %include "gdcmImageChangePlanarConfiguration.h"
647 %include "gdcmImageFragmentSplitter.h"
648 %include "gdcmDataSetHelper.h"
649 %include "gdcmFileExplicitFilter.h"
650 %template (DoubleArrayType) std::vector<double>;
651 %template (UShortArrayType) std::vector<unsigned short>;
652 %template (UIntArrayType) std::vector<unsigned int>;
653 %include "gdcmImageHelper.h"
654 %include "gdcmMD5.h"
655 %include "gdcmDummyValueGenerator.h"
656 %include "gdcmSHA1.h"
657 //%include "gdcmBase64.h"
658 %include "gdcmCryptographicMessageSyntax.h"
659 %include "gdcmCryptoFactory.h"
660 %include "gdcmSpacing.h"
661 %include "gdcmIconImageGenerator.h"
662 %include "gdcmIconImageFilter.h"
663 
664 %feature("director") SimpleSubjectWatcher;
665 %include "gdcmSimpleSubjectWatcher.h"
666 %include "gdcmDICOMDIRGenerator.h"
667 %include "gdcmFileDerivation.h"
668 
669 // MEXD:
670 %template(DataSetArrayType) std::vector< gdcm::DataSet >;
671 %template(FileArrayType) std::vector< gdcm::File >;
672 %template(PresentationContextArrayType) std::vector< gdcm::PresentationContext >;
673 %template(KeyValuePairType) std::pair< gdcm::Tag, std::string>;
674 %template(KeyValuePairArrayType) std::vector< std::pair< gdcm::Tag, std::string> >;
675 %template(TagArrayType) std::vector< gdcm::Tag >;
676 %include "gdcmQueryBase.h"
677 %include "gdcmBaseRootQuery.h"
678 %include "gdcmQueryFactory.h"
679 %template(CharSetArrayType) std::vector< gdcm::ECharSet >;
680 %include "gdcmCompositeNetworkFunctions.h"
681 %include "gdcmPresentationContext.h"
682 //EXTEND_CLASS_PRINT(gdcm::PresentationContext)
683 %include "gdcmPresentationContextGenerator.h"
684 typedef int64_t time_t; // FIXME
685 %include "gdcmServiceClassUser.h"
686 %apply char[] { char* inReadBuffer }
687 %include "gdcmStreamImageReader.h"
688 %clear char* inReadBuffer;
689 %include "gdcmRegion.h"
690 EXTEND_CLASS_PRINT(gdcm::Region)
691 %include "gdcmBoxRegion.h"
692 EXTEND_CLASS_PRINT(gdcm::BoxRegion)
693 %apply char[] { char* inreadbuffer }
694 %include "gdcmImageRegionReader.h"
695 %clear char* inreadbuffer;
696