| 105 | } |
| 106 | |
| 107 | std::vector<argument> flatten(const std::vector<argument>& args) |
| 108 | { |
| 109 | std::vector<argument> result; |
| 110 | for(const auto& arg : args) |
| 111 | { |
| 112 | if(arg.get_shape().type() == shape::tuple_type) |
| 113 | { |
| 114 | auto subs = flatten(arg.get_sub_objects()); |
| 115 | result.insert(result.end(), subs.begin(), subs.end()); |
| 116 | } |
| 117 | else |
| 118 | { |
| 119 | result.push_back(arg); |
| 120 | } |
| 121 | } |
| 122 | return result; |
| 123 | } |
| 124 | |
| 125 | std::vector<shape> to_shapes(const std::vector<argument>& args) |
| 126 | { |