+developing lambda, added cloning support.
This commit is contained in:
parent
4a116e08e4
commit
f2b42770bd
1
HISTORY
1
HISTORY
@ -1,5 +1,6 @@
|
|||||||
Jan. 6 2016
|
Jan. 6 2016
|
||||||
Added support to use TYPE("NUMBER") to represent both integer and real
|
Added support to use TYPE("NUMBER") to represent both integer and real
|
||||||
|
Developing lambda, added cloning support
|
||||||
|
|
||||||
Jan. 5 2016
|
Jan. 5 2016
|
||||||
Developing lambda, added data structure
|
Developing lambda, added data structure
|
||||||
|
@ -1655,6 +1655,7 @@ static const _func_t _core_libs[] = {
|
|||||||
{ "CALL", _core_call },
|
{ "CALL", _core_call },
|
||||||
{ "DEF", _core_def },
|
{ "DEF", _core_def },
|
||||||
{ "ENDDEF", _core_enddef },
|
{ "ENDDEF", _core_enddef },
|
||||||
|
|
||||||
#ifdef MB_ENABLE_CLASS
|
#ifdef MB_ENABLE_CLASS
|
||||||
{ "CLASS", _core_class },
|
{ "CLASS", _core_class },
|
||||||
{ "ENDCLASS", _core_endclass },
|
{ "ENDCLASS", _core_endclass },
|
||||||
@ -6486,6 +6487,13 @@ int _clone_object(mb_interpreter_t* s, _object_t* obj, _object_t* tgt) {
|
|||||||
break;
|
break;
|
||||||
#endif /* MB_ENABLE_CLASS */
|
#endif /* MB_ENABLE_CLASS */
|
||||||
case _DT_ROUTINE:
|
case _DT_ROUTINE:
|
||||||
|
#ifdef MB_ENABLE_LAMBDA
|
||||||
|
if(obj->data.routine->type == _IT_LAMBDA) {
|
||||||
|
tgt->data.routine = obj->data.routine;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif /* MB_ENABLE_LAMBDA */
|
||||||
mb_assert(0 && "Not implemented.");
|
mb_assert(0 && "Not implemented.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -11433,6 +11441,7 @@ int _core_lambda(mb_interpreter_t* s, void** l) {
|
|||||||
|
|
||||||
mb_assert(s && l);
|
mb_assert(s && l);
|
||||||
|
|
||||||
|
/* Create lambda struct */
|
||||||
routine = (_routine_t*)mb_malloc(sizeof(_routine_t));
|
routine = (_routine_t*)mb_malloc(sizeof(_routine_t));
|
||||||
_init_routine(s, routine, 0, 0);
|
_init_routine(s, routine, 0, 0);
|
||||||
|
|
||||||
@ -11460,6 +11469,7 @@ int _core_lambda(mb_interpreter_t* s, void** l) {
|
|||||||
ast = (_ls_node_t*)*l;
|
ast = (_ls_node_t*)*l;
|
||||||
if(ast) ast = ast->prev;
|
if(ast) ast = ast->prev;
|
||||||
*l = ast;
|
*l = ast;
|
||||||
|
|
||||||
_mb_check_mark(mb_attempt_open_bracket(s, l), err, _error);
|
_mb_check_mark(mb_attempt_open_bracket(s, l), err, _error);
|
||||||
|
|
||||||
ast = (_ls_node_t*)*l;
|
ast = (_ls_node_t*)*l;
|
||||||
@ -11475,7 +11485,7 @@ int _core_lambda(mb_interpreter_t* s, void** l) {
|
|||||||
|
|
||||||
_mb_check_mark(mb_attempt_close_bracket(s, l), err, _error);
|
_mb_check_mark(mb_attempt_close_bracket(s, l), err, _error);
|
||||||
|
|
||||||
/* Return the value */
|
/* Push the return value */
|
||||||
ret.type = MB_DT_ROUTINE;
|
ret.type = MB_DT_ROUTINE;
|
||||||
ret.value.routine = routine;
|
ret.value.routine = routine;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user