diff --git a/CMakeLists.txt b/CMakeLists.txt index ec1f3906405d77b77330dc9e7686b796b062550b..02dd9025879006b9c9a262e4c004e008e99b8ed7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.0) set(wccl_ver_major "0") set(wccl_ver_minor "1") -set(wccl_ver_patch "4") +set(wccl_ver_patch "5") set(LIBWCCL_VERSION "${wccl_ver_major}.${wccl_ver_minor}.${wccl_ver_patch}") diff --git a/libwccl/variables.h b/libwccl/variables.h index ef7ede505674226c8c9c02d544019e2e03deb0de..3dd36c11e1ea6a456d092f04d978e23482c444fb 100644 --- a/libwccl/variables.h +++ b/libwccl/variables.h @@ -208,7 +208,7 @@ public: * shared pointers themselves cannot, use put etc. for that. */ template<typename T> - const typename detail::Vmap<T>::map_t get_all() const { + const typename detail::Vmap<T>::map_t& get_all() const { BOOST_MPL_ASSERT(( boost::mpl::count<types, T> )); return detail::Vmap<T>::map_; } diff --git a/libwccl/wcclfileopsections.h b/libwccl/wcclfileopsections.h index bfc90b3b0627bd06d255f9a40a83a8da9aeefd1f..9c848d2f7b64c2f6ee56ea300e9c57861af9550a 100644 --- a/libwccl/wcclfileopsections.h +++ b/libwccl/wcclfileopsections.h @@ -116,7 +116,7 @@ size_t WcclFileOpSections<T>::size() const template<class T> inline std::vector<std::string> WcclFileOpSections<T>::section_names() const { - std::vector<std::string> v(size()); + std::vector<std::string> v; foreach(const ptr_t& section, sections_) { v.push_back(section->name()); } diff --git a/swig/bool.i b/swig/bool.i index 7f4ff3a8e88ef94888f4ba13f692fb67bbbf6fe2..9091fcda952d3434180596a7a9531cc9b0d273ea 100644 --- a/swig/bool.i +++ b/swig/bool.i @@ -12,6 +12,9 @@ %feature("notabstract") Wccl::Bool; +%template(BoolPtr) boost::shared_ptr<Wccl::Bool>; +%template(ConstBoolPtr) boost::shared_ptr<Wccl::Bool const>; + namespace Wccl { class Bool : public Value { public: diff --git a/swig/functionaloperator.i b/swig/functionaloperator.i index 9ae78cf821ed1e11e8cc5bf7a8f9dbc03684d340..ae3565ffdc205001aff36d9cb90f0901a3303738 100644 --- a/swig/functionaloperator.i +++ b/swig/functionaloperator.i @@ -14,8 +14,8 @@ %include "std_string.i" %include <libcorpus2/boost_shared_ptr.i> -// %template(ValuePtr) boost::shared_ptr<Wccl::Value>; %template(FunctionalOperatorPtr) boost::shared_ptr<Wccl::FunctionalOperator>; +%template(ConstFunctionalOperatorPtr) boost::shared_ptr<const Wccl::FunctionalOperator>; namespace Wccl { class FunctionalOperator : public ParsedExpression { diff --git a/swig/functionalopsequence.i b/swig/functionalopsequence.i index a476ff86bd8063947e58a04ca366179e4c9b7c13..1f367051c5308f4d5a663a38bfd4fd868bef6f6a 100644 --- a/swig/functionalopsequence.i +++ b/swig/functionalopsequence.i @@ -18,12 +18,10 @@ %nodefaultctor Wccl::FunctionalOpSequence; -%template(fun_op_ptr_t) boost::shared_ptr<FunctionalOperator>; -%template(fun_op_ptr_c_t) boost::shared_ptr<const FunctionalOperator>; -%template(name_op_pair_t) std::pair<std::string, boost::shared_ptr<FunctionalOperator> > ; -%template(name_op_pair_c_t) std::pair<std::string, boost::shared_ptr<const FunctionalOperator> >; -%template(name_op_v_t) std::vector<std::pair<std::string, boost::shared_ptr<FunctionalOperator> > >; -%template(name_op_v_c_t) std::vector<std::pair<std::string, boost::shared_ptr<const FunctionalOperator> > >; +%template(name_op_pair_t) std::pair<std::string, boost::shared_ptr<Wccl::FunctionalOperator> > ; +%template(name_op_pair_c_t) std::pair<std::string, boost::shared_ptr<const Wccl::FunctionalOperator> >; +%template(name_op_v_t) std::vector<std::pair<std::string, boost::shared_ptr<Wccl::FunctionalOperator> > >; +%template(name_op_v_c_t) std::vector<std::pair<std::string, boost::shared_ptr<const Wccl::FunctionalOperator> > >; namespace Wccl { class FunctionalOpSequence : public Expression { @@ -48,22 +46,18 @@ namespace Wccl { /* --------------------------------------------------------------------- */ virtual fun_op_ptr_t get_untyped_ptr(size_t idx) = 0; - virtual fun_op_ptr_c_t get_untyped_ptr(size_t idx) const = 0; /* --------------------------------------------------------------------- */ name_op_v_t& add_name_op_pairs_untyped(name_op_v_t& pairs); - name_op_v_c_t& add_name_op_pairs_untyped(name_op_v_c_t& pairs) const; /* --------------------------------------------------------------------- */ name_op_v_t gen_name_op_pairs_untyped(); - name_op_v_c_t gen_name_op_pairs_untyped() const; /* --------------------------------------------------------------------- */ std::string gen_op_name(size_t idx) const; /* --------------------------------------------------------------------- */ name_op_pair_t gen_name_op_pair_untyped(size_t idx); - name_op_pair_c_t gen_name_op_pair_untyped(size_t idx) const; /* --------------------------------------------------------------------- */ shared_ptr<FunctionalOpSequence> clone() const; @@ -99,23 +93,18 @@ namespace Wccl { /* --------------------------------------------------------------------- */ fun_op_ptr_t get_untyped_ptr(size_t idx); - fun_op_ptr_c_t get_untyped_ptr(size_t idx) const; /* --------------------------------------------------------------------- */ fun_op_ptr_t get_ptr(size_t idx); - fun_op_ptr_c_t get_ptr(size_t idx) const; /* --------------------------------------------------------------------- */ name_op_v_t& add_name_op_pairs(name_op_v_t& pairs); - name_op_v_c_t& add_name_op_pairs(name_op_v_c_t& pairs) const; /* --------------------------------------------------------------------- */ name_op_v_t gen_name_op_pairs(); - name_op_v_c_t gen_name_op_pairs() const; /* --------------------------------------------------------------------- */ name_op_pair_t gen_name_op_pair(size_t idx); - name_op_pair_c_t gen_name_op_pair(size_t idx) const; /* --------------------------------------------------------------------- */ std::string to_string(const Corpus2::Tagset& tagset) const; @@ -164,23 +153,20 @@ namespace Wccl { /* --------------------------------------------------------------------- */ op_ptr_t get_ptr(size_t idx); - op_ptr_c_t get_ptr(size_t idx) const; /* --------------------------------------------------------------------- */ FunctionalOpSequence::fun_op_ptr_t get_untyped_ptr(size_t idx); - FunctionalOpSequence::fun_op_ptr_c_t get_untyped_ptr(size_t idx) const; /* --------------------------------------------------------------------- */ name_op_v_t gen_name_op_pairs(); - name_op_v_c_t gen_name_op_pairs() const; +/* name_op_v_c_t gen_name_op_pairs() const; */ /* --------------------------------------------------------------------- */ name_op_v_t& add_name_op_pairs(name_op_v_t& pairs); - name_op_v_c_t& add_name_op_pairs(name_op_v_c_t& pairs) const; +/* name_op_v_c_t& add_name_op_pairs(name_op_v_c_t& pairs) const; */ /* --------------------------------------------------------------------- */ name_op_pair_t gen_name_op_pair(size_t idx); - name_op_pair_c_t gen_name_op_pair(size_t idx) const; /* --------------------------------------------------------------------- */ std::string to_string(const Corpus2::Tagset& tagset) const; @@ -198,6 +184,24 @@ namespace Wccl { }; // OpSequence } +%template(BoolOpSequence) Wccl::OpSequence<Wccl::Bool>; +%template(StrSetOpSequence) Wccl::OpSequence<Wccl::StrSet>; +%template(TSetOpSequence) Wccl::OpSequence<Wccl::TSet>; +%template(PositionOpSequence) Wccl::OpSequence<Wccl::Position>; + +%template(UntypedOpSequencePtr) boost::shared_ptr<Wccl::UntypedOpSequence>; +%template(BoolOpSequencePtr) boost::shared_ptr<Wccl::OpSequence<Wccl::Bool> >; +%template(StrSetOpSequencePtr) boost::shared_ptr< Wccl::OpSequence<Wccl::StrSet> >; +%template(TSetOpSequencePtr) boost::shared_ptr<Wccl::OpSequence<Wccl::TSet> >; +%template(PositionOpSequencePtr) boost::shared_ptr<Wccl::OpSequence<Wccl::Position> >; + +%template(UntypedOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::UntypedOpSequence> >; +%template(BoolOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::Bool> > >; +%template(StrSetOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::StrSet> > >; +%template(TSetOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::TSet> > >; +%template(PositionOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::Position> > >; + + using namespace boost; using namespace Wccl; using namespace std; diff --git a/swig/lexicon.i b/swig/lexicon.i index b9004e4dc74595796b05b4216193ac020964a870..d32a41f4948d288af145bb14fb953102d5e162b3 100644 --- a/swig/lexicon.i +++ b/swig/lexicon.i @@ -18,6 +18,9 @@ %nodefaultctor Wccl::Lexicon; +%template(LexiconPtr) boost::shared_ptr<Wccl::Lexicon>; +%template(ConstLexiconPtr) boost::shared_ptr<const Wccl::Lexicon>; + namespace Wccl { class Lexicon { public: @@ -61,8 +64,6 @@ namespace Wccl { const map_t& map() const; }; - %template(LexiconPtr) boost::shared_ptr<Wccl::Lexicon>; - %template(ConstLexiconPtr) boost::shared_ptr<const Wccl::Lexicon>; } using namespace boost; diff --git a/swig/lexicons.i b/swig/lexicons.i index 69a0456567861311169b695e18f1caa14e0ffcef..0c19e08dfb08f7d73306292af0acfe086ab20e6f 100644 --- a/swig/lexicons.i +++ b/swig/lexicons.i @@ -13,6 +13,9 @@ %rename(map_t) boost::unordered_map<std::string, boost::shared_ptr<Lexicon> >; +%template(LexiconsPtr) boost::shared_ptr<Wccl::Lexicons>; +%template(ConstLexiconsPtr) boost::shared_ptr<const Wccl::Lexicons>; + namespace Wccl { class Lexicons { public: @@ -42,8 +45,7 @@ namespace Wccl { const map_t& get_lexicons() const; }; - %template(LexiconsPtr) boost::shared_ptr<Wccl::Lexicons>; - %template(ConstLexiconsPtr) boost::shared_ptr<const Wccl::Lexicons>; + } using namespace boost; diff --git a/swig/match.i b/swig/match.i index f296bb3d54b478410832efaf10e72ab3eee4efb9..f492c02e9212a04e5bcd9c9ebfe416f36073e330 100644 --- a/swig/match.i +++ b/swig/match.i @@ -18,7 +18,8 @@ %feature("notabstract") Wccl::Match; -// %template (MatchPtr) boost::shared_ptr<Wccl::Match>; +%template(MatchPtr) boost::shared_ptr<Wccl::Match>; +%template(ConstMatchPtr) boost::shared_ptr<Wccl::Match const>; namespace Wccl { class Match : public Value { diff --git a/swig/matchrule.i b/swig/matchrule.i index 52165c9300abf46ac053c48dae7b763b4da6868f..7d61a7d063164ec1bce97b5d99e1173c1915af57 100644 --- a/swig/matchrule.i +++ b/swig/matchrule.i @@ -11,8 +11,14 @@ %include "libcorpus2/annotatedsentence.i" %include "std_string.i" +%include "std_vector.i" %include <libcorpus2/boost_shared_ptr.i> +%template(MatchRulePtr) boost::shared_ptr<Wccl::Matching::MatchRule>; +%template(ConstMatchRulePtr) boost::shared_ptr<const Wccl::Matching::MatchRule>; + +%template(MatchRuleVector) std::vector<Wccl::Matching::MatchRule>; + namespace Wccl { namespace Matching { class MatchRule : public ParsedExpression { diff --git a/swig/matchrulesequence.i b/swig/matchrulesequence.i index d45853b668d8c72bf28ca7d1bf5ca287c20f6c3b..e6f7d6b62a5bc74fca6cefb714cdfb20b8488122 100644 --- a/swig/matchrulesequence.i +++ b/swig/matchrulesequence.i @@ -15,11 +15,9 @@ %include "std_vector.i" %include <libcorpus2/boost_shared_ptr.i> -%template(MatchRuleVector) std::vector<Wccl::Matching::MatchRule>; -%template(MatchRulePtr) boost::shared_ptr<Wccl::Matching::MatchRule>; %template(ConstMatchRuleSequencePtr) boost::shared_ptr<const Wccl::Matching::MatchRuleSequence>; %template(MatchRuleSequencePtr) boost::shared_ptr<Wccl::Matching::MatchRuleSequence>; -%template(ConstMatchRulePtr) boost::shared_ptr<const Wccl::Matching::MatchRule>; + namespace Wccl { namespace Matching { diff --git a/swig/operator.i b/swig/operator.i index fa7c5c9134d0719ffbdae661496dd16fbb232e04..0d8e36e48744d7a7039247b9072a4d5783e284e0 100644 --- a/swig/operator.i +++ b/swig/operator.i @@ -40,8 +40,8 @@ namespace Wccl { boost::shared_ptr<const Value> base_apply(const SentenceContext& sc); /* --------------------------------------------------------------------- */ - Operator clone() const; - Operator clone_clean() const; + // Operator clone() const; + // Operator clone_clean() const; /* --------------------------------------------------------------------- */ boost::shared_ptr<Operator<T> > clone_ptr() const; @@ -54,17 +54,17 @@ namespace Wccl { Operator* clone_internal() const; std::ostream& write_to(std::ostream& ostream) const; }; +} - %template (BoolOperator) Operator<Bool>; - %template (TSetOperator) Operator<TSet>; - %template (StrSetOperator) Operator<StrSet>; - %template (PositionOperator) Operator<Position>; +%template (BoolOperator) Wccl::Operator<Wccl::Bool>; +%template (TSetOperator) Wccl::Operator<Wccl::TSet>; +%template (StrSetOperator) Wccl::Operator<Wccl::StrSet>; +%template (PositionOperator) Wccl::Operator<Wccl::Position>; - %template (BoolOperatorPtr) boost::shared_ptr<Operator<Bool> >; - %template (TSetOperatorPtr) boost::shared_ptr<Operator<TSet> >; - %template (StrSetOperatorPtr) boost::shared_ptr<Operator<StrSet> >; - %template (PositionOperatorPtr) boost::shared_ptr<Operator<Position> >; -} +%template (BoolOperatorPtr) boost::shared_ptr<Wccl::Operator<Wccl::Bool> >; +%template (TSetOperatorPtr) boost::shared_ptr<Wccl::Operator<Wccl::TSet> >; +%template (StrSetOperatorPtr) boost::shared_ptr<Wccl::Operator<Wccl::StrSet> >; +%template (PositionOperatorPtr) boost::shared_ptr<Wccl::Operator<Wccl::Position> >; using namespace boost; using namespace std; diff --git a/swig/position.i b/swig/position.i index c5d1698af84329764eae266b01e41f0423ae5f25..9379bc8fcb2163c660aa45e7b33595238d6b98af 100644 --- a/swig/position.i +++ b/swig/position.i @@ -13,6 +13,9 @@ %feature("notabstract") Wccl::Position; +%template(PositionPtr) boost::shared_ptr<Wccl::Position>; +%template(ConstPositionPtr) boost::shared_ptr<Wccl::Position const>; + namespace Wccl { class Position : public Value { public: diff --git a/swig/sentencecontext.i b/swig/sentencecontext.i index 10fa25fa76149e23837b4ccbec2aac3ab9a76ee2..bddbe012a8ff9a710d7ac625973c55c8cbe9b984 100644 --- a/swig/sentencecontext.i +++ b/swig/sentencecontext.i @@ -17,6 +17,8 @@ // %feature("notabstract") Wccl::SentenceContext; +%template(SentenceContextPtr) boost::shared_ptr<Wccl::SentenceContext>; + namespace Wccl { class SentenceContext { public: @@ -61,8 +63,6 @@ namespace Wccl { }; } -%template(SentenceContextSharedPtr) boost::shared_ptr<Wccl::SentenceContext>; - using namespace boost; using namespace std; using namespace Wccl; diff --git a/swig/strset.i b/swig/strset.i index b97243db7ca166d4bd7b69e96e7acc00305115cb..d494f4e8ad182fca6fb1459e79b2a460b5bc9d4f 100644 --- a/swig/strset.i +++ b/swig/strset.i @@ -15,6 +15,9 @@ %feature("notabstract") Wccl::StrSet; +%template(StrSetPtr) boost::shared_ptr<Wccl::StrSet>; +%template(ConstStrSetPtr) boost::shared_ptr<Wccl::StrSet const>; + %template(UnicodeStringMap) std::set<UnicodeString>; namespace Wccl { diff --git a/swig/tagrule.i b/swig/tagrule.i index b8029fcaf3d468bddccd5610fcb39d0f377c813a..ec132af560ad09689555fdb1c8285eba9e60ae05 100644 --- a/swig/tagrule.i +++ b/swig/tagrule.i @@ -15,10 +15,13 @@ %include "libcorpus2/tagset.i" %include "std_string.i" +%include "std_vector.i" %include <libcorpus2/boost_shared_ptr.i> %template(TagRulePtr) boost::shared_ptr<Wccl::TagRule>; +%template(TagRuleVector) std::vector<Wccl::TagRule>; + namespace Wccl { class TagRule : public ParsedExpression { public: diff --git a/swig/tagrulesequence.i b/swig/tagrulesequence.i index 31b0bfd6fe37369fb0d1b527ac8a3554f3c5fb57..1736018ba96eca7afa40d5d7479cb19a31d6aba0 100644 --- a/swig/tagrulesequence.i +++ b/swig/tagrulesequence.i @@ -15,7 +15,7 @@ %include "std_vector.i" %include <libcorpus2/boost_shared_ptr.i> -%template(StdVectorTagRule) std::vector<TagRule>; + %template(TagRuleSequencPtr) boost::shared_ptr<Wccl::TagRuleSequence>; %template(ConstTagRuleSequencPtr) boost::shared_ptr<const Wccl::TagRuleSequence>; diff --git a/swig/tset.i b/swig/tset.i index 54a7880c14000001d30dd1e660a0d0b665e42384..a8285f0eb304f2c3f7f162eb345065cd4689be8e 100644 --- a/swig/tset.i +++ b/swig/tset.i @@ -15,6 +15,9 @@ %feature("notabstract") Wccl::TSet; +%template(TSetPtr) boost::shared_ptr<Wccl::TSet>; +%template(ConstTSetPtr) boost::shared_ptr<Wccl::TSet const>; + namespace Wccl { class TSet : public Value { public: diff --git a/swig/value.i b/swig/value.i index 671c3c981ff1da336aa3b19064e6ab0cadb67f11..bc49be07dffb74589b197c6694539285b7b712e9 100644 --- a/swig/value.i +++ b/swig/value.i @@ -11,6 +11,9 @@ %nodefaultctor Wccl::Value; +%template(ValuePtr) boost::shared_ptr<Wccl::Value>; +%template(ConstValuePtr) boost::shared_ptr<Wccl::Value const>; + namespace Wccl { class Value { public: diff --git a/swig/variables.i b/swig/variables.i index 00eb421d3b8b257d38d40f8846d8d4574f2db088..6ad0e6ee0698e86abea863540d5aad21463db120 100644 --- a/swig/variables.i +++ b/swig/variables.i @@ -16,19 +16,8 @@ %include "std_string.i" %include <libcorpus2/boost_shared_ptr.i> -%template(ValuePtr) boost::shared_ptr<Wccl::Value>; -%template(BoolPtr) boost::shared_ptr<Wccl::Bool>; -%template(PositionPtr) boost::shared_ptr<Wccl::Position>; -%template(StrSetPtr) boost::shared_ptr<Wccl::StrSet>; -%template(TSetPtr) boost::shared_ptr<Wccl::TSet>; -%template(MatchPtr) boost::shared_ptr<Wccl::Match>; + %template(VariablesPtr) boost::shared_ptr<Wccl::Variables>; -%template(ConstValuePtr) boost::shared_ptr<Wccl::Value const>; -%template(ConstBoolPtr) boost::shared_ptr<Wccl::Bool const>; -%template(ConstPositionPtr) boost::shared_ptr<Wccl::Position const>; -%template(ConstStrSetPtr) boost::shared_ptr<Wccl::StrSet const>; -%template(ConstTSetPtr) boost::shared_ptr<Wccl::TSet const>; -%template(ConstMatchPtr) boost::shared_ptr<Wccl::Match const>; %template(ConstVariablesPtr) boost::shared_ptr<Wccl::Variables const>; namespace Wccl { diff --git a/swig/wcclfile.i b/swig/wcclfile.i index f7821d63f4ffe284f470ab75169a996279db192d..9e242375a30b2dcad96f2a975c9d262b9b7c6927 100644 --- a/swig/wcclfile.i +++ b/swig/wcclfile.i @@ -25,13 +25,6 @@ %include "std_vector.i" %include <libcorpus2/boost_shared_ptr.i> -%template(UntypedOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::UntypedOpSequence> >; -%template(BoolOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::Bool> > >; -%template(StrSetOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::StrSet> > >; -%template(TSetOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::TSet> > >; -%template(PositionOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::Position> > >; -%template(MatchOpSequencePtrVector) std::vector<boost::shared_ptr<Wccl::OpSequence<Wccl::Match> > >; - %nodefaultctor Wccl::WcclFile; %template(WcclFilePtr) boost::shared_ptr<Wccl::WcclFile>; diff --git a/swig/wcclfileopsections.i b/swig/wcclfileopsections.i index 8b222409a18bfc652ee49cf4d834b82000d544b4..f8d08dac9ea782916f5a5947d3bd6cac26f2663f 100644 --- a/swig/wcclfileopsections.i +++ b/swig/wcclfileopsections.i @@ -73,16 +73,15 @@ namespace Wccl { void append(const ptr_t& section); /* --------------------------------------------------------------------- */ }; +} - %template(UntypedOpSequenceWcclFileOpSections) WcclFileOpSections<UntypedOpSequence>; - %template(StrSetOpSequence) WcclFileOpSections<OpSequence<StrSet> >; - %template(TSetOpSequence) WcclFileOpSections<OpSequence<TSet> >; - %template(BoolOpSequence) WcclFileOpSections<OpSequence<Bool> >; - %template(PositionOpSequence) WcclFileOpSections<OpSequence<Position> >; - %template(MatchOpSequence) WcclFileOpSections<OpSequence<Match> >; +%template(UntypedOpSections) Wccl::WcclFileOpSections<Wccl::UntypedOpSequence>; +%template(StrSetOpSections) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::StrSet> >; +%template(TSetOpSections) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::TSet> >; +%template(BoolOpSections) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::Bool> >; +%template(PositionOpSections) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::Position> >; +%template(MatchOpSections) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::Match> >; - %template(OpSequenceStrSet) Wccl::WcclFileOpSections<Wccl::OpSequence<Wccl::StrSet> >; -} using namespace std; using namespace Wccl;