/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#include "pgl/pgl.h"
#include "xstd/String.h"
#include "pgl/PglRec.h"
#include "pgl/PglStringSym.h"
#include "pgl/AddrMapSym.h"
String AddrMapSym::TheType = "AddrMap";
static String strAddrArr = "addr[]";
static String strAddresses = "addresses";
static String strNames = "names";
static String strZone = "zone";
AddrMapSym::AddrMapSym(): RecSym(TheType, new PglRec) {
theRec->bAdd(StringSym::TheType, strZone, 0);
theRec->bAdd(strAddrArr, strAddresses, 0);
theRec->bAdd(strAddrArr, strNames, 0);
}
AddrMapSym::AddrMapSym(const String &aType, PglRec *aRec): RecSym(aType, aRec) {
}
bool AddrMapSym::isA(const String &type) const {
return RecSym::isA(type) || type == TheType;
}
SynSym *AddrMapSym::dupe(const String &type) const {
if (isA(type))
return new AddrMapSym(this->type(), theRec->clone());
return RecSym::dupe(type);
}
String AddrMapSym::zone() const {
return getString(strZone);
}
bool AddrMapSym::addresses(Array<NetAddr*> &addrs) const {
return getNetAddrs(strAddresses, addrs);
}
bool AddrMapSym::names(Array<NetAddr*> &nms) const {
return getNetAddrs(strNames, nms);
}
const ArraySym *AddrMapSym::addressesSym() const {
return getArraySym(strAddresses);
}
const ArraySym *AddrMapSym::namesSym() const {
return getArraySym(strNames);
}
syntax highlighted by Code2HTML, v. 0.9.1