//No v drugom smisle reference. private void make_object_operator(ref_type_node ctn, SemanticTree.basic_function_type bas_ft, string name, type_node ret_type, SemanticTree.parameter_type first_parameter_type) { parameterArrayList pars = new parameterArrayList(); basic_function_node bfn = new basic_function_node(bas_ft, pars, ret_type); bfn.is_overload = true; basic_parameter to = new basic_parameter(compiler_string_consts.left_param_name, ctn, first_parameter_type, bfn); basic_parameter from = new basic_parameter(compiler_string_consts.right_param_name, ctn, SemanticTree.parameter_type.value, bfn); pars.Add(to); pars.Add(from); ctn.add_additional_name(name, new SymbolInfo(bfn)); }
private string get_pointer_name(ref_type_node ctn) { type_node tn = ctn.pointed_type; int i = 1; while (tn is ref_type_node) { i++; tn = (tn as ref_type_node).pointed_type; } string s = get_name(tn); for (int j = 0; j < i; j++) { s += "*"; } return(s); }
public void init_reference_type(ref_type_node ctn) { make_assign_operator(ctn); make_equivalence_operator(ctn); make_not_equivalence_operator(ctn); }
private void make_not_equivalence_operator(ref_type_node ctn) { make_object_operator(ctn,SemanticTree.basic_function_type.objnoteq,compiler_string_consts.noteq_name,_bool_type); }
private void make_assign_operator(ref_type_node ctn) { make_object_operator(ctn,SemanticTree.basic_function_type.objassign,compiler_string_consts.assign_name, ctn,SemanticTree.parameter_type.var); }
private void make_object_operator(ref_type_node ctn,SemanticTree.basic_function_type bas_ft,string name, type_node ret_type) { make_object_operator(ctn,bas_ft,name,ret_type,SemanticTree.parameter_type.value); }
//No v drugom smisle reference. private void make_object_operator(ref_type_node ctn,SemanticTree.basic_function_type bas_ft, string name,type_node ret_type,SemanticTree.parameter_type first_parameter_type) { parameterArrayList pars=new parameterArrayList(); basic_function_node bfn=new basic_function_node(bas_ft,pars,ret_type); bfn.is_overload=true; basic_parameter to=new basic_parameter(compiler_string_consts.left_param_name,ctn, first_parameter_type,bfn); basic_parameter from=new basic_parameter(compiler_string_consts.right_param_name,ctn, SemanticTree.parameter_type.value,bfn); pars.Add(to); pars.Add(from); ctn.add_additional_name(name,new SymbolInfo(bfn)); }
private void make_not_equivalence_operator(ref_type_node ctn) { make_object_operator(ctn, SemanticTree.basic_function_type.objnoteq, compiler_string_consts.noteq_name, _bool_type); }
private void make_assign_operator(ref_type_node ctn) { make_object_operator(ctn, SemanticTree.basic_function_type.objassign, compiler_string_consts.assign_name, ctn, SemanticTree.parameter_type.var); }
private void make_object_operator(ref_type_node ctn, SemanticTree.basic_function_type bas_ft, string name, type_node ret_type) { make_object_operator(ctn, bas_ft, name, ret_type, SemanticTree.parameter_type.value); }