vm_t *vm_new() { vm_t *vm; vm = malloc(sizeof(struct vm)); if (!vm) return NULL; memset(vm, '\0', sizeof(struct vm)); // Allocate 64k for code vm->code = malloc(0xFFFF); if (vm->code == NULL) { return NULL; } memset(vm->code, '\0', 0xFFFF); vm->code_size = 0; // Allocate a 64k heap GCState* gc = gc_init(0xFFFF * 2); vm->gc = gc; vm->function_names = strings_new(); vm->intern_pool = strings_new(); vm->ip = 0; vm->current_frame = 0; vm->current_function = NULL; memset(vm->functions, NO_FUNCTION, MAX_FUNCTIONS * sizeof(uint64_t)); opcode_init(vm); return vm; }
int test_strings_new() { /// { // char *src = "This is a string.."; char *str = strings_new(src); // char *assert_message = "Testing strings copy for regular string.."; int assert_result = (strcmp(str, src) == 0) ? TRUE : FALSE; ctest_assert_true(assert_result, assert_message); // strings_free(str); } /// { // char *src = ""; char *str = strings_new(src); // char *assert_message = "Testing string copy for empty string.."; int assert_result = (strcmp(str, src) == 0) ? TRUE : FALSE; ctest_assert_true(assert_result, assert_message); // strings_free(str); } /// { // char *src = NULL; char *str = strings_new(src); // char *assert_message = "Testing string copy for NULL.."; int assert_result = (str == NULL) ? TRUE : FALSE; ctest_assert_true(assert_result, assert_message); // strings_free(str); } // return 0; }
func_t *func_strings(int n) { func_t *f=NULL; f=func_new(__func_strings); func_strings_p_replace(f,strings_new(n)); return f; }
struct cprocessor_command *cprocessor_command_new(char *nazev, char *kategorie, int (*function)()) { // struct cprocessor_command *command_ptr; // command_ptr = (struct cprocessor_command *) malloc(sizeof(struct cprocessor_command)); // if(command_ptr) { command_ptr -> nazev = strings_new(nazev); command_ptr -> kategorie = strings_new(kategorie); command_ptr -> function = function; } // return command_ptr; }
void func_strings_p_new(func_t *f) { if(f->p.s!=NULL){ func_strings_p_del(f); } f->ptype=FUNC_P_STRINGS; f->p.s=strings_new(0); }