(self)
| 117 | return name[:pos] |
| 118 | |
| 119 | def _write_oprs(self): |
| 120 | defs = ["}", "namespace opr {"] |
| 121 | already_declare = set() |
| 122 | already_instance = set() |
| 123 | for i in self._oprs: |
| 124 | i = self.strip_opr_name_with_version(i) |
| 125 | if i in already_declare: |
| 126 | continue |
| 127 | else: |
| 128 | already_declare.add(i) |
| 129 | |
| 130 | defs.append("class {};".format(i)) |
| 131 | defs.append("}") |
| 132 | defs.append("namespace serialization {") |
| 133 | defs.append( |
| 134 | """ |
| 135 | template<class Opr, class Callee> |
| 136 | struct OprRegistryCaller { |
| 137 | }; """ |
| 138 | ) |
| 139 | for i in sorted(self._oprs): |
| 140 | i = self.strip_opr_name_with_version(i) |
| 141 | if i in already_instance: |
| 142 | continue |
| 143 | else: |
| 144 | already_instance.add(i) |
| 145 | |
| 146 | defs.append( |
| 147 | """ |
| 148 | template<class Callee> |
| 149 | struct OprRegistryCaller<opr::{}, Callee>: public |
| 150 | OprRegistryCallerDefaultImpl<Callee> {{ |
| 151 | }}; """.format( |
| 152 | i |
| 153 | ) |
| 154 | ) |
| 155 | self._write_def("MGB_OPR_REGISTRY_CALLER_SPECIALIZE", defs) |
| 156 | |
| 157 | def _write_elemwise_modes(self): |
| 158 | with tempfile.NamedTemporaryFile() as ftmp: |
no test coverage detected