*class.
This commit is contained in:
parent
674a0509d0
commit
5eec0ba674
@ -942,7 +942,7 @@ static size_t mb_memtest(void* p, size_t s);
|
|||||||
|
|
||||||
static char* mb_strupr(char* s);
|
static char* mb_strupr(char* s);
|
||||||
|
|
||||||
#define safe_free(__p) do { if(__p) { mb_free(__p); __p = 0; } else { mb_assert(0 && "Memory already released"); } } while(0)
|
#define safe_free(__p) do { if(__p) { mb_free(__p); __p = 0; } else { mb_assert(0 && "Memory already released."); } } while(0)
|
||||||
|
|
||||||
/** Unicode handling */
|
/** Unicode handling */
|
||||||
#ifdef MB_ENABLE_UNICODE
|
#ifdef MB_ENABLE_UNICODE
|
||||||
@ -2428,7 +2428,7 @@ int _get_priority_index(mb_func_t op) {
|
|||||||
} else if(op == _core_neg) {
|
} else if(op == _core_neg) {
|
||||||
result = 18;
|
result = 18;
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unknown operator");
|
mb_assert(0 && "Unknown operator.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -2618,7 +2618,7 @@ int _calc_expression(mb_interpreter_t* s, _ls_node_t** l, _object_t** val) {
|
|||||||
} else if(arr_type == _DT_USERTYPE) {
|
} else if(arr_type == _DT_USERTYPE) {
|
||||||
arr_elem->data.usertype = arr_val.usertype;
|
arr_elem->data.usertype = arr_val.usertype;
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unsupported");
|
mb_assert(0 && "Unsupported.");
|
||||||
}
|
}
|
||||||
if(f) {
|
if(f) {
|
||||||
_handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result);
|
_handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result);
|
||||||
@ -2686,7 +2686,7 @@ int _calc_expression(mb_interpreter_t* s, _ls_node_t** l, _object_t** val) {
|
|||||||
} else if(arr_type == _DT_USERTYPE) {
|
} else if(arr_type == _DT_USERTYPE) {
|
||||||
arr_elem->data.usertype = arr_val.usertype;
|
arr_elem->data.usertype = arr_val.usertype;
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unsupported");
|
mb_assert(0 && "Unsupported.");
|
||||||
}
|
}
|
||||||
if(f) {
|
if(f) {
|
||||||
_handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result);
|
_handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result);
|
||||||
@ -3888,7 +3888,7 @@ int _parse_char(mb_interpreter_t* s, char c, int pos, unsigned short row, unsign
|
|||||||
_handle_error(s, SE_PS_INVALID_CHAR, 0, pos, row, col, MB_FUNC_ERR, _exit, result);
|
_handle_error(s, SE_PS_INVALID_CHAR, 0, pos, row, col, MB_FUNC_ERR, _exit, result);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Impossible");
|
mb_assert(0 && "Impossible.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(context->parsing_state == _PS_STRING) {
|
} else if(context->parsing_state == _PS_STRING) {
|
||||||
@ -3906,7 +3906,7 @@ int _parse_char(mb_interpreter_t* s, char c, int pos, unsigned short row, unsign
|
|||||||
/* Do nothing */
|
/* Do nothing */
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unknown parsing state");
|
mb_assert(0 && "Unknown parsing state.");
|
||||||
}
|
}
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
@ -3934,7 +3934,7 @@ int_t _get_size_of(_data_e type) {
|
|||||||
} else if(type == _DT_STRING) {
|
} else if(type == _DT_STRING) {
|
||||||
result = sizeof(char*);
|
result = sizeof(char*);
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unsupported");
|
mb_assert(0 && "Unsupported.");
|
||||||
}
|
}
|
||||||
#else /* MB_SIMPLE_ARRAY */
|
#else /* MB_SIMPLE_ARRAY */
|
||||||
mb_unrefvar(type);
|
mb_unrefvar(type);
|
||||||
@ -4523,14 +4523,14 @@ bool_t _get_array_elem(mb_interpreter_t* s, _array_t* arr, unsigned int index, m
|
|||||||
val->string = *((char**)rawptr);
|
val->string = *((char**)rawptr);
|
||||||
*type = _DT_STRING;
|
*type = _DT_STRING;
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unsupported");
|
mb_assert(0 && "Unsupported.");
|
||||||
}
|
}
|
||||||
#endif /* MB_SIMPLE_ARRAY */
|
#endif /* MB_SIMPLE_ARRAY */
|
||||||
} else if(arr->type == _DT_STRING) {
|
} else if(arr->type == _DT_STRING) {
|
||||||
val->string = *((char**)rawptr);
|
val->string = *((char**)rawptr);
|
||||||
*type = _DT_STRING;
|
*type = _DT_STRING;
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unsupported");
|
mb_assert(0 && "Unsupported.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -4581,7 +4581,7 @@ int _set_array_elem(mb_interpreter_t* s, _ls_node_t* ast, _array_t* arr, unsigne
|
|||||||
arr->types[index] = _DT_USERTYPE;
|
arr->types[index] = _DT_USERTYPE;
|
||||||
#endif /* MB_SIMPLE_ARRAY */
|
#endif /* MB_SIMPLE_ARRAY */
|
||||||
} else {
|
} else {
|
||||||
mb_assert(0 && "Unsupported");
|
mb_assert(0 && "Unsupported.");
|
||||||
}
|
}
|
||||||
|
|
||||||
goto _exit; /* Avoid an unreferenced label warning */
|
goto _exit; /* Avoid an unreferenced label warning */
|
||||||
@ -5126,7 +5126,7 @@ bool_t _assign_with_it(_object_t* tgt, _object_t* src) {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mb_assert(0 && "Impossible");
|
mb_assert(0 && "Impossible.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -5636,7 +5636,7 @@ int _clone_object(_object_t* obj, _object_t* tgt) {
|
|||||||
break;
|
break;
|
||||||
case _DT_ARRAY:
|
case _DT_ARRAY:
|
||||||
tgt->data.array = obj->data.array;
|
tgt->data.array = obj->data.array;
|
||||||
mb_assert(0 && "Not implemented");
|
mb_assert(0 && "Not implemented.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
#ifdef MB_ENABLE_COLLECTION_LIB
|
#ifdef MB_ENABLE_COLLECTION_LIB
|
||||||
@ -5666,13 +5666,13 @@ int _clone_object(_object_t* obj, _object_t* tgt) {
|
|||||||
break;
|
break;
|
||||||
#ifdef MB_ENABLE_CLASS
|
#ifdef MB_ENABLE_CLASS
|
||||||
case _DT_CLASS:
|
case _DT_CLASS:
|
||||||
mb_assert(0 && "Not implemented");
|
mb_assert(0 && "Not implemented.");
|
||||||
/* TODO */
|
/* TODO */
|
||||||
|
|
||||||
break;
|
break;
|
||||||
#endif /* MB_ENABLE_CLASS */
|
#endif /* MB_ENABLE_CLASS */
|
||||||
case _DT_ROUTINE:
|
case _DT_ROUTINE:
|
||||||
mb_assert(0 && "Not implemented");
|
mb_assert(0 && "Not implemented.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case _DT_TYPE: /* Fall through */
|
case _DT_TYPE: /* Fall through */
|
||||||
@ -5687,7 +5687,7 @@ int _clone_object(_object_t* obj, _object_t* tgt) {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mb_assert(0 && "Invalid type");
|
mb_assert(0 && "Invalid type.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -5783,7 +5783,7 @@ int _dispose_object(_object_t* obj) {
|
|||||||
case _DT_USERTYPE: /* Do nothing */
|
case _DT_USERTYPE: /* Do nothing */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mb_assert(0 && "Invalid type");
|
mb_assert(0 && "Invalid type.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -6394,12 +6394,41 @@ int _execute_statement(mb_interpreter_t* s, _ls_node_t** l) {
|
|||||||
ast = *l;
|
ast = *l;
|
||||||
|
|
||||||
obj = (_object_t*)(ast->data);
|
obj = (_object_t*)(ast->data);
|
||||||
|
#ifdef MB_ENABLE_CLASS
|
||||||
|
_pathed:
|
||||||
|
#endif /* MB_ENABLE_CLASS */
|
||||||
switch(obj->type) {
|
switch(obj->type) {
|
||||||
case _DT_FUNC:
|
case _DT_FUNC:
|
||||||
result = (obj->data.func->pointer)(s, (void**)(&ast));
|
result = (obj->data.func->pointer)(s, (void**)(&ast));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case _DT_VAR: /* Fall through */
|
case _DT_VAR:
|
||||||
|
#ifdef MB_ENABLE_CLASS
|
||||||
|
if(obj->data.variable->pathing) {
|
||||||
|
/* Need to path */
|
||||||
|
_ls_node_t* pathed = _search_identifier_in_scope_chain(s, 0, obj->data.variable->name, obj->data.variable->pathing);
|
||||||
|
if(pathed && pathed->data) {
|
||||||
|
if(obj != (_object_t*)pathed->data) {
|
||||||
|
/* Found another node */
|
||||||
|
obj = (_object_t*)pathed->data;
|
||||||
|
|
||||||
|
goto _pathed;
|
||||||
|
} else {
|
||||||
|
/* Final node */
|
||||||
|
result = _core_let(s, (void**)(&ast));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mb_assert(0 && "Impossible.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Do not need to path */
|
||||||
|
result = _core_let(s, (void**)(&ast));
|
||||||
|
}
|
||||||
|
#else /* MB_ENABLE_CLASS */
|
||||||
|
result = _core_let(s, (void**)(&ast));
|
||||||
|
#endif /* MB_ENABLE_CLASS */
|
||||||
|
|
||||||
|
break;
|
||||||
case _DT_ARRAY:
|
case _DT_ARRAY:
|
||||||
result = _core_let(s, (void**)(&ast));
|
result = _core_let(s, (void**)(&ast));
|
||||||
|
|
||||||
@ -6412,7 +6441,7 @@ int _execute_statement(mb_interpreter_t* s, _ls_node_t** l) {
|
|||||||
break;
|
break;
|
||||||
#ifdef MB_ENABLE_CLASS
|
#ifdef MB_ENABLE_CLASS
|
||||||
case _DT_CLASS:
|
case _DT_CLASS:
|
||||||
mb_assert(0 && "Not implemented");
|
mb_assert(0 && "Not implemented.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
#endif /* MB_ENABLE_CLASS */
|
#endif /* MB_ENABLE_CLASS */
|
||||||
@ -9054,7 +9083,7 @@ int _core_let(mb_interpreter_t* s, void** l) {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mb_assert(0 && "Unsupported");
|
mb_assert(0 && "Unsupported.");
|
||||||
safe_free(val);
|
safe_free(val);
|
||||||
_handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result);
|
_handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user