#ifndef SWIG_LIBCORPUS2_RELATION_I #define SWIG_LIBCORPUS2_RELATION_I %module libcorpusrelation %{ #include <libcorpus2/relation.h> %} %include "std_defs.i" %include "std_string.i" %include "boost_shared_ptr.i" // %feature("notabstract") Corpus2::TokenMetaData; %template(DirectionPointPtr) boost::shared_ptr<Corpus2::DirectionPoint>; %template(ConstDirectionPointPtr) boost::shared_ptr<const Corpus2::DirectionPoint>; %template(RelationPtr) boost::shared_ptr<Corpus2::Relation>; %template(ConstRelationPtr) boost::shared_ptr<const Corpus2::Relation>; namespace Corpus2 { class DirectionPoint { public: DirectionPoint(const std::string, const std::string, const int); const std::string sentence_id() const; const std::string channel_name() const; int annotation_number() const; }; class Relation { public: /* Relation(const std::string& name, const boost::shared_ptr<const DirectionPoint> from, const boost::shared_ptr<const DirectionPoint> to); */ Relation(const std::string& name, const DirectionPoint& from, const DirectionPoint& to); ~Relation(); /* It must be renamed because "from" is python keyword */ %rename(rel_from) from() const; const boost::shared_ptr<const DirectionPoint>& from() const; /* Also "to" for consistency should be renamed to rel_to */ %rename(rel_to) to() const; const boost::shared_ptr<const DirectionPoint>& to() const; /* ...and "name" to rel_name */ %rename(rel_name) name() const; const std::string name() const; }; } using namespace std; using namespace Corpus2; #endif /* SWIG_LIBCORPUS2_RELATION_I */