41 block_infos = GetBlockType(type) |
41 block_infos = GetBlockType(type) |
42 if block_infos["type"] == "function": |
42 if block_infos["type"] == "function": |
43 output_variable = block.outputVariables.getvariable()[0] |
43 output_variable = block.outputVariables.getvariable()[0] |
44 output_name = "%s%d_OUT"%(type, block.getlocalId()) |
44 output_name = "%s%d_OUT"%(type, block.getlocalId()) |
45 if not generator.ComputedBlocks.get(block, False) and not order: |
45 if not generator.ComputedBlocks.get(block, False) and not order: |
|
46 generator.ComputedBlocks[block] = True |
46 if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]: |
47 if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]: |
47 generator.Interface.append(("VAR", False, False, False, [])) |
48 generator.Interface.append(("VAR", False, False, False, [])) |
48 if output_variable.connectionPointOut in generator.ConnectionTypes: |
49 if output_variable.connectionPointOut in generator.ConnectionTypes: |
49 generator.Interface[-1][4].append((generator.ConnectionTypes[output_variable.connectionPointOut], output_name, None, None)) |
50 generator.Interface[-1][4].append((generator.ConnectionTypes[output_variable.connectionPointOut], output_name, None, None)) |
50 else: |
51 else: |
62 else: |
63 else: |
63 paths = paths[0] |
64 paths = paths[0] |
64 value = generator.ComputeLDExpression(paths, True) |
65 value = generator.ComputeLDExpression(paths, True) |
65 vars.append(generator.ExtractModifier(variable, value)) |
66 vars.append(generator.ExtractModifier(variable, value)) |
66 generator.Program += " %s := %s(%s);\n"%(output_name, type, ", ".join(vars)) |
67 generator.Program += " %s := %s(%s);\n"%(output_name, type, ", ".join(vars)) |
67 generator.ComputedBlocks[block] = True |
|
68 return generator.ExtractModifier(output_variable, output_name) |
68 return generator.ExtractModifier(output_variable, output_name) |
69 elif block_infos["type"] == "functionBlock": |
69 elif block_infos["type"] == "functionBlock": |
70 if not generator.ComputedBlocks.get(block, False) and not order: |
70 if not generator.ComputedBlocks.get(block, False) and not order: |
|
71 generator.ComputedBlocks[block] = True |
71 vars = [] |
72 vars = [] |
72 for variable in block.inputVariables.getvariable(): |
73 for variable in block.inputVariables.getvariable(): |
73 connections = variable.connectionPointIn.getconnections() |
74 connections = variable.connectionPointIn.getconnections() |
74 if connections and len(connections) == 1: |
75 if connections and len(connections) == 1: |
75 parameter = variable.getformalParameter() |
76 parameter = variable.getformalParameter() |
82 else: |
83 else: |
83 paths = paths[0] |
84 paths = paths[0] |
84 value = generator.ComputeLDExpression(paths, True) |
85 value = generator.ComputeLDExpression(paths, True) |
85 vars.append("%s := %s"%(parameter, generator.ExtractModifier(variable, value))) |
86 vars.append("%s := %s"%(parameter, generator.ExtractModifier(variable, value))) |
86 generator.Program += " %s(%s);\n"%(name, ", ".join(vars)) |
87 generator.Program += " %s(%s);\n"%(name, ", ".join(vars)) |
87 generator.ComputedBlocks[block] = True |
|
88 if link: |
88 if link: |
89 connectionPoint = link.getposition()[-1] |
89 connectionPoint = link.getposition()[-1] |
90 else: |
90 else: |
91 connectionPoint = None |
91 connectionPoint = None |
92 for variable in block.outputVariables.getvariable(): |
92 for variable in block.outputVariables.getvariable(): |