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)