Expression support

- Added Context::getColumns to return a vector of column names.
  This is to help a shift toward using the Column objects to assist
  in the parsing/validation of data entry/modifications.
- Added Column::modifiable to delegate an attributes readable/writeable
  state.  This means the columns will be in charge of their own
  mutability, which will simplify and generalize Command::modify_task.
This commit is contained in:
Paul Beckingham 2011-07-23 12:08:13 -04:00
parent ee9199b4e0
commit 1164ea5cf1
6 changed files with 49 additions and 27 deletions

View file

@ -411,6 +411,17 @@ void Context::shadow ()
*/ */
} }
////////////////////////////////////////////////////////////////////////////////
const std::vector <std::string> Context::getColumns () const
{
std::vector <std::string> output;
std::map <std::string, Column*>::const_iterator i;
for (i = columns.begin (); i != columns.end (); ++i)
output.push_back (i->first);
return output;
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void Context::assumeLocations () void Context::assumeLocations ()
{ {

View file

@ -58,6 +58,8 @@ public:
int getWidth (); // determine terminal width int getWidth (); // determine terminal width
int getHeight (); // determine terminal height int getHeight (); // determine terminal height
const std::vector <std::string> getColumns () const;
bool color (); // TTY or <other>? bool color (); // TTY or <other>?
bool verbose (const std::string&); // Verbosity control bool verbose (const std::string&); // Verbosity control

View file

@ -42,6 +42,7 @@ ColumnID::ColumnID ()
_type = "number"; _type = "number";
_style = "number"; _style = "number";
_label = STRING_COLUMN_LABEL_ID; _label = STRING_COLUMN_LABEL_ID;
_modifiable = false;
_styles.push_back ("number"); _styles.push_back ("number");

View file

@ -42,6 +42,7 @@ ColumnUUID::ColumnUUID ()
_type = "string"; _type = "string";
_style = "long"; _style = "long";
_label = STRING_COLUMN_LABEL_UUID; _label = STRING_COLUMN_LABEL_UUID;
_modifiable = false;
_styles.push_back ("long"); _styles.push_back ("long");
_styles.push_back ("short"); _styles.push_back ("short");

View file

@ -132,6 +132,7 @@ Column::Column ()
, _style ("default") , _style ("default")
, _label ("") , _label ("")
, _report ("") , _report ("")
, _modifiable (true)
{ {
} }
@ -143,6 +144,7 @@ Column::Column (const Column& other)
_style = other._style; _style = other._style;
_label = other._label; _label = other._label;
_label = other._report; _label = other._report;
_modifiable = other._modifiable;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -155,6 +157,7 @@ Column& Column::operator= (const Column& other)
_style = other._style; _style = other._style;
_label = other._label; _label = other._label;
_report = other._report; _report = other._report;
_modifiable = other._modifiable;
} }
return *this; return *this;
@ -166,7 +169,9 @@ bool Column::operator== (const Column& other) const
return _name == other._name && return _name == other._name &&
_type == other._type && _type == other._type &&
_style == other._style && _style == other._style &&
_label == other._label; _label == other._label &&
_report == other._report &&
_modifiable == other._modifiable;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////

View file

@ -48,6 +48,7 @@ public:
std::string style () const { return _style; } std::string style () const { return _style; }
std::string label () const { return _label; } std::string label () const { return _label; }
std::string type () const { return _type; } std::string type () const { return _type; }
bool modifiable () const { return _modifiable; }
std::vector <std::string> styles () const { return _styles; } std::vector <std::string> styles () const { return _styles; }
std::vector <std::string> examples () const { return _examples; } std::vector <std::string> examples () const { return _examples; }
@ -68,6 +69,7 @@ protected:
std::string _style; std::string _style;
std::string _label; std::string _label;
std::string _report; std::string _report;
bool _modifiable;
std::vector <std::string> _styles; std::vector <std::string> _styles;
std::vector <std::string> _examples; std::vector <std::string> _examples;
}; };