Mercurial > repos > rhope
comparison cbackend.rhope @ 87:3c4325e6298f
Add First@Dictionary (need to find mem man bug)
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 30 Jul 2010 01:48:59 -0400 |
parents | 27bb051d631c |
children | f69987c58fa8 |
comparison
equal
deleted
inserted
replaced
83:27bb051d631c | 87:3c4325e6298f |
---|---|
1341 | 1341 |
1342 Dispatch@C Program[program,all methods:out] | 1342 Dispatch@C Program[program,all methods:out] |
1343 { | 1343 { |
1344 out <- [[[[["typedef enum {\n" | 1344 out <- [[[[["typedef enum {\n" |
1345 ]Append[Fold["_Dispatch Enum", | 1345 ]Append[Fold["_Dispatch Enum", |
1346 [Fold["_Dispatch Enum Methods", "", all methods]]Append["\tFUNC_Build,\n\tFUNC_BlueprintSP_Of,\n\tFUNC_ID,\n"], | 1346 [Fold["_Dispatch Enum Methods", "", all methods]]Append["\tFUNC_Build,\n\tFUNC_BlueprintSP_Of,\n\tFUNC_ID,\n\tFUNC_BlueprintSP_FromSP_ID,\n"], |
1347 [program]Functions >>]] | 1347 [program]Functions >>]] |
1348 ]Append["\tEND\n} funcids;\n\n"] | 1348 ]Append["\tEND\n} funcids;\n\n"] |
1349 ]Append["#define DISPATCH switch(func) { \\\n"] | 1349 ]Append["#define DISPATCH switch(func) { \\\n"] |
1350 ]Append[Fold["_Dispatch Switch", | 1350 ]Append[Fold["_Dispatch Switch", |
1351 [Fold["_Dispatch Switch Methods", "", all methods]]Append["\tcase FUNC_Build: goto f_Build;\\\n\tcase FUNC_BlueprintSP_Of: goto f_BlueprintSP_Of;\\\n\tcase FUNC_ID: goto f_ID;\\\n"], | 1351 [Fold["_Dispatch Switch Methods", "", all methods]]Append["\tcase FUNC_Build: goto f_Build;\\\n\tcase FUNC_BlueprintSP_Of: goto f_BlueprintSP_Of;\\\n\tcase FUNC_ID: goto f_ID;\\\n\tcase FUNC_BlueprintSP_FromSP_ID: goto f_BlueprintSP_FromSP_ID;\\\n"], |
1352 [program]Functions >>]] | 1352 [program]Functions >>]] |
1353 ]Append["\tcase END: goto DO_END;\\\n}\n\n"] | 1353 ]Append["\tcase END: goto DO_END;\\\n}\n\n"] |
1354 } | 1354 } |
1355 | 1355 |
1356 Not Native[func:out] | 1356 Not Native[func:out] |
1440 ]Append["\n | 1440 ]Append["\n |
1441 int32_t rhope(uint32_t func, object ** params, uint16_t numparams, uint16_t callspace) | 1441 int32_t rhope(uint32_t func, object ** params, uint16_t numparams, uint16_t callspace) |
1442 { | 1442 { |
1443 uint16_t resume,idx, vcparam_offset, last_vcparam; | 1443 uint16_t resume,idx, vcparam_offset, last_vcparam; |
1444 context * ct; | 1444 context * ct; |
1445 calldata * cdata, *temp_cdata, *my_cdata;\n\nFuncDef(Build)\nFuncDef(BlueprintSP_Of)\nFuncDef(ID)\n"] | 1445 calldata * cdata, *temp_cdata, *my_cdata;\n\nFuncDef(Build)\nFuncDef(BlueprintSP_Of)\nFuncDef(ID)\nFuncDef(BlueprintSP_FromSP_ID)\n"] |
1446 ]Append[Fold["Local Pointers", "", [program]Functions >>]] | 1446 ]Append[Fold["Local Pointers", "", [program]Functions >>]] |
1447 ]Append[" | 1447 ]Append[" |
1448 ct = new_context(); | 1448 ct = new_context(); |
1449 cdata = alloc_cdata(ct, NULL, callspace); | 1449 cdata = alloc_cdata(ct, NULL, callspace); |
1450 cdata->num_params = numparams; | 1450 cdata->num_params = numparams; |
1484 lv_ID->id = new_object(TYPE_UINT32); | 1484 lv_ID->id = new_object(TYPE_UINT32); |
1485 ((t_UInt32 *)lv_ID->id)->Num = ((t_Blueprint *)cdata->params[0])->bp->type_id; | 1485 ((t_UInt32 *)lv_ID->id)->Num = ((t_Blueprint *)cdata->params[0])->bp->type_id; |
1486 release_ref(cdata->params[0]); | 1486 release_ref(cdata->params[0]); |
1487 Ret(0, lv_ID->id) | 1487 Ret(0, lv_ID->id) |
1488 EndFunc(ID) | 1488 EndFunc(ID) |
1489 DISPATCH | |
1490 | |
1491 Func(BlueprintSP_FromSP_ID, NumParams 1) | |
1492 | |
1493 Param(0, TYPE_UINT32) | |
1494 | |
1495 lv_BlueprintSP_FromSP_ID->type = ((t_UInt32 *)cdata->params[0])->Num; | |
1496 if (lv_BlueprintSP_FromSP_ID->type >= max_registered_type || !registered_types[lv_BlueprintSP_FromSP_ID->type]) { | |
1497 Ret(1, cdata->params[0]) | |
1498 Ret(0, NULL) | |
1499 } else { | |
1500 release_ref(cdata->params[0]); | |
1501 Ret(0, new_object(TYPE_BLUEPRINT)) | |
1502 ((t_Blueprint *)cdata->params[0])->bp = registered_types[lv_BlueprintSP_FromSP_ID->type]; | |
1503 Ret(1, NULL) | |
1504 } | |
1505 | |
1506 EndFunc(BlueprintSP_FromSP_ID) | |
1489 DISPATCH\n"] | 1507 DISPATCH\n"] |
1490 ]Append[Fold[["_Text C Program"]Set Input[2, [program]Type Registry >>], "", Filter[[program]Functions >>, "Native"]]] | 1508 ]Append[Fold[["_Text C Program"]Set Input[2, [program]Type Registry >>], "", Filter[[program]Functions >>, "Native"]]] |
1491 ]Append[" | 1509 ]Append[" |
1492 DO_END: | 1510 DO_END: |
1493 for(idx = 0; idx < cdata->num_params; ++idx) | 1511 for(idx = 0; idx < cdata->num_params; ++idx) |