Skip to content
Snippets Groups Projects
special_operations.py 1.24 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ivar Härnqvist's avatar
    Ivar Härnqvist committed
    """@package docstring
    B-ASIC Special Operations Module.
    TODO: More info.
    """
    
    from numbers import Number
    from typing import Optional
    
    from b_asic.operation import AbstractOperation
    from b_asic.graph_component import Name, TypeName
    from b_asic.port import SignalSourceProvider
    
    
    class Input(AbstractOperation):
        """Input operation.
        TODO: More info.
        """
    
        def __init__(self, name: Name = ""):
            super().__init__(input_count = 0, output_count = 1, name = name)
            self.set_param("value", 0)
    
        @property
        def type_name(self) -> TypeName:
            return "in"
        
        def evaluate(self):
            return self.param("value")
    
        @property
        def value(self) -> Number:
            """TODO: docstring"""
            return self.param("value")
    
        @value.setter
        def value(self, value: Number):
            """TODO: docstring"""
            self.set_param("value", value)
    
    
    class Output(AbstractOperation):
        """Output operation.
        TODO: More info.
        """
    
        def __init__(self, src0: Optional[SignalSourceProvider] = None, name: Name = ""):
            super().__init__(input_count = 1, output_count = 0, name = name, input_sources=[src0])
    
        @property
        def type_name(self) -> TypeName:
            return "out"
    
        def evaluate(self):
            return None