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)