| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * params.hh for jsonstroller
- *
- * Author: isundil <isundill@gmail.com>
- **/
- #pragma once
- #include <map>
- #include <list>
- #include <string>
- #include <utility>
- #include <istream>
- #include "fifoMap.hpp"
- typedef fifoMap<std::string, std::basic_istream<char> *> IndexedDeque;
- class AParams
- {
- public:
- /**
- * true if --ascii
- **/
- virtual bool isIgnoringUnicode() const =0;
- /**
- * false if -W
- **/
- virtual bool isStrict() const =0;
- /**
- * true if --color match conditions
- **/
- virtual bool colorEnabled() const =0;
- };
- class Params: public AParams
- {
- public:
- Params(char **av);
- virtual ~Params();
- /**
- * Interpret input
- **/
- virtual bool read();
- /**
- * retun input
- * can be file stream (-f), stringstream ( -- INPUT), or std::cin (none)
- **/
- IndexedDeque getInputs() const;
- /**
- * false if invalid argument is passed
- **/
- bool isValid() const;
- /**
- * print usage
- * @param program name
- **/
- virtual void usage() const noexcept;
- /**
- * print version number
- * @param program name
- **/
- virtual void version() const noexcept;
- /**
- * get argv[0]
- **/
- const std::string &getProgName() const;
- /**
- * flags
- **/
- bool isStrict() const;
- bool colorEnabled() const;
- bool isIgnoringUnicode() const;
- bool isDiff() const;
- private:
- /**
- * input stream
- * can be null for stdin
- **/
- IndexedDeque inputs;
- const std::string progName;
- std::list<std::string> params;
- bool ignoreUnicode;
- bool colorMode;
- bool strict;
- bool diffMode;
- };
|