1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#pragma once
#include "Objective.h"
#include "Specifier.h"
#include "ientity.h"
namespace objectives
{
/**
* Entity Visitor which extracts objective keyvalues (of the form "obj<n>_blah")
* and populates the given ObjectiveMap with the parsed objective objects.
*/
class ObjectiveKeyExtractor
{
// Map of number->Objective objects
ObjectiveMap& _objMap;
public:
/**
* Constructor. Sets the map to populate.
*/
ObjectiveKeyExtractor(ObjectiveMap& map)
: _objMap(map)
{
assert(_objMap.empty());
}
/**
* Entity keyvalue visit function.
*/
void operator()(const std::string& key, const std::string& value);
private:
/**
* Sanity-checks and converts the given integer specifier [1..N] number
* to the enum range [FIRST_SPECIFIER..MAX_SPECIFIERS).
*
* @returns: MAX_SPECIFIERS if the given integer is invalid, the valid enum otherwise
*/
Specifier::SpecifierNumber getSpecifierNumber(int specNum);
};
}
|