%module pmd
+
%{
#include <pmd.h>
-using namespace meshio;
-using namespace pmd;
%}
-%include "std_vector.i"
-%include "std_wstring.i"
-%include "../include/color.h"
-%include "../include/la.h"
-%include "../include/pmd.h"
+%include "../../src/pmd.h"
+%include "../../src/color.h"
+%include "../../src/la.h"
+%include "../../src/text.h"
+%include "std_pair.i"
+%include "std_vector.i"
%template(VertexVector) std::vector<meshio::pmd::Vertex>;
-%template(MaterialVector) std::vector<meshio::pmd::Material*>;
+%template(MaterialVector) std::vector<meshio::pmd::Material>;
%template(BoneVector) std::vector<meshio::pmd::Bone>;
%template(IKVector) std::vector<meshio::pmd::IK>;
%template(MorphVector) std::vector<meshio::pmd::Morph>;
%template(ConstraintVector) std::vector<meshio::pmd::Constraint>;
%template(UintVector) std::vector<unsigned int>;
%template(UshortVector) std::vector<unsigned short>;
-%template(Vector3Vector) std::vector<meshio::pmd::Vector3>;
+%template(Vector3Vector) std::vector<meshio::Vector3>;
%template(PBoneVector) std::vector<meshio::pmd::Bone*>;
-
-///////////////////////////////////////////////////////////////////////////////
-// vertices
-///////////////////////////////////////////////////////////////////////////////
-%inline %{
-//! Thin wrapper for ONLY the increment operator
-void _vertices_incr(std::vector<meshio::pmd::Vertex>::const_iterator* iter)
-{
- // increment the iterator
- ++(*iter);
-}
-%}
-
-%extend meshio::pmd::IO {
-%pythoncode {
- def each_vertex(self):
- iter = self._beginVertices()
- while True:
- vertex = self._dereferenceVertex(iter)
- if vertex:
- _vertices_incr(iter)
- yield vertex
- else:
- break
-%}
-
-//! get the first element in the vector
-std::vector<meshio::pmd::Vertex>::const_iterator* _beginVertices()
-{
- return new std::vector<meshio::pmd::Vertex>::const_iterator(
- ($self->vertices.begin()));
-}
-
-//! dereference the iterator; return NULL if at the end
-const meshio::pmd::Vertex* _dereferenceVertex(
- const std::vector<meshio::pmd::Vertex>::const_iterator* iter )
-{
- // if at the end, return NULL
- if (*iter == ($self)->vertices.end() ) {
- return NULL;
- }
- // otherwise, return the face to which this iterator points
- return &(**iter);
-}
-}
+%template(BoneGroupVector) std::vector<meshio::pmd::BoneGroup>;
+%template(DisplayPair) std::pair<unsigned short, unsigned char>;
+%template(BoneDisplayVector) std::vector<std::pair<unsigned short, unsigned char> >;
+%template(fixed_string_20) meshio::fixed_string<20>;