MCPcopy Create free account
hub / github.com/ROCm/AMDMIGraphX / Function

Class Function

tools/api.py:414–507  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

412
413
414class Function:
415 def __init__(self,
416 name: str,
417 params: Optional[List[Parameter]] = None,
418 shared_size: bool = False,
419 returns: Optional[str] = None,
420 invoke: Optional[str] = None,
421 fname: Optional[str] = None,
422 return_name: Optional[str] = None,
423 virtual: bool = False,
424 **kwargs) -> None:
425 self.name = name
426 self.params = params or []
427 self.shared_size = False
428 self.cfunction: Optional[CFunction] = None
429 self.fname = fname
430 self.invoke = invoke or '${__fname__}($@)'
431 self.return_name = return_name or 'out'
432 self.returns = Parameter(self.return_name, returns,
433 returns=True) if returns else None
434 for p in self.params:
435 p.virtual = virtual
436 if self.returns:
437 self.returns.virtual = virtual
438
439 def share_params(self) -> None:
440 if self.shared_size == True:
441 size_param_name = 'size'
442 size_type = Type('size_t')
443 for param in self.params:
444 p = param.remove_size_param(size_param_name)
445 if p:
446 size_type = Type(p[0])
447 self.params.append(Parameter(size_param_name, size_type.str()))
448
449 def update(self) -> None:
450 self.share_params()
451 for param in self.params:
452 param.update()
453 if self.returns:
454 self.returns.update()
455 self.create_cfunction()
456
457 def inputs(self) -> str:
458 return ', '.join([p.input() for p in self.params])
459
460 # TODO: Shoule we remove Optional?
461 def input_map(self) -> Dict[str, Optional[str]]:
462 m: Dict[str, Optional[str]] = {}
463 for p in self.params:
464 m[p.name] = p.input()
465 m['return'] = self.return_name
466 m['@'] = self.inputs()
467 m['__fname__'] = self.fname
468 return m
469
470 def get_invoke(self) -> str:
471 return Template(self.invoke).safe_substitute(self.input_map())

Callers 3

add_functionFunction · 0.85
virtualMethod · 0.85
generateMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected