Skip to content
Snippets Groups Projects
ops.py 1.71 KiB
Newer Older
  • Learn to ignore specific revisions
  • """
    B-ASIC Core Operations Module.
    TODO: More info.
    """
    
    from b_asic.operation import OperationId, Operation, BasicOperation
    from numbers import Number
    from typing import final
    
    class Input(Operation):
    	"""
    	Input operation.
    	TODO: More info.
    	"""
    
    	# TODO: Implement.
    	pass
    
    class Constant(BasicOperation):
    	"""
    	Constant value operation.
    	TODO: More info.
    	"""
    
    	def __init__(self, identifier: OperationId, value: Number):
    		"""
    		Construct a Constant.
    		"""
    		super().__init__(identifier)
    		self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
    		self._parameters["value"] = value
    
    	@final
    	def evaluate(self, inputs: list) -> list:
    		return [self.param("value")]
    
    class Addition(BasicOperation):
    	"""
    	Binary addition operation.
    	TODO: More info.
    	"""
    
    	def __init__(self, identifier: OperationId):
    		"""
    		Construct an Addition.
    		"""
    		super().__init__(identifier)
    		self._input_ports = [InputPort(), InputPort()] # TODO: Generate appropriate ID for ports.
    		self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
    
    	@final
    	def evaluate(self, inputs: list) -> list:
    		return [inputs[0] + inputs[1]]
    
    
    class ConstantMultiplication(BasicOperation):
    	"""
    	Unary constant multiplication operation.
    	TODO: More info.
    	"""
    
    	def __init__(self, identifier: OperationId, coefficient: Number):
    		"""
    		Construct a ConstantMultiplication.
    		"""
    		super().__init__(identifier)
    		self._input_ports = [InputPort()] # TODO: Generate appropriate ID for ports.
    		self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
    		self._parameters["coefficient"] = coefficient
    
    	@final
    	def evaluate(self, inputs: list) -> list:
    		return [inputs[0] * self.param("coefficient")]
    
    # TODO: More operations.