Skip to content
Snippets Groups Projects
strset.i 1.47 KiB
Newer Older
#ifndef SWIG_LIBWCCL_STRSET_I
#define SWIG_LIBWCCL_STRSET_I

%module libcclstrset
%{
  #include <libwccl/values/value.h>
  #include <libwccl/values/strset.h>
  #include <boost/unordered_set.hpp>
  #include <libcorpus2/lexeme.h>
%}

%include "std_string.i"
%include "std_set.i"

%feature("notabstract") Wccl::StrSet;

%template(UnicodeStringMap) std::set<UnicodeString>;

namespace Wccl {
  class StrSet : public Value {
  public:
    const char* get_type_name() const { return type_name; }
    static std::string var_repr(const std::string &var_name);
    std::string make_var_repr(const std::string &var_name) const {
      return var_repr(var_name);
    }

    typedef boost::unordered_set<UnicodeString> value_type;

    StrSet();
    explicit StrSet(const value_type& s);

    const value_type& get_value() const;
    void set_value(const value_type& set);
    const value_type& contents() const;
    value_type& contents();
    void swap(StrSet& ss);
  
    // TEST IT!
    void insert(const UnicodeString& u);
    void insert_utf8(const std::string& u);

    int size() const;
    bool empty() const;
    bool is_subset_of(const StrSet& other) const;
    bool intersects(const StrSet& other) const;
    bool equals(const StrSet& other) const;
    std::string to_raw_string() const;

    // 
    UnicodeString to_raw_string_u() const;

    //
    std::set<UnicodeString> to_std_set() const;
  };
}

using namespace std;
using namespace Wccl;

#endif /* SWIG_LIBWCCL_STRSET_I */