|
1 |
| -from . import tree, datatypes, backends, reserved |
2 |
| - |
3 |
| - |
4 |
| -def configure(root, suggest=True, **kws): |
5 |
| - """ |
6 |
| -configure backend |
7 |
| -
|
8 |
| -See also: |
9 |
| - :py:func:`matlab2cpp.Builder.configure <Builder.configure>` |
10 |
| - """ |
11 |
| - if isinstance(root, tree.Builder): |
12 |
| - root = root.project |
13 |
| - |
14 |
| - loop(root, suggest) |
15 |
| - loop(root, suggest) |
16 |
| - |
17 |
| -def loop(root, suggest): |
18 |
| - |
19 |
| - nodes = root.flatten(False, True, True) |
20 |
| - |
21 |
| - while True: |
22 |
| - |
23 |
| - # loop and configure |
24 |
| - for node in nodes: |
25 |
| - |
26 |
| - # reserved stuff |
27 |
| - if node.cls + "_" + node.name in reserved.__dict__: |
28 |
| - rule = reserved.__dict__[node.cls+"_"+node.name] |
29 |
| - if isinstance(rule, str): |
30 |
| - node.type = rule |
31 |
| - else: |
32 |
| - rule(node) |
33 |
| - |
34 |
| - # Datatype stuff |
35 |
| - if node.prop["type"] != "TYPE": |
36 |
| - pass |
37 |
| - |
38 |
| - elif node.cls in datatypes.__dict__: |
39 |
| - datatype = datatypes.__dict__[node.cls] |
40 |
| - if isinstance(datatype, str): |
41 |
| - node.type = datatype |
42 |
| - else: |
43 |
| - datatype(node) |
44 |
| - |
45 |
| - # Backend stuff |
46 |
| - if node.backend != "unknown": |
47 |
| - pass |
48 |
| - |
49 |
| - elif node.cls in backends.__dict__: |
50 |
| - backend = backends.__dict__[node.cls] |
51 |
| - if isinstance(backend, str): |
52 |
| - node.backend = backend |
53 |
| - else: |
54 |
| - backend(node) |
55 |
| - |
56 |
| - # determine if done |
57 |
| - if suggest: |
58 |
| - |
59 |
| - complete = True |
60 |
| - |
61 |
| - for program in root.project: |
62 |
| - |
63 |
| - suggests = program.suggest |
64 |
| - program.stypes = suggests |
65 |
| - program.ftypes = suggests |
66 |
| - complete = complete and not any([any(v) for v in suggests.values()]) |
67 |
| - |
68 |
| - if complete: |
69 |
| - break |
70 |
| - |
71 |
| - else: |
72 |
| - break |
73 |
| - |
74 |
| - # delete log, if any (create on translate) |
75 |
| - for program in root.project: |
76 |
| - program[-1].children = [] |
| 1 | +from .frontend import configure, loop |
| 2 | +from . import datatypes, backends, reserved |
0 commit comments