#ifndef SWIG_LIBCORPUS2_CHUNK_I
#define SWIG_LIBCORPUS2_CHUNK_I

%module libcorpuschunk
%{
  #include <libcorpus2/chunk.h>
%}


%include "std_set.i"
%include "std_map.i"
%include "std_pair.i"
%include "std_string.i"
%include "std_vector.i"
%include "boost_shared_ptr.i"

%include "libcorpussentence.i"

%template(ChunkPtr) boost::shared_ptr<Corpus2::Chunk>;
%template(SentencePtrVector) std::vector<boost::shared_ptr<Sentence> >;
%template(attr_map_t) std::map<std::string, std::string>;

namespace Corpus2 {
  class Chunk {
  public:
    Chunk();
    ~Chunk();

    /* --------------------------------------------------------------------- */

    boost::shared_ptr<Chunk> clone_shared() const;

    bool empty() const;
    size_t size() 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);

    std::vector< boost::shared_ptr<Sentence> >& sentences();
    const std::vector< boost::shared_ptr<Sentence> >& sentences() const;
    void append(const boost::shared_ptr<Sentence>& s);

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

%template(ChunkPtrVector) std::vector<boost::shared_ptr<Chunk> >;
using namespace std;
using namespace Corpus2;

#endif /* SWIG_LIBCORPUS2_CHUNK_I */