Parse a C++ parameter list into (type, name) pairs. E.g. "torch::Tensor A, torch::Tensor B" -> [("torch::Tensor", "A"), ...]
(params_str: str)
| 207 | |
| 208 | |
| 209 | def _parse_param_list(params_str: str) -> List[Tuple[str, str]]: |
| 210 | """ |
| 211 | Parse a C++ parameter list into (type, name) pairs. |
| 212 | |
| 213 | E.g. "torch::Tensor A, torch::Tensor B" -> [("torch::Tensor", "A"), ...] |
| 214 | """ |
| 215 | if not params_str.strip(): |
| 216 | return [] |
| 217 | |
| 218 | results = [] |
| 219 | for param in params_str.split(","): |
| 220 | param = param.strip() |
| 221 | if not param: |
| 222 | continue |
| 223 | # Remove const and & qualifiers for the binding |
| 224 | parts = param.split() |
| 225 | if len(parts) >= 2: |
| 226 | name = parts[-1].rstrip("&").rstrip("*") |
| 227 | type_str = " ".join(parts[:-1]) |
| 228 | results.append((type_str, name)) |
| 229 | |
| 230 | return results |
| 231 | |
| 232 | |
| 233 | # --------------------------------------------------------------------------- |