const ACTION: ACT_CPY is action "ACT_CPY";
const ACTION: ACT_EQ is action "ACT_EQ";
const ACTION: ACT_GEN is action "ACT_GEN";
const ACTION: ACT_ICONV1 is action "ACT_ICONV1";
const ACTION: ACT_ICONV3 is action "ACT_ICONV3";
const ACTION: ACT_NE is action "ACT_NE";
const ACTION: ACT_ORD is action "ACT_ORD";
const ACTION: ACT_STR is action "ACT_STR";
const ACTION: ACT_VALUE is action "ACT_VALUE";
const proc: act_prototypes (inout file: c_prog) is func
begin
declareExtern(c_prog, "actType actGen (striType);");
declareExtern(c_prog, "actType actIConv (intType);");
declareExtern(c_prog, "intType actOrd (actType);");
declareExtern(c_prog, "striType actStr (actType);");
declareExtern(c_prog, "actType actValue (const const_objRefType);");
end func;
const proc: process (ACT_CPY, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
local
var expr_type: c_param1 is expr_type.value;
var expr_type: c_param3 is expr_type.value;
begin
process_expr(params[1], c_param1);
c_param3.temp_num := c_param1.temp_num;
process_expr(params[3], c_param3);
if c_param3.temp_num <> 0 then
c_expr.expr &:= "{\n";
appendWithDiagnostic(c_param1.temp_decls, c_expr);
appendWithDiagnostic(c_param3.temp_decls, c_expr);
appendWithDiagnostic(c_param1.temp_assigns, c_expr);
appendWithDiagnostic(c_param3.temp_assigns, c_expr);
end if;
setDiagnosticLine(c_expr);
c_expr.expr &:= c_param1.expr;
c_expr.expr &:= "=";
if c_param3.result_expr <> "" then
c_expr.expr &:= c_param3.result_expr;
else
c_expr.expr &:= c_param3.expr;
end if;
c_expr.expr &:= ";\n";
if c_param3.temp_num <> 0 then
appendWithDiagnostic(c_param1.temp_frees, c_expr);
appendWithDiagnostic(c_param3.temp_frees, c_expr);
c_expr.expr &:= "}\n";
end if;
end func;
const proc: process (ACT_EQ, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
c_expr.expr &:= "(";
process_expr(params[1], c_expr);
c_expr.expr &:= ") == (";
process_expr(params[3], c_expr);
c_expr.expr &:= ")";
end func;
const proc: process (ACT_GEN, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
compilerLibraryUsed := TRUE;
c_expr.expr &:= "actGen(";
process_expr(params[2], c_expr);
c_expr.expr &:= ")";
end func;
const proc: process (ACT_ICONV1, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
compDataLibraryUsed := TRUE;
c_expr.expr &:= "actIConv(";
process_expr(params[1], c_expr);
c_expr.expr &:= ")";
end func;
const proc: process (ACT_ICONV3, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
compDataLibraryUsed := TRUE;
c_expr.expr &:= "actIConv(";
process_expr(params[3], c_expr);
c_expr.expr &:= ")";
end func;
const proc: process (ACT_NE, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
c_expr.expr &:= "(";
process_expr(params[1], c_expr);
c_expr.expr &:= ") != (";
process_expr(params[3], c_expr);
c_expr.expr &:= ")";
end func;
const proc: process (ACT_ORD, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
compilerLibraryUsed := TRUE;
c_expr.expr := "actOrd(";
process_expr(params[1], c_expr);
c_expr.expr &:= ")";
end func;
const proc: process (ACT_STR, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
compilerLibraryUsed := TRUE;
prepare_stri_result(c_expr);
c_expr.result_expr := "actStr(";
getStdParamToResultExpr(params[1], c_expr);
c_expr.result_expr &:= ")";
end func;
const proc: process (ACT_VALUE, in reference: function,
in ref_list: params, inout expr_type: c_expr) is func
begin
compDataLibraryUsed := TRUE;
c_expr.expr &:= "actValue(";
process_expr(params[1], c_expr);
c_expr.expr &:= ")";
end func;