diag_attrfailuretypes.cpp
Go to the documentation of this file.
1/** @file diag_attrfailuretypes.cpp
2Failure and indicator partition for a system (used as global attribute).
3*/
4
6
7using namespace std;
8
9namespace faudes {
10
11// faudes type std
12FAUDES_TYPE_IMPLEMENTATION(Void,AttributeFailureTypeMap,AttributeFlags)
13
14// construct
16 // configure unregistered type
17 // note: its just my member which is not registered, the attribute is registered
18 mFailureTypeMap.TypeName("FailureTypes");
19 mFailureTypeMap.ElementTag("FailureType");
20 mFailureTypeMap.Name("FailureTypes");
21 // always use static symbol table
22 mFailureTypeMap.SymbolTablep(DiagLabelSet::StaticLabelSymbolTablep());
23}
24
25// comnstruct from file
27 // configure unregistered type
28 // note: its just my member which is not registered, the attribute is registered
29 mFailureTypeMap.TypeName("FailureTypes");
30 mFailureTypeMap.ElementTag("FailureType");
31 mFailureTypeMap.Name("FailureTypes");
32 // always use static symbol table
34 // read
35 Read(rFilename);
36}
37
38// copycontruct
40 // configure unregistered type
41 // note: its just my member which is not registered, the attribute is registered
42 mFailureTypeMap.TypeName("FailureTypes");
43 mFailureTypeMap.ElementTag("FailureType");
44 mFailureTypeMap.Name("FailureTypes");
45 // always use static symbol table
47 // copy
48 DoAssign(rOtherAttr);
49}
50
51
52// copy my members
57
58// Equality
60 // test base
61 if(!AttributeFlags::DoEqual(rAttr)) return false;
62 // my members
63 if(mFailureTypeMap!=rAttr.mFailureTypeMap) return false;
64 // pass
65 return true;
66}
67
68
69// IsDefault()
71 return mFailureTypeMap.Empty();
72}
73
74// Empty()
76 return mFailureTypeMap.Empty();
77}
78
79// Clear()
83
84// AddFailureTypeMapping()
85Idx AttributeFailureTypeMap::AddFailureTypeMapping(const std::string& failureType, const EventSet& rfailureEvents) {
86 Idx failureLabelIndex;
88
89 // Insert failureType in msLabelSymbolTable of DiagLabelSet.
90 // If failure type name does already exist in LabelSymbolTable, InsEntry returns index of existing entry.
91 try {
92 failureLabelIndex = mpLabelSymbolTable->InsEntry(failureType);
93 }
94 catch (faudes::Exception& exception) {
95 stringstream errstr;
96 errstr << "Have not been able to add failure with Index " << failureType << " to LabelSymbolTable" << endl;
97 throw Exception("AttributeFailureTypeMap::AddFailureTypeMapping()", errstr.str(), 300);
98 }
99 // store failure event set in AttributeFailureEvents
101 fEvents.mFailureEvents.InsertSet(rfailureEvents);
102
103 // write new map entry
104 mFailureTypeMap.Insert(failureLabelIndex,fEvents);
105
106 return failureLabelIndex;
107}
108
109// AddFailureTypeMap()
110void AttributeFailureTypeMap::AddFailureTypeMap(const std::map<std::string,EventSet>& rFailureMap) {
111 map<string,EventSet>::const_iterator it;
112
113 for(it = rFailureMap.begin(); it != rFailureMap.end(); it++) {
114 AddFailureTypeMapping(it->first,it->second);
115 }
116}
117
118// FailureType()
119// not used
121 TaNameSet<AttributeFailureEvents>::Iterator it;
122
123 for(it = mFailureTypeMap.Begin(); it != mFailureTypeMap.End(); it++) {
124 if (mFailureTypeMap.Attribute(*it).mFailureEvents.Exists(failureEvent)) {
125 return *it;
126 }
127 }
128 return 0;
129}
130
131// AllFailureEvents()
133 EventSet failures;
134 AttributeFailureEvents failureAttr;
135 TaNameSet<AttributeFailureEvents>::Iterator it;
136
137 failures.Clear();
138 for(it = mFailureTypeMap.Begin(); it != mFailureTypeMap.End(); it++) {
139 failureAttr = mFailureTypeMap.Attribute(*it);
140 failures.InsertSet(failureAttr.mFailureEvents);
141 }
142 return failures;
143}
144
145// DoWrite()
146void AttributeFailureTypeMap::DoWrite(TokenWriter& rTw, const std::string& rLabel, const Type* pContext) const {
147 if(IsDefault()) return;
148 mFailureTypeMap.Write(rTw,"FailureTypes", pContext);
149}
150
151// DoXWrite()
152void AttributeFailureTypeMap::DoXWrite(TokenWriter& rTw, const std::string& rLabel, const Type* pContext) const {
153 if(IsDefault()) return;
154 mFailureTypeMap.XWrite(rTw,"FailureTypes", pContext);
155}
156
157// DoRead()
158void AttributeFailureTypeMap::DoRead(TokenReader &rTr, const std::string &rLabel, const Type *pContext) {
159 mFailureTypeMap.Clear();
160 Token token;
161 rTr.Peek(token);
162 if(!token.IsBegin("FailureTypes")) return;
163 mFailureTypeMap.Read(rTr, "FailureTypes", pContext);
164}
165
166
167} // namespace faudes
168
#define FAUDES_TYPE_IMPLEMENTATION(ftype, ctype, cbase)
Definition cfl_types.h:958
TaNameSet< AttributeFailureEvents > mFailureTypeMap
bool DoEqual(const AttributeFailureTypeMap &rAttr) const
void AddFailureTypeMap(const std::map< std::string, EventSet > &rFailureMap)
void DoRead(TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
Idx AddFailureTypeMapping(const std::string &failureType, const EventSet &rfailureEvents)
void DoAssign(const AttributeFailureTypeMap &rSrcAttr)
Idx FailureType(Idx failureEvent) const
void DoWrite(TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
void DoXWrite(TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
bool DoEqual(const AttributeFlags &rOther) const
void DoAssign(const AttributeFlags &rSrcAttr)
static SymbolTable * StaticLabelSymbolTablep(void)
virtual void InsertSet(const NameSet &rOtherSet)
Idx InsEntry(Idx index, const std::string &rName)
bool Peek(Token &token)
bool IsBegin(void) const
void Read(const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
void Write(const Type *pContext=0) const
virtual const std::string & TypeName(void) const
virtual void Clear(void)
uint32_t Idx

libFAUDES 2.33k --- 2025.09.16 --- c++ api documentaion by doxygen