From f80d57ff48d96218df5e570ce93a5b0db2e6a270 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Fri, 31 Oct 2014 19:14:47 -0400 Subject: [PATCH] Context - Sets up fixed-name attributes first. Extends that list with dynamic attributes (UDAs) later, when known. --- src/Context.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/Context.cpp b/src/Context.cpp index 898e41c5a..535c1bd00 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -65,6 +65,33 @@ static const char* modifierNames[] = #define NUM_MODIFIER_NAMES (sizeof (modifierNames) / sizeof (modifierNames[0])) +static const char* attributeNames[] = +{ + "depends", + "description", + "due", + "end", + "entry", + "id", + "imask", + "mask", + "modified", + "parent", + "priority", + "project", + "recur", + "scheduled", + "start", + "status", + "tags", + "until", + "urgency", + "uuid", + "wait" +}; + +#define NUM_ATTRIBUTE_NAMES (sizeof (attributeNames) / sizeof (attributeNames[0])) + //////////////////////////////////////////////////////////////////////////////// Context::Context () : rc_file () @@ -213,6 +240,8 @@ int Context::initialize (int argc, const char** argv) // Instantiate built-in column objects. Column::factory (columns); + + // Extend the fixed list of attribute names with any dynamic ones. std::map ::iterator col; for (col = columns.begin (); col != columns.end (); ++col) { @@ -661,6 +690,13 @@ void Context::setupEntities () parser.entity ("pseudo", "limit"); cli.entity ("pseudo", "limit"); + // Entities: Attributes. + for (unsigned int i = 0; i < NUM_ATTRIBUTE_NAMES; ++i) + { + parser.entity ("attribute", attributeNames[i]); + cli.entity ("attribute", attributeNames[i]); + } + // Entities: Modifiers. for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i) {