00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ID_H
00029 #define ID_H
00030
00031
00032
00033 #include <BasicUtils/BasicArray.h>
00034 #include <iostream>
00035
00036 class Id {
00037 BasicArray<Id *> children;
00038
00039 public:
00040 typedef enum yapiObject_t {yapiUnknown = -1,
00041 yapiFIFO,
00042 yapiPort,
00043 yapiProcess,
00044 yapiNetwork
00045 } yapiObject_t;
00046
00047 Id(const Id& i);
00048 Id(const char* n, Id* p);
00049 Id& operator=(const Id& i);
00050 virtual ~Id();
00051
00052 Id* parent() const {return pa;}
00053 const char* name() const {return nm;}
00054 const char* fullName(char* buf=0) const;
00055 operator const char*() const {return name();}
00056
00057 Id id(const char* n);
00058
00059 int getNextPortNum() {return ++portNum;}
00060 virtual yapiObject_t getYAPIType() {return yapiUnknown;}
00061 void dumpYMLProp(std::ostream &stream, const char *name, const char *value);
00062 virtual void dumpYML(std::ostream &stream, int tablevel) {};
00063 virtual void dumpYMLChildren(std::ostream &stream, int tablevel);
00064 void dumpFullName(std::ostream &stream);
00065 void tabs(std::ostream &stream, int num);
00066
00067 friend std::ostream &operator<<(std::ostream &stream, Id &i);
00068
00069 private:
00070 char* nm;
00071 Id* pa;
00072 int portNum;
00073 };
00074
00075 std::ostream &operator<<(std::ostream &stream, Id &i);
00076
00077 Id id(const char* n);
00078 #endif