00001
00002
00003 #include "cheprep/DefaultHepRepType.h"
00004
00005 using namespace std;
00006 using namespace HEPREP;
00007
00012 namespace cheprep {
00013
00014 DefaultHepRepType::DefaultHepRepType(HepRepType* parentType, string typeName)
00015 : DefaultHepRepDefinition(), parent(parentType), name(typeName) {
00016 this->description = "No Description";
00017 this->infoURL = "No Info URL";
00018
00019
00020 if (parent != NULL) {
00021 parent->addType(this);
00022 }
00023 }
00024
00025 DefaultHepRepType::DefaultHepRepType(HepRepTypeTree* parentTypeTree, string typeName)
00026 : DefaultHepRepDefinition(), parent(NULL), name(typeName) {
00027 this->description = "No Description";
00028 this->infoURL = "No Info URL";
00029
00030 parentTypeTree->addType(this);
00031 }
00032
00033 DefaultHepRepType::~DefaultHepRepType() {
00034 for (vector<HepRepType*>::iterator i1 = types.begin(); i1 != types.end(); i1++) {
00035 delete (*i1);
00036 }
00037 }
00038
00039 HepRepType* DefaultHepRepType::getSuperType() {
00040 return parent;
00041 }
00042
00043 HepRepAttDef* DefaultHepRepType::getAttDef(string defName) {
00044 HepRepAttDef* def = NULL;
00045 HepRepType* type = this;
00046 while ((def == NULL) && (type != NULL)) {
00047 def = type->getAttDefFromNode(defName);
00048 type = type->getSuperType();
00049 }
00050 if (def == NULL) {
00051 cerr << "ERROR: No HepRepDefaults, trying to get definition for: " << defName << endl;
00052
00053 }
00054 return def;
00055 }
00056
00060 HepRepAttValue* DefaultHepRepType::getAttValue(string attName) {
00061 HepRepAttValue* value = NULL;
00062 HepRepType* type = this;
00063 while ((value == NULL) && (type != NULL)) {
00064 value = type->getAttValueFromNode(attName);
00065 type = type->getSuperType();
00066 }
00067 if (value == NULL) {
00068 cerr << "ERROR: No HepRepDefaults, trying to get value for: " << attName << endl;
00069
00070 }
00071 return value;
00072 }
00073
00074 HepRepType* DefaultHepRepType::copy(HepRepType*) {
00075 cerr << "DefaultHepRepType::copy(HepRepType*) not implemented." << endl;
00076 return NULL;
00077 }
00078
00079 string DefaultHepRepType::getName() {
00080 return name;
00081 }
00082
00083 string DefaultHepRepType::getFullName() {
00084 return (getSuperType() == NULL) ? getName() : getSuperType()->getFullName() + "/" + getName();
00085 }
00086
00087 string DefaultHepRepType::getDescription() {
00088 return description;
00089 }
00090
00091 void DefaultHepRepType::setDescription(string desc) {
00092 this->description = desc;
00093 }
00094
00095 string DefaultHepRepType::getInfoURL() {
00096 return infoURL;
00097 }
00098
00099 void DefaultHepRepType::setInfoURL(string info) {
00100 this->infoURL = info;
00101 }
00102
00103 void DefaultHepRepType::addType(HepRepType* type) {
00104
00105 types.push_back(type);
00106 }
00107
00108 vector<HepRepType*> DefaultHepRepType::getTypeList() {
00109 return types;
00110 }
00111
00112
00113 }