#ifndef SWIG_LIBCORPUS2_TOKENMETADATA_I
#define SWIG_LIBCORPUS2_TOKENMETADATA_I

%module libcorpustokenmetadata
%{
  #include <libcorpus2/tokenmetadata.h>
%}

%include "std_map.i"
%include "std_string.i"

%include "std_defs.i"
%include "boost_shared_ptr.i"

%feature("notabstract") Corpus2::TokenMetaData;

%template(TokenMetaDataPtr) boost::shared_ptr<Corpus2::TokenMetaData>;
%template(ConstTokenMetaDataPtr) boost::shared_ptr<const Corpus2::TokenMetaData>;

namespace Corpus2 {
  class TokenMetaData {
  public:
    TokenMetaData();
    ~TokenMetaData();
    
    boost::shared_ptr<TokenMetaData> clone() const;
    bool has_attribute(const std::string& name) const;
    std::string get_attribute(const std::string& name) const;
    void set_attribute(const std::string& name, const std::string& value);

    typedef std::map<std::string, std::string> attr_map_t;
    const attr_map_t& attributes() const;
  };
}

using namespace std;
using namespace Corpus2;

#endif /* SWIG_LIBCORPUS2_TOKENMETADATA_I */