Cr3V3TT3
05-14-2005, 13:41
Hi all !
I' m working on the EGO Script Engine.
I just finish the hardest thing i guess... the objects!
class CProp
{
char* name;
char* value;
public:
CProp(char*);
~CProp();
char* GetName() {return name;}
void SetProp(char* valu){value = valu;}
char* GetProp(){return value;}
};
CProp::CProp(char* input)
{
name = input;
}
CProp::~CProp()
{
name = "";
value = "";
}
class CObject
{
char* name;
std::vector<CProp> props;
std::vector<CProp>::iterator props_it;
public:
CObject(char*);
~CObject();
bool CreateProp(char* name, char* defaultval)
{
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == name)
{
std::cout << "Error: 0003 , Props: " << name << " is already defined.\n";
return false;
}
}
props.push_back(name);
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == name)
{
props_it->SetProp(defaultval);
return true;
}
}
return false;
}
bool DeleteProp(char* name)
{
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == name)
{
props.erase(props_it);
return true;
}
}
std::cout << "Error: 0002 , Object: " << name << " can' t be deleted because it isn' t exist or can' t found his index.\n";
return false;
}
char* GetName() {return name;}
std::vector<CProp> GetPropList() {return props;}
};
CObject::CObject(char* input)
{
name = input;
}
CObject::~CObject()
{
name = "";
props.clear();
}
class CObjectManager
{
std::vector<CObject> objects;
std::vector<CObject>::iterator objects_it;
public:
bool CreateObject(char* name)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == name)
{
std::cout << "Error: 0001 , Object: " << name << " is already defined.\n";
return false;
}
}
objects.push_back(name);
return true;
}
bool DeleteObject(char* name)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == name)
{
objects.erase(objects_it);
return true;
}
}
std::cout << "Error: 0002 , Object: " << name << " can' t be deleted because it isn' t exist or can' t found his index.\n";
return false;
}
std::vector<CObject> GetObjectsList() { return objects; }
// Helpers
std::vector<CProp> GetPropsByObj(char* name)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == name)
{
return objects_it->GetPropList();
}
}
}
char GetPropByObj(char* objname, char* propname)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == objname)
{
std::vector<CProp> props = objects_it->GetPropList();
std::vector<CProp>::iterator props_it;
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == propname)
{
return *props_it->GetProp();
}
}
}
}
}
bool CreatePropByObj( char* objname, char* propname, char* defvalue)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == objname)
{
return objects_it->CreateProp(propname, defvalue);
}
}
}
bool DeletePropByObj( char* objname, char* propname)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == objname)
{
return objects_it->DeleteProp(propname);
}
}
}
} o_Manager;
This is the tests :
o_Manager.CreateObject("Object1");
o_Manager.CreateObject("Object2");
o_Manager.CreateObject("Object1");
o_Manager.CreateObject("Object3");
o_Manager.CreateObject("Object2");
o_Manager.CreateObject("Object4");
o_Manager.CreateObject("Object5");
o_Manager.CreateObject("Object6");
o_Manager.DeleteObject("Object5");
o_Manager.CreatePropByObj( "Object1" , "Props1", "Value1");
o_Manager.CreatePropByObj( "Object1" , "Props2", "Value2");
o_Manager.CreatePropByObj( "Object1" , "Props3", "Value3");
o_Manager.CreatePropByObj( "Object1" , "Props1", "Value1");
o_Manager.CreatePropByObj( "Object1" , "Props4", "Value4");
o_Manager.CreatePropByObj( "Object1" , "Props5", "Value5");
o_Manager.DeletePropByObj( "Object1" , "Props4");
with a little code to display the objects it show :
Error: 0001 , Object: Object1 is already defined.
Error: 0001 , Object: Object2 is already defined.
Error: 0003 , Props: Props1 is already defined.
Object1
{
Props1 : Value1
Props2 : Value2
Props3 : Value3
Props5 : Value5
}
Object2
{
}
Object3
{
}
Object4
{
}
Object6
{
}
:D
Bye,
Cr3V3TT3
I' m working on the EGO Script Engine.
I just finish the hardest thing i guess... the objects!
class CProp
{
char* name;
char* value;
public:
CProp(char*);
~CProp();
char* GetName() {return name;}
void SetProp(char* valu){value = valu;}
char* GetProp(){return value;}
};
CProp::CProp(char* input)
{
name = input;
}
CProp::~CProp()
{
name = "";
value = "";
}
class CObject
{
char* name;
std::vector<CProp> props;
std::vector<CProp>::iterator props_it;
public:
CObject(char*);
~CObject();
bool CreateProp(char* name, char* defaultval)
{
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == name)
{
std::cout << "Error: 0003 , Props: " << name << " is already defined.\n";
return false;
}
}
props.push_back(name);
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == name)
{
props_it->SetProp(defaultval);
return true;
}
}
return false;
}
bool DeleteProp(char* name)
{
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == name)
{
props.erase(props_it);
return true;
}
}
std::cout << "Error: 0002 , Object: " << name << " can' t be deleted because it isn' t exist or can' t found his index.\n";
return false;
}
char* GetName() {return name;}
std::vector<CProp> GetPropList() {return props;}
};
CObject::CObject(char* input)
{
name = input;
}
CObject::~CObject()
{
name = "";
props.clear();
}
class CObjectManager
{
std::vector<CObject> objects;
std::vector<CObject>::iterator objects_it;
public:
bool CreateObject(char* name)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == name)
{
std::cout << "Error: 0001 , Object: " << name << " is already defined.\n";
return false;
}
}
objects.push_back(name);
return true;
}
bool DeleteObject(char* name)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == name)
{
objects.erase(objects_it);
return true;
}
}
std::cout << "Error: 0002 , Object: " << name << " can' t be deleted because it isn' t exist or can' t found his index.\n";
return false;
}
std::vector<CObject> GetObjectsList() { return objects; }
// Helpers
std::vector<CProp> GetPropsByObj(char* name)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == name)
{
return objects_it->GetPropList();
}
}
}
char GetPropByObj(char* objname, char* propname)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == objname)
{
std::vector<CProp> props = objects_it->GetPropList();
std::vector<CProp>::iterator props_it;
for ( props_it = props.begin(); props_it != props.end(); props_it++ )
{
if (props_it->GetName() == propname)
{
return *props_it->GetProp();
}
}
}
}
}
bool CreatePropByObj( char* objname, char* propname, char* defvalue)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == objname)
{
return objects_it->CreateProp(propname, defvalue);
}
}
}
bool DeletePropByObj( char* objname, char* propname)
{
for ( objects_it = objects.begin(); objects_it != objects.end(); objects_it++ )
{
if (objects_it->GetName() == objname)
{
return objects_it->DeleteProp(propname);
}
}
}
} o_Manager;
This is the tests :
o_Manager.CreateObject("Object1");
o_Manager.CreateObject("Object2");
o_Manager.CreateObject("Object1");
o_Manager.CreateObject("Object3");
o_Manager.CreateObject("Object2");
o_Manager.CreateObject("Object4");
o_Manager.CreateObject("Object5");
o_Manager.CreateObject("Object6");
o_Manager.DeleteObject("Object5");
o_Manager.CreatePropByObj( "Object1" , "Props1", "Value1");
o_Manager.CreatePropByObj( "Object1" , "Props2", "Value2");
o_Manager.CreatePropByObj( "Object1" , "Props3", "Value3");
o_Manager.CreatePropByObj( "Object1" , "Props1", "Value1");
o_Manager.CreatePropByObj( "Object1" , "Props4", "Value4");
o_Manager.CreatePropByObj( "Object1" , "Props5", "Value5");
o_Manager.DeletePropByObj( "Object1" , "Props4");
with a little code to display the objects it show :
Error: 0001 , Object: Object1 is already defined.
Error: 0001 , Object: Object2 is already defined.
Error: 0003 , Props: Props1 is already defined.
Object1
{
Props1 : Value1
Props2 : Value2
Props3 : Value3
Props5 : Value5
}
Object2
{
}
Object3
{
}
Object4
{
}
Object6
{
}
:D
Bye,
Cr3V3TT3