Skip to content
Snippets Groups Projects
Commit fd7449df authored by Paweł Kędzia's avatar Paweł Kędzia
Browse files

Added wrappers for tag, tagset and tagsetmanager.

parent 608d1666
No related merge requests found
/**
* Wrapper for boost shared_ptr
*/
#ifndef SWIG_BOOST_SHAREDPTR
#define SWIG_BOOST_SHAREDPTR
%module swig_boost_shared_ptr
%{
%}
namespace boost {
template<class T> class shared_ptr {
public:
shared_ptr();
shared_ptr(T * p);
T* operator->();
private:
T * px;
int pn;
};
}
#endif /* SWIG_BOOST_SHAREDPTR */
#ifndef SWIG_LIBCCL_PARSER_I
#define SWIG_LIBCCL_PARSER_I
%module libcclparser
%{
#include <libwccl/parser/Parser.h>
%}
%include "libcorpustagsetmanager.i"
%include "std_string.i"
%include "std_vector.i"
namespace Wccl {
class Parser {
public:
Parser(const Corpus2::Tagset&);
~TagsetManager();
/* --------------------------------------------------------------------- */
};
inline const Tagset& get_named_tagset(const std::string& name);
}
using namespace std;
using namespace Corpus2;
#endif /* SWIG_LIBCCL_PARSER_I */
#ifndef SWIG_LIBCORPUS2_TAG_I
#define SWIG_LIBCORPUS2_TAG_I
%module libcorpustag
%{
#include <libcorpus2/tag.h>
#include <boost/cstdint.hpp>
%}
%include "std_string.i"
%include "std_vector.i"
/* Typedefs */
%inline %{
typedef std::bitset<64> mask_t;
%}
%feature("notabstract") Corpus2::Tag;
namespace Corpus2 {
class Tag {
public:
Tag();
explicit Tag(mask_t pos);
Tag(mask_t pos, mask_t values);
/* --------------------------------------------------------------------- */
~Tag();
/* --------------------------------------------------------------------- */
bool is_null() const;
int pos_count() const;
int get_pos_index() const;
mask_t get_values() const;
mask_t get_pos() const;
Tag& combine_with(const Tag& other);
Tag get_combined(const Tag& other) const;
Tag& mask_with(const Tag& other);
Tag get_masked(const Tag& other);
std::string raw_dump() const;
bool operator<(const Tag& other) const;
bool operator==(const Tag& other) const;
};
size_t hash_value(const Tag &tag);
}
using namespace std;
using namespace Corpus2;
#endif /* SWIG_LIBCORPUS2_TAG_I */
#ifndef SWIG_LIBCORPUS2_TAGSET_I
#define SWIG_LIBCORPUS2_TAGSET_I
%module libcorpustagset
%{
#include <libcorpus2/tagset.h>
%}
%include "libcorpustag.i"
%include "std_string.i"
%include "std_vector.i"
%feature("notabstract") Corpus2::Tagset;
namespace Corpus2 {
class Tagset {
public:
Tagset();
static Tagset from_data(const char*);
/* --------------------------------------------------------------------- */
Tag parse_symbol(const std::string& s) const;
/* --------------------------------------------------------------------- */
std::vector<Tag> parse_tag(const char* c, bool allow_extra) const;
Tag parse_simple_tag(const char* c, bool allow_extra) const;
Tag make_ign_tag() const;
/* --------------------------------------------------------------------- */
std::string tag_to_string(const Tag& tag) const;
std::string tag_to_no_opt_string(const Tag &tag) const;
/* --------------------------------------------------------------------- */
std::vector<std::string> tag_to_symbol_string_vector(const Tag& tag, bool
compress_attribites = true) const;
std::string tag_to_symbol_string(const Tag& tag,
bool compress_attribites = true) const;
/* --------------------------------------------------------------------- */
size_t tag_size(const Tag& tag) const;
bool tag_is_singular(const Tag& tag) const;
/* --------------------------------------------------------------------- */
std::vector<Tag> split_tag(const Tag& tag) const;
/* --------------------------------------------------------------------- */
int pos_count() const;
int attribute_count() const;
int value_count() const;
size_t size() const;
double size_extra() const;
/* --------------------------------------------------------------------- */
std::string name() const;
void set_name(const std::string& name);
std::string id_string() const;
std::string id_string(const Tag& tag) const;
};
}
using namespace std;
using namespace Corpus2;
#endif /* SWIG_LIBCORPUS2_TAGSET_I */
#ifndef SWIG_LIBCORPUS2_TAGSETMANAGER_I
#define SWIG_LIBCORPUS2_TAGSETMANAGER_I
%module libcorpustagsetmanager
%{
#include <libcorpus2/tagsetmanager.h>
%}
%include "libcorpustagset.i"
%include "std_string.i"
%include "std_vector.i"
%feature("notabstract") Corpus2::TagsetManager;
namespace Corpus2 {
class TagsetManager {
public:
TagsetManager();
~TagsetManager();
/* --------------------------------------------------------------------- */
};
inline const Tagset& get_named_tagset(const std::string& name);
}
using namespace std;
using namespace Corpus2;
#endif /* SWIG_LIBCORPUS2_TAGSETMANAGER_I */
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment