#include <omnetpp.h>
#include "IPAddress.h"
Functions | |
const cXMLElement * | getUniqueChild (const cXMLElement *node, const char *name) |
const cXMLElement * | getUniqueChildIfExists (const cXMLElement *node, const char *name) |
void | checkTags (const cXMLElement *node, const char *allowed) |
bool | getParameterBoolValue (const cXMLElement *ptr, const char *name, bool def) |
bool | getParameterBoolValue (const cXMLElement *ptr, const char *name) |
int | getParameterIntValue (const cXMLElement *ptr, const char *name) |
int | getParameterIntValue (const cXMLElement *ptr, const char *name, int def) |
const char * | getParameterStrValue (const cXMLElement *ptr, const char *name) |
const char * | getParameterStrValue (const cXMLElement *ptr, const char *name, const char *def) |
IPAddress | getParameterIPAddressValue (const cXMLElement *ptr, const char *name) |
IPAddress | getParameterIPAddressValue (const cXMLElement *ptr, const char *name, IPAddress def) |
double | getParameterDoubleValue (const cXMLElement *ptr, const char *name) |
double | getParameterDoubleValue (const cXMLElement *ptr, const char *name, double def) |
bool | parseBool (const char *text) |
void checkTags | ( | const cXMLElement * | node, | |
const char * | allowed | |||
) |
Referenced by RSVP::delSession(), SimpleClassifier::readItemFromXML(), SimpleClassifier::readTableFromXML(), LIBTable::readTableFromXML(), RSVP::readTrafficFromXML(), RSVP::readTrafficRouteFromXML(), and RSVP::readTrafficSessionFromXML().
00052 { 00053 std::vector<const char *> tags; 00054 00055 cStringTokenizer st(allowed, " "); 00056 const char *nt; 00057 while((nt = st.nextToken())!=NULL) 00058 tags.push_back(nt); 00059 00060 for(cXMLElement *child=node->getFirstChild(); child; child=child->getNextSibling()) 00061 { 00062 unsigned int i; 00063 for(i = 0; i < tags.size(); i++) 00064 if(!strcmp(child->getTagName(), tags[i])) 00065 break; 00066 if(i == tags.size()) 00067 opp_error("subtag <%s> not expected in <%s>", child->getTagName(), node->getTagName()); 00068 } 00069 }
bool getParameterBoolValue | ( | const cXMLElement * | ptr, | |
const char * | name | |||
) |
00090 { 00091 const cXMLElement *xvalue = getUniqueChild(ptr, name); 00092 return parseBool(xvalue->getNodeValue()); 00093 }
bool getParameterBoolValue | ( | const cXMLElement * | ptr, | |
const char * | name, | |||
bool | def | |||
) |
Referenced by RSVP::readTrafficSessionFromXML().
00081 { 00082 const cXMLElement *xvalue = getUniqueChildIfExists(ptr, name); 00083 if(xvalue) 00084 return parseBool(xvalue->getNodeValue()); 00085 else 00086 return def; 00087 }
double getParameterDoubleValue | ( | const cXMLElement * | ptr, | |
const char * | name, | |||
double | def | |||
) |
Referenced by RSVP::readTrafficSessionFromXML().
00132 { 00133 const cXMLElement *xvalue = getUniqueChildIfExists(ptr, name); 00134 if(xvalue) 00135 return strtod(xvalue->getNodeValue(), NULL); 00136 else 00137 return def; 00138 }
double getParameterDoubleValue | ( | const cXMLElement * | ptr, | |
const char * | name | |||
) |
00141 { 00142 const cXMLElement *xvalue = getUniqueChild(ptr, name); 00143 return strtod(xvalue->getNodeValue(), NULL); 00144 }
int getParameterIntValue | ( | const cXMLElement * | ptr, | |
const char * | name, | |||
int | def | |||
) |
Referenced by RSVP::delSession(), SimpleClassifier::readItemFromXML(), LIBTable::readTableFromXML(), and RSVP::readTrafficSessionFromXML().
00102 { 00103 const cXMLElement *xvalue = getUniqueChildIfExists(ptr, name); 00104 if(xvalue) 00105 return atoi(xvalue->getNodeValue()); 00106 else 00107 return def; 00108 }
int getParameterIntValue | ( | const cXMLElement * | ptr, | |
const char * | name | |||
) |
00111 { 00112 const cXMLElement *xvalue = getUniqueChild(ptr, name); 00113 return atoi(xvalue->getNodeValue()); 00114 }
Referenced by RSVP::delSession(), SimpleClassifier::readItemFromXML(), and RSVP::readTrafficSessionFromXML().
00117 { 00118 const cXMLElement *xvalue = getUniqueChildIfExists(ptr, name); 00119 if(xvalue) 00120 return IPAddress(xvalue->getNodeValue()); 00121 else 00122 return def; 00123 }
IPAddress getParameterIPAddressValue | ( | const cXMLElement * | ptr, | |
const char * | name | |||
) |
00126 { 00127 const cXMLElement *xvalue = getUniqueChild(ptr, name); 00128 return IPAddressResolver().resolve(xvalue->getNodeValue()).get4(); 00129 }
const char* getParameterStrValue | ( | const cXMLElement * | ptr, | |
const char * | name, | |||
const char * | def | |||
) |
Referenced by LIBTable::readTableFromXML(), and RSVP::readTrafficSessionFromXML().
00072 { 00073 const cXMLElement *xvalue = getUniqueChildIfExists(ptr, name); 00074 if(xvalue) 00075 return xvalue->getNodeValue(); 00076 else 00077 return def; 00078 }
const char* getParameterStrValue | ( | const cXMLElement * | ptr, | |
const char * | name | |||
) |
00096 { 00097 const cXMLElement *xvalue = getUniqueChild(ptr, name); 00098 return xvalue->getNodeValue(); 00099 }
const cXMLElement* getUniqueChild | ( | const cXMLElement * | node, | |
const char * | name | |||
) |
Referenced by getParameterBoolValue(), getParameterDoubleValue(), getParameterIntValue(), getParameterIPAddressValue(), getParameterStrValue(), LIBTable::readTableFromXML(), and RSVP::readTrafficSessionFromXML().
00006 { 00007 const cXMLElement *child = getUniqueChildIfExists(node, name); 00008 if(!child) 00009 throw cRuntimeError("xml error: exactly one %s element expected", name); 00010 00011 return child; 00012 }
const cXMLElement* getUniqueChildIfExists | ( | const cXMLElement * | node, | |
const char * | name | |||
) |
Referenced by RSVP::delSession(), getParameterBoolValue(), getParameterDoubleValue(), getParameterIntValue(), getParameterIPAddressValue(), getParameterStrValue(), getUniqueChild(), SimpleClassifier::readItemFromXML(), and RSVP::readTrafficSessionFromXML().
00015 { 00016 cXMLElementList list = node->getChildrenByTagName(name); 00017 if(list.size() > 1) 00018 throw cRuntimeError("xml error: at most one %s element expected", name); 00019 else if(list.size() == 1) 00020 return (*list.begin()); 00021 else 00022 return NULL; 00023 }
bool parseBool | ( | const char * | text | ) |
Referenced by getParameterBoolValue().
00026 { 00027 if(!strcasecmp(text, "down")) 00028 return false; 00029 else if(!strcasecmp(text, "off")) 00030 return false; 00031 else if(!strcasecmp(text, "false")) 00032 return false; 00033 else if(!strcasecmp(text, "no")) 00034 return false; 00035 else if(!strcasecmp(text, "0")) 00036 return false; 00037 else if(!strcasecmp(text, "up")) 00038 return true; 00039 else if(!strcasecmp(text, "on")) 00040 return true; 00041 else if(!strcasecmp(text, "true")) 00042 return true; 00043 else if(!strcasecmp(text, "yes")) 00044 return true; 00045 else if(!strcasecmp(text, "1")) 00046 return true; 00047 else 00048 throw cRuntimeError("unknown bool constant: %s", text); 00049 }