polyvox/library/bindings/PolyVoxCore.i
Matt Williams 2e98414fd3 Start updating the library bindings
Nothing works at the moment and the bindings are likely going to have to
change significantly.

In the meantime just disable them by default to avoid confusion.
2014-12-10 15:47:54 +00:00

94 lines
2.9 KiB
OpenEdge ABL

%module PolyVoxCore
#define POLYVOX_API
%include "Impl/TypeDef.h"
#define __attribute__(x) //Silence DEPRECATED errors
//This macro allows us to use Python properties on our classes
%define PROPERTY(type,name,getter,setter)
%extend type {
%pythoncode %{
__swig_getmethods__["name"] = getter
__swig_setmethods__["name"] = setter
if _newclass: name = property(getter, setter)
%}
};
%enddef
//Put this in an %extend section to wrap operator<< as __str__
%define STR()
const char* __str__() {
std::ostringstream out;
out << *$self;
return out.str().c_str();
}
%enddef
//Centralise this to avoid repeating ourselves
//This macro will be called in the volume interface files to define the various volume types.
%define VOLUMETYPES(class)
%template(class ## int8) PolyVox::class<int8_t>;
//%template(class ## int16) PolyVox::class<int16_t>;
//%template(class ## int32) PolyVox::class<int32_t>;
//%template(class ## uint8) PolyVox::class<uint8_t>;
//%template(class ## uint16) PolyVox::class<uint16_t>;
//%template(class ## uint32) PolyVox::class<uint32_t>;
//%template(class ## float) PolyVox::class<float>;
%enddef
//Template based on voxel type
%define EXTRACTOR(class, volumetype)
%template(class ## volumetype ## int8) PolyVox::class<PolyVox::volumetype<int8_t> >;
//%template(class ## volumetype ## int16) PolyVox::class<PolyVox::volumetype<int16_t> >;
//%template(class ## volumetype ## int32) PolyVox::class<PolyVox::volumetype<int32_t> >;
//%template(class ## volumetype ## uint8) PolyVox::class<PolyVox::volumetype<uint8_t> >;
//%template(class ## volumetype ## uint16) PolyVox::class<PolyVox::volumetype<uint16_t> >;
//%template(class ## volumetype ## uint32) PolyVox::class<PolyVox::volumetype<uint32_t> >;
//%template(class ## volumetype ## float) PolyVox::class<PolyVox::volumetype<float> >;
%enddef
//Template based on volume type
%define EXTRACTORS(shortname)
EXTRACTOR(shortname, PagedVolume)
EXTRACTOR(shortname, RawVolume)
%enddef
%feature("autodoc", "1");
#ifdef SWIGPYTHON
//This will rename "operator=" to "assign" since Python doesn't have assignment
%rename(assign) *::operator=;
#endif
#ifdef SWIGCSHARP
//These operators are not wrappable in C# and their function is provided by other means
%ignore *::operator=;
%ignore *::operator+=;
%ignore *::operator-=;
%ignore *::operator*=;
%ignore *::operator/=;
%ignore *::operator<<; //This is covered by STR()
#endif
%include "stdint.i"
%include "std_vector.i"
%include "Vector.i"
%include "DefaultMarchingCubesController.i"
%include "Region.i"
//%include "Chunk.i"
//%include "CompressedBlock.i"
//%include "UncompressedBlock.i"
//%include "BlockCompressor.i"
//%include "Pager.i"
//%include "FilePager.i"
//%include "MinizBlockCompressor.i"
//%include "RLEBlockCompressor.i"
%include "BaseVolume.i"
//%include "RawVolume.i"
%include "PagedVolume.i"
//%include "VertexTypes.i"
//%include "SurfaceMesh.i"
////%include "MarchingCubesSurfaceExtractor.i"
////%include "CubicSurfaceExtractor.i"
//%include "Raycast.i"
//%include "Picking.i"