Mercurial > repos > rhope
comparison cbackend.rhope @ 83:27bb051d631c
Initial implementation of Dictionary
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 27 Jul 2010 23:33:31 -0400 |
parents | dbe95bfec970 |
children | 6d10b5b9ebc3 3c4325e6298f |
comparison
equal
deleted
inserted
replaced
82:2e2e55fc12f9 | 83:27bb051d631c |
---|---|
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"], | 1346 [Fold["_Dispatch Enum Methods", "", all methods]]Append["\tFUNC_Build,\n\tFUNC_BlueprintSP_Of,\n\tFUNC_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"], | 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"], |
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)\n"] | 1445 calldata * cdata, *temp_cdata, *my_cdata;\n\nFuncDef(Build)\nFuncDef(BlueprintSP_Of)\nFuncDef(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; |
1473 release_ref(cdata->params[0]); | 1473 release_ref(cdata->params[0]); |
1474 | 1474 |
1475 Ret(0, new_object(TYPE_BLUEPRINT)) | 1475 Ret(0, new_object(TYPE_BLUEPRINT)) |
1476 ((t_Blueprint *)cdata->params[0])->bp = lv_BlueprintSP_Of->bp; | 1476 ((t_Blueprint *)cdata->params[0])->bp = lv_BlueprintSP_Of->bp; |
1477 EndFunc(BlueprintSP_Of) | 1477 EndFunc(BlueprintSP_Of) |
1478 DISPATCH | |
1479 | |
1480 Func(ID, NumParams 1) | |
1481 | |
1482 Param(0, TYPE_BLUEPRINT) | |
1483 | |
1484 lv_ID->id = new_object(TYPE_UINT32); | |
1485 ((t_UInt32 *)lv_ID->id)->Num = ((t_Blueprint *)cdata->params[0])->bp->type_id; | |
1486 release_ref(cdata->params[0]); | |
1487 Ret(0, lv_ID->id) | |
1488 EndFunc(ID) | |
1478 DISPATCH\n"] | 1489 DISPATCH\n"] |
1479 ]Append[Fold[["_Text C Program"]Set Input[2, [program]Type Registry >>], "", Filter[[program]Functions >>, "Native"]]] | 1490 ]Append[Fold[["_Text C Program"]Set Input[2, [program]Type Registry >>], "", Filter[[program]Functions >>, "Native"]]] |
1480 ]Append[" | 1491 ]Append[" |
1481 DO_END: | 1492 DO_END: |
1482 for(idx = 0; idx < cdata->num_params; ++idx) | 1493 for(idx = 0; idx < cdata->num_params; ++idx) |