CLI2: Entity capture.

- CLI2::entity now captures all the known entities, duplicating the processing
  in Context for now.
This commit is contained in:
Paul Beckingham 2015-06-13 13:57:53 -04:00
parent 96493db047
commit 22765a70cb
3 changed files with 27 additions and 1 deletions

View file

@ -26,7 +26,7 @@
#include <cmake.h> #include <cmake.h>
//#include <sstream> //#include <sstream>
//#include <algorithm> #include <algorithm>
#include <Context.h> #include <Context.h>
//#include <Nibbler.h> //#include <Nibbler.h>
//#include <Lexer.h> //#include <Lexer.h>
@ -317,6 +317,7 @@ void CLI2::alias (const std::string& name, const std::string& value)
{ {
_aliases.insert (std::pair <std::string, std::string> (name, value)); _aliases.insert (std::pair <std::string, std::string> (name, value));
} }
*/
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void CLI2::entity (const std::string& category, const std::string& name) void CLI2::entity (const std::string& category, const std::string& name)
@ -331,6 +332,7 @@ void CLI2::entity (const std::string& category, const std::string& name)
_entities.insert (std::pair <std::string, std::string> (category, name)); _entities.insert (std::pair <std::string, std::string> (category, name));
} }
/*
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Capture the original, intact command line arguments. // Capture the original, intact command line arguments.
void CLI2::initialize (int argc, const char** argv) void CLI2::initialize (int argc, const char** argv)

View file

@ -79,7 +79,9 @@ public:
~CLI2 (); ~CLI2 ();
/* /*
void alias (const std::string&, const std::string&); void alias (const std::string&, const std::string&);
*/
void entity (const std::string&, const std::string&); void entity (const std::string&, const std::string&);
/*
void initialize (int, const char**); void initialize (int, const char**);
void add (const std::string&); void add (const std::string&);
void addContextFilter (); void addContextFilter ();
@ -138,9 +140,11 @@ private:
bool disqualifyOnlyParenOps (const std::vector <std::pair <std::string, Lexer::Type>>&) const; bool disqualifyOnlyParenOps (const std::vector <std::pair <std::string, Lexer::Type>>&) const;
bool disqualifyFirstLastBinary (const std::vector <std::pair <std::string, Lexer::Type>>&) const; bool disqualifyFirstLastBinary (const std::vector <std::pair <std::string, Lexer::Type>>&) const;
bool disqualifySugarFree (const std::vector <std::pair <std::string, Lexer::Type>>&) const; bool disqualifySugarFree (const std::vector <std::pair <std::string, Lexer::Type>>&) const;
*/
public: public:
std::multimap <std::string, std::string> _entities; std::multimap <std::string, std::string> _entities;
/*
std::map <std::string, std::string> _aliases; std::map <std::string, std::string> _aliases;
std::vector <std::string> _original_args; std::vector <std::string> _original_args;
std::vector <A> _args; std::vector <A> _args;

View file

@ -155,6 +155,12 @@ int Context::initialize (int argc, const char** argv)
Command::factory (commands); Command::factory (commands);
for (auto& cmd : commands) for (auto& cmd : commands)
{ {
cli2.entity ("cmd", cmd.first);
cli2.entity ((cmd.second->read_only () ? "readcmd" : "writecmd"), cmd.first);
if (cmd.first[0] == '_')
cli2.entity ("helper", cmd.first);
cli.entity ("cmd", cmd.first); cli.entity ("cmd", cmd.first);
cli.entity ((cmd.second->read_only () ? "readcmd" : "writecmd"), cmd.first); cli.entity ((cmd.second->read_only () ? "readcmd" : "writecmd"), cmd.first);
@ -169,6 +175,11 @@ int Context::initialize (int argc, const char** argv)
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
Column::factory (columns); Column::factory (columns);
for (auto& col : columns)
cli2.entity ("attribute", col.first);
cli2.entity ("pseudo", "limit");
for (auto& col : columns) for (auto& col : columns)
cli.entity ("attribute", col.first); cli.entity ("attribute", col.first);
@ -180,6 +191,15 @@ int Context::initialize (int argc, const char** argv)
// //
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i)
cli2.entity ("modifier", modifierNames[i]);
for (auto& op : Eval::getOperators ())
cli2.entity ("operator", op);
for (auto& op : Eval::getBinaryOperators ())
cli2.entity ("binary_operator", op);
for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i) for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i)
cli.entity ("modifier", modifierNames[i]); cli.entity ("modifier", modifierNames[i]);