// Copyright {Jagger Software Limited} 2003 #ifndef GRAMMAR_MULTIPLICITY_INCLUDED #define GRAMMAR_MULTIPLICITY_INCLUDED #include "grammar/bound.hpp" #include #include namespace grammar { class multiplicity // <> { public: // 'tors explicit multiplicity(size_t fixed); multiplicity(size_t lower, size_t upper); multiplicity(size_t lower, infinity_type upper); // compiler generated copy-c'tor ok // compiler generated non virtual d'tor ok public: // attributes const bound lower_bound, upper_bound; public: // named values static const multiplicity & compulsory(); // (1, 1) static const multiplicity & optional(); // (0, 1) static const multiplicity & zero_or_more(); // (0, infinity()) static const multiplicity & one_or_more(); // (1, infinity()) }; // in/equality bool operator==(const multiplicity &, const multiplicity &); bool operator!=(const multiplicity &, const multiplicity &); // streaming ::std::ostream & operator<<(::std::ostream &, const multiplicity &); } #endif