| |
libFAUDES
Sections
Index
|
diag_attrfailuretypes.cppGo to the documentation of this file.00001 /** @file diag_attrfailuretypes.cpp 00002 Failure and indicator partition for a system (used as global attribute). 00003 */ 00004 00005 #include "diag_attrfailuretypes.h" 00006 00007 using namespace std; 00008 00009 namespace faudes { 00010 00011 // faudes type std 00012 FAUDES_TYPE_IMPLEMENTATION(AttributeFailureTypeMap,AttributeFlags,) 00013 00014 // copy my members 00015 AttributeFailureTypeMap& AttributeFailureTypeMap::DoAssign(const AttributeFailureTypeMap& rSrcAttr) { 00016 AttributeFlags::DoAssign(rSrcAttr); 00017 mFailureTypeMap = rSrcAttr.mFailureTypeMap; 00018 return *this; 00019 } 00020 00021 // Equality 00022 bool AttributeFailureTypeMap::DoEqual(const AttributeFailureTypeMap& rAttr) const { 00023 // test base 00024 if(!AttributeFlags::DoEqual(rAttr)) return false; 00025 // my members 00026 if(mFailureTypeMap!=rAttr.mFailureTypeMap) return false; 00027 // pass 00028 return true; 00029 } 00030 00031 00032 // IsDefault() 00033 bool AttributeFailureTypeMap::IsDefault(void) const{ 00034 return mFailureTypeMap.Empty(); 00035 } 00036 00037 // Empty() 00038 bool AttributeFailureTypeMap::Empty(void) const { 00039 return mFailureTypeMap.Empty(); 00040 } 00041 00042 // Clear() 00043 void AttributeFailureTypeMap::Clear(void) { 00044 mFailureTypeMap.Clear(); 00045 } 00046 00047 // AddFailureTypeMapping() 00048 Idx AttributeFailureTypeMap::AddFailureTypeMapping(const std::string& failureType, const EventSet& rfailureEvents) { 00049 Idx failureLabelIndex; 00050 SymbolTable* mpLabelSymbolTable = DiagLabelSet::StaticLabelSymbolTablep(); 00051 00052 // Insert failureType in msLabelSymbolTable of DiagLabelSet. 00053 // If failure type name does already exist in LabelSymbolTable, InsEntry returns index of existing entry. 00054 try { 00055 failureLabelIndex = mpLabelSymbolTable->InsEntry(failureType); 00056 } 00057 catch (faudes::Exception& exception) { 00058 stringstream errstr; 00059 errstr << "Have not been able to add failure with Index " << failureType << " to LabelSymbolTable" << endl; 00060 throw Exception("AttributeFailureTypeMap::AddFailureTypeMapping()", errstr.str(), 300); 00061 } 00062 // store failure event set in AttributeFailureEvents 00063 AttributeFailureEvents fEvents; 00064 fEvents.mFailureEvents.InsertSet(rfailureEvents); 00065 00066 // write new map entry 00067 mFailureTypeMap.Insert(failureLabelIndex,fEvents); 00068 00069 return failureLabelIndex; 00070 } 00071 00072 // AddFailureTypeMap() 00073 void AttributeFailureTypeMap::AddFailureTypeMap(const std::map<std::string,EventSet>& rFailureMap) { 00074 map<string,EventSet>::const_iterator it; 00075 00076 for(it = rFailureMap.begin(); it != rFailureMap.end(); it++) { 00077 AddFailureTypeMapping(it->first,it->second); 00078 } 00079 } 00080 00081 // FailureType() 00082 // not used 00083 Idx AttributeFailureTypeMap::FailureType(Idx failureEvent) const { 00084 TaNameSet<AttributeFailureEvents>::Iterator it; 00085 00086 for(it = mFailureTypeMap.Begin(); it != mFailureTypeMap.End(); it++) { 00087 if (mFailureTypeMap.Attribute(*it).mFailureEvents.Exists(failureEvent)) { 00088 return *it; 00089 } 00090 } 00091 return 0; 00092 } 00093 00094 // AllFailureEvents() 00095 EventSet AttributeFailureTypeMap::AllFailureEvents(void) const { 00096 EventSet failures; 00097 AttributeFailureEvents failureAttr; 00098 TaNameSet<AttributeFailureEvents>::Iterator it; 00099 00100 failures.Clear(); 00101 for(it = mFailureTypeMap.Begin(); it != mFailureTypeMap.End(); it++) { 00102 failureAttr = mFailureTypeMap.Attribute(*it); 00103 failures.InsertSet(failureAttr.mFailureEvents); 00104 } 00105 return failures; 00106 } 00107 00108 // DoWrite() 00109 void AttributeFailureTypeMap::DoWrite(TokenWriter& rTw, const std::string& rLabel, const Type* pContext) const { 00110 if(IsDefault()) return; 00111 mFailureTypeMap.Write(rTw,"FailureTypes", pContext); 00112 } 00113 00114 // DoRead() 00115 void AttributeFailureTypeMap::DoRead(TokenReader &rTr, const std::string &rLabel, const Type *pContext) { 00116 mFailureTypeMap.Clear(); 00117 Token token; 00118 rTr.Peek(token); 00119 if(token.Type()!=Token::Begin) return; 00120 if(token.StringValue()!="FailureTypes") return; 00121 mFailureTypeMap.Read(rTr, "FailureTypes", pContext); 00122 } 00123 00124 00125 } // namespace faudes 00126 |
libFAUDES 2.14g --- 2009-12-3 --- c++ source docu by doxygen 1.5.6