Skip to content

Instantly share code, notes, and snippets.

@risavkarna
Created April 9, 2013 12:43
Show Gist options
  • Save risavkarna/5345411 to your computer and use it in GitHub Desktop.
Save risavkarna/5345411 to your computer and use it in GitHub Desktop.
int SpaceObjectRegister::getValue(void* value, std::string name){
string objtype = name.substr(0, name.find('['));
string id_type = name.substr(name.find('[')+1, name.find(']')-name.find('[')-1);
int index = atoi(id_type.c_str());
void* _value;
varsRegister->getValue(_value, id_type);
ArgumentType _type;
if (objtype == "Martians") {
if(*(int*) varsRegister >= 0 && *(int*) varsRegister < Martians.size()){
int i = 0;
for (std::list<SpaceObject>::iterator it = Martians.begin(), end = Martians.end(); it != end; ++it) {
if (i == index){
value = static_cast <void*>(&(*it));
return 0;
} else {
i++;
}
}
}
} else if (objtype == "Boulders") {
if(*(int*) varsRegister >= 0 && *(int*) varsRegister < Boulders.size()){
int i = 0;
for (std::list<SpaceObject>::iterator it = Boulders.begin(), end = Boulders.end(); it != end; ++it) {
if (i == index){
value = static_cast <void*>(&(*it));
return 0;
} else {
i++;
}
}
}
} else if (objtype == "Craters") {
if(*(int*) varsRegister >= 0 && *(int*) varsRegister < Craters.size()){
int i = 0;
for (std::list<SpaceObject>::iterator it = Craters.begin(), end = Craters.end(); it != end; ++it) {
if (i == index){
value = static_cast <void*>(&(*it));
return 0;
} else {
i++;
}
}
}
} else {
return 1;
}
}
int SpaceObjectRegister::setValue(void* value, ArgumentType type, std::string name){
string objtype = name.substr(0, name.find('['));
string id_type = name.substr(name.find('[')+1, name.find(']')-name.find('[')-1);
int index = atoi(id_type.c_str());
void* _value;
varsRegister->getValue(_value, id_type);
ArgumentType _type;
if (objtype == "Martians") {
if(*(int*) varsRegister >= 0 && *(int*) varsRegister < Martians.size()){
int i = 0;
for (std::list<SpaceObject>::iterator it = Martians.begin(), end = Martians.end(); it != end; ++it) {
if (i == index) {
SpaceObject *temp = (SpaceObject*) value;
*it = (*temp);
} else {
i++;
}
}
return 0;
} else {
return 1;
}
} else if (objtype == "Boulders") {
if(*(int*) varsRegister >= 0 && *(int*) varsRegister < Martians.size()){
int i = 0;
for (std::list<SpaceObject>::iterator it = Boulders.begin(), end = Boulders.end(); it != end; ++it) {
if (i == index) {
SpaceObject *temp = (SpaceObject*) value;
*it = (*temp);
} else {
i++;
}
}
return 0;
} else {
return 1;
}
} else if (objtype == "Craters") {
if(*(int*) varsRegister >= 0 && *(int*) varsRegister < Martians.size()){
int i = 0;
for (std::list<SpaceObject>::iterator it = Craters.begin(), end = Craters.end(); it != end; ++it) {
if (i == index) {
SpaceObject *temp = (SpaceObject*) value;
*it = (*temp);
} else {
i++;
}
}
return 0;
} else {
return 1;
}
} else {
return 1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment