WSF
InputEnumeration.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11#ifndef INPUTENUMERATION_HPP
12#define INPUTENUMERATION_HPP
13
14#include <list>
15#include <memory>
16#include <string>
17
18class UtInput;
19
22{
23public:
27 void Clear();
28
29 void Add(int aValue, const char* aString);
30 void Add(int aValue, const std::string& aString);
31
32 bool ProcessInput(const std::string& aCommand, UtInput& aInput, int& aEnumValue);
33
34 typedef std::pair<std::string, int> Pair;
35 typedef std::list<Pair> EnumList;
36
37 // Allow the use the << operator to define the enumerations
38 // Ex: inputClass << cAIR << "air" << cLAND << "land";
39 class Inserter
40 {
41 Inserter(int aEnumVal, InputEnumeration* aEnumInput)
42 : mEnumVal(aEnumVal)
43 , mEnumInput(aEnumInput)
44 {
45 }
46
47 public:
48 friend class InputEnumeration;
49 InputEnumeration& operator<<(const char* aStrPtr)
50 {
51 mEnumInput->Add(mEnumVal, aStrPtr);
52 return *mEnumInput;
53 }
54 InputEnumeration& operator<<(const std::string& aString)
55 {
56 mEnumInput->Add(mEnumVal, aString);
57 return *mEnumInput;
58 }
59
60 private:
61 void operator=(const Inserter&);
62 int mEnumVal;
63 InputEnumeration* mEnumInput;
64 };
65
66 Inserter operator<<(int aEnumVal) { return Inserter(aEnumVal, this); }
67
68private:
69 EnumList& GetList();
70 std::shared_ptr<EnumList> mValueList;
71};
72
73#endif
Definition InputEnumeration.hpp:40
InputEnumeration & operator<<(const char *aStrPtr)
Definition InputEnumeration.hpp:49
InputEnumeration & operator<<(const std::string &aString)
Definition InputEnumeration.hpp:54
friend class InputEnumeration
Definition InputEnumeration.hpp:48
~InputEnumeration()
Definition InputEnumeration.cpp:26
std::list< Pair > EnumList
Definition InputEnumeration.hpp:35
void Clear()
Remove all enumeration values. Free memory.
Definition InputEnumeration.cpp:29
std::pair< std::string, int > Pair
Definition InputEnumeration.hpp:34
void Add(int aValue, const char *aString)
Add an enumeration to the list.
Definition InputEnumeration.cpp:35
Inserter operator<<(int aEnumVal)
Definition InputEnumeration.hpp:66
bool ProcessInput(const std::string &aCommand, UtInput &aInput, int &aEnumValue)
Definition InputEnumeration.cpp:50
InputEnumeration()
Definition InputEnumeration.cpp:19
Copyrights Multiple, All Rights Reserved