/* Web Polygraph http://www.web-polygraph.org/ * (C) 2003-2006 The Measurement Factory * Licensed under the Apache License, Version 2.0 */ #ifndef POLYGRAPH__PGL_PGLRECSYM_H #define POLYGRAPH__PGL_PGLRECSYM_H #include "xstd/Time.h" #include "xstd/NetAddr.h" #include "xstd/Array.h" #include "pgl/PglBwidthSym.h" #include "pgl/PglExprSym.h" class BigSize; class String; class RndDistr; class StrIdentifier; class StringArray; class PglRec; class ArraySym; class ContainerSym; class RecSym: public ExpressionSym { public: typedef PglRec Rec; public: static String TheType; public: RecSym(const String &aType, Rec *aRec): ExpressionSym(aType), theRec(aRec) {} virtual ~RecSym(); Rec *rec() { return theRec; } virtual SynSymTblItem **memberItem(const String &name); virtual bool isA(const String &type) const; // no fields set bool empty() const; virtual ostream &print(ostream &os, const String &pfx) const; protected: virtual SynSym *dupe(const String &dType) const; bool getBool(const String &name, bool &set) const; bool getInt(const String &name, int &n) const; bool getDouble(const String &name, double &n) const; bool getSize(const String &name, BigSize &sz) const; bool getRate(const String &name, double &rate) const; bool getBwidth(const String &name, Bwidth &bw) const; Time getTime(const String &name) const; RndDistr *getDistr(const String &name) const; String getString(const String &name) const; NetAddr getNetAddr(const String &name) const; bool getNetAddrs(const String &name, Array &) const; bool getStrings(const String &name, Array &strs) const; bool getStringArray(const String &name, StringArray &strs) const; RndDistr *namesToDistr(const String &fieldName, const StrIdentifier &names) const; ContainerSym *getContainerSym(const String &name) const; ArraySym *getArraySym(const String &name) const; RecSym *getRecSym(const String &name, bool emptyOk = false) const; protected: Rec *theRec; }; #endif