|
1 | 1 | import re
|
2 | 2 | import matlab2cpp as mc
|
3 | 3 | import armadillo as arma
|
| 4 | +from function import type_string |
4 | 5 |
|
5 | 6 | def add_indenting(text):
|
6 | 7 | """Add identing to text
|
@@ -91,17 +92,50 @@ def Headers(node):
|
91 | 92 | def Header(node):
|
92 | 93 | func = node.program[1][node.program[1].names.index(node.name)]
|
93 | 94 | if func.backend == "func_return":
|
94 |
| - code = func[1][0].type + " " + func.name + "(" +\ |
95 |
| - ", ".join([p.type + " " + p.name for p in func[2]]) + ") ;" |
| 95 | + code = func[1][0].type + " " + func.name + "(" |
| 96 | + |
| 97 | + params = "" |
| 98 | + for p in func[2]: |
| 99 | + if p.dim > 0: |
| 100 | + params += ", " + "const " + type_string(p) + "& " + str(p) |
| 101 | + else: |
| 102 | + params += ", " + type_string(p) + " " + str(p) |
| 103 | + |
| 104 | + code += params[2:] + ") ;" |
96 | 105 |
|
97 | 106 | elif func.backend == "func_returns" and not func[1]:
|
98 |
| - code = "void " + func.name + "(" +\ |
99 |
| - ", ".join([p.type + " " + p.name for p in func[2]]) + ") ;" |
| 107 | + code = "void " + func.name + "(" |
| 108 | + |
| 109 | + params = "" |
| 110 | + for p in func[2]: |
| 111 | + if p.dim > 0: |
| 112 | + params += ", " + "const " + type_string(p) + "& " + str(p) |
| 113 | + else: |
| 114 | + params += ", " + type_string(p) + " " + str(p) |
| 115 | + |
| 116 | + code += params[2:] + ") ;" |
100 | 117 |
|
101 | 118 | elif func.backend == "func_returns" and func[1]:
|
102 |
| - code = "void " + func.name + "(" +\ |
103 |
| - ", ".join([p.type + " " + p.name for p in func[2]]) + ", " +\ |
104 |
| - ", ".join([p.type + "& " + p.name for p in func[1]]) + ") ;" |
| 119 | + code = "void " + func.name + "(" |
| 120 | + |
| 121 | + params = "" |
| 122 | + for p in func[2]: |
| 123 | + if p.dim > 0: |
| 124 | + params += ", " + "const " + type_string(p) + "& " + str(p) |
| 125 | + else: |
| 126 | + params += ", " + type_string(p) + " " + str(p) |
| 127 | + |
| 128 | + #return_params = "" |
| 129 | + return_params = ", ".join([p.type + "& " + p.name for p in func[1]]) |
| 130 | + |
| 131 | + if return_params and params: |
| 132 | + params += ", " + return_params |
| 133 | + else: |
| 134 | + params += return_params |
| 135 | + |
| 136 | + params += ") ;" |
| 137 | + |
| 138 | + code += params[2:] |
105 | 139 | return code
|
106 | 140 |
|
107 | 141 | Include = "%(name)s"
|
|
0 commit comments