libFAUDES

Sections

Index

diag_attrfailuretypes.cpp

Go 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