int main(){ Object *o = object_ini(); char name[] = "TestingName"; char desc[] = "TestingDesc"; char *nameret, *descret; object_set_name(o, name); object_set_desc(o, desc); object_set_spaceid(o, 1); object_set_id(o, 2); object_pick(o); nameret = object_return_name(o); descret = object_return_desc(o); if (strcmp(nameret, name) == 0) printf("set and return name: OK\n"); if (strcmp(descret, desc) == 0) printf("set and return desc: OK\n"); if (object_return_spaceid(o) == 1) printf("set and return spaceid: OK\n"); if (object_return_id(o) == 2) printf("set and return id: OK\n"); if (object_return_has(o) == TRUE) printf("pick and return has: OK\n"); object_drop(o); if (object_return_has(o) == FALSE) printf("drop: OK\n"); object_free(o); return 1; }
static char *sanitize_name(OBJECT *obj) { SAFENAME *safe = (SAFENAME*)malloc(sizeof(SAFENAME)); if ( !safe ) return NULL; safe->old = obj->name; char buffer[1024]; sprintf(buffer,"%s%llX",global_sanitizeprefix.get_string(),(unsigned int64)safe); safe->name = object_set_name(obj,buffer); safe->next = safename_list; safename_list = safe; return safe->name; }
void *tobject_alloc () { printf("Allocating object class\n"); Object *obj = calloc(sizeof(TObject), 1); obj->initializer = (void (*)(void*))tobject_initialize; obj->finalizer = (void (*)(void*))tobject_finalize; object_set_name(obj, "object"); object_set_parent(obj, NULL); object_initialize(obj); TObjectClass = obj; return obj; }
char *gld_loadHndl::start_element_module_build_object(const Attributes &attributes){ static wchar_t str_id[3], str_name[5], str_type[5]; static size_t str_id_len = mbstowcs(str_id, "id", 3), str_name_len = mbstowcs(str_name, "name", 5), str_type_len = mbstowcs(str_type, "type", 5); char object_type[64], object_id[64], object_name[64]; char *temp = NULL; char *retval = NULL; int first = -1, last = -1; if(attributes.getIndex((const XMLCh *) str_type) < 0){ sprintf(errmsg, "object tag without a type in start_element_module_build_object()"); return errmsg; } else { wcstombs(object_type, (const wchar_t *)attributes.getValue((const XMLCh *) str_type), 64); oclass = class_get_class_from_classname_in_module(object_type, module); if(oclass == NULL){ sprintf(errmsg, "Class \"%s\" for module \"%s\"is not recognized in start_element_module_build_object()", object_type, module->name); return errmsg; } else { ; /* recognized class type */ } } if(attributes.getIndex((const XMLCh *) str_id) < 0){ /* anonymous objects are legit - mh */ last = first = -1; } else { wcstombs(object_id, (wchar_t *)attributes.getValue((const XMLCh *) str_id), 64); temp = strchr(object_id, '.'); if(temp == NULL){ /* no "..", just a number*/ first = strtol(object_id, NULL, 10); if(first < 0){ sprintf(errmsg, "Invalid object id of %i in start_element_module_build_object()", first); return errmsg; } else { last = first; } } else { if(temp[0] == temp[1]){ if(temp == object_id){ /* "..x", count */ last = strtol(object_id+2, NULL, 10); if(last < 1){ sprintf(errmsg, "Invalid object id of %i in start_element_module_build_object()", first); return errmsg; } else { first = -1; } } else { /* "x..y", range */ *temp = 0; first = strtol(object_id, NULL, 10); last = strtol(temp+2, NULL, 10); *temp = '.'; if(first < 0){ output_error("XML_Load: first ID < 0 !"); sprintf(errmsg, "Invalid object id of %i in start_element_module_build_object()", first); return errmsg; } if(last < 1){ output_error("XML_Load: last ID < 1 !"); sprintf(errmsg, "Invalid object id of %i in start_element_module_build_object()", first); return errmsg; } if(first >= last){ output_error("XML_Load: first id >= last id!"); sprintf(errmsg, "Invalid object id of %i in start_element_module_build_object()", first); return errmsg; } } } else { sprintf(errmsg, "Invalid ID format in start_element_module_build_object()"); return errmsg; } } } if((retval = build_object_vect(first, last)) != 0){ /* unable to call constructors */ sprintf(errmsg, "Unable to create objects in start_element_module_build_object()"); return errmsg; } else { ; } if(attributes.getIndex((const XMLCh *) str_name) < 0){ strcpy(object_name, "(none)"); } else { wcstombs(object_name, (wchar_t *)attributes.getValue((const XMLCh *) str_name), 64); object_set_name(obj, object_name); } //printf("object: type = %s, id = %s, name = %s\n", object_type, object_id, object_name); stack_state = OBJECT_STATE; return NULL; }