예제 #1
0
 public Basic2In1OutComponent(ComponentTriggeredEvent inputA = null, ComponentTriggeredEvent inputB = null, Trit inputStateA = Trit.Neu, Trit inputStateB = Trit.Neu)
 {
     inputA     += AInput;
     inputB     += BInput;
     AInputState = inputStateA;
     BInputState = inputStateB;
 }
예제 #2
0
        public BasicDataInDataOutComponent(IEnumerable <Trit> inputStates = null)
        {
            Outputs = new ComponentTriggeredEvent[DataType.NUMBER_OF_TRITS];
            Inputs  = new ComponentTriggeredEvent[DataType.NUMBER_OF_TRITS];

            InputStates  = new Trit[DataType.NUMBER_OF_TRITS];
            OutputStates = new Trit[DataType.NUMBER_OF_TRITS];

            if (inputStates != null)
            {
                int i = 0;
                foreach (Trit t in inputStates)
                {
                    InputStates[i] = t;
                    if (i == DataType.NUMBER_OF_TRITS - 1)
                    {
                        break;
                    }

                    i++;
                }
            }

            for (int i = 0; i < DataType.NUMBER_OF_TRITS; i++)
            {
                Inputs[i] += (s, t) => { InputStates[i] = t; OnInputInvoked(s, t, i); };
            }

            ComponentName = GetType().Name;
        }
예제 #3
0
        public IChip()
        {
            Outputs = new ComponentTriggeredEvent[NUMBER_OF_PINS];
            Inputs  = new ComponentTriggeredEvent[NUMBER_OF_PINS];

            PinStates = new Trit[NUMBER_OF_PINS];
        }
예제 #4
0
        public TryteFullAdder(IEnumerable <Trit> aInputStates = null, IEnumerable <Trit> bInputStates = null, IEnumerable <Trit> carryInputStates = null) :
            base(aInputStates, bInputStates)
        {
            CarryInputs      = new ComponentTriggeredEvent[Tryte.NUMBER_OF_TRITS];
            CarryInputStates = new Trit[Tryte.NUMBER_OF_TRITS];

            for (int i = 0; i < Tryte.NUMBER_OF_TRITS; i++)
            {
                CarryInputs[i] += (s, t) => CarryInInvoked(s, t, i);
            }
        }
예제 #5
0
        public Basic18In9OutComponent(IEnumerable <Trit> aInputStates = null, IEnumerable <Trit> bInputStates = null)
        {
            Outputs = new ComponentTriggeredEvent[Tryte.NUMBER_OF_TRITS];
            AInputs = new ComponentTriggeredEvent[Tryte.NUMBER_OF_TRITS];
            BInputs = new ComponentTriggeredEvent[Tryte.NUMBER_OF_TRITS];

            AInputStates = new Trit[Tryte.NUMBER_OF_TRITS];
            BInputStates = new Trit[Tryte.NUMBER_OF_TRITS];
            OutputStates = new Trit[Tryte.NUMBER_OF_TRITS];

            if (aInputStates != null)
            {
                int i = 0;
                foreach (Trit t in aInputStates)
                {
                    AInputStates[i] = t;
                    if (i == Tryte.NUMBER_OF_TRITS - 1)
                    {
                        break;
                    }

                    i++;
                }
            }

            if (bInputStates != null)
            {
                int i = 0;
                foreach (Trit t in bInputStates)
                {
                    BInputStates[i] = t;
                    if (i == Tryte.NUMBER_OF_TRITS - 1)
                    {
                        break;
                    }

                    i++;
                }
            }

            for (int i = 0; i < Tryte.NUMBER_OF_TRITS; i++)
            {
                AInputs[i] += (s, t) => { AInputStates[i] = t; OnAInputInvoked(s, t, i); };
                BInputs[i] += (s, t) => { BInputStates[i] = t; OnBInputInvoked(s, t, i); };
            }
        }
예제 #6
0
        public MultiIn1OutComponent(int numberOfInputs)
        {
            if (numberOfInputs < 1)
            {
                throw new Exception("Invalid number of Inputs. Must be greater than 0");
            }

            NUMBER_OF_INPUTS = numberOfInputs;

            Inputs      = new ComponentTriggeredEvent[NUMBER_OF_INPUTS];
            InputStates = new Trit[NUMBER_OF_INPUTS];

            for (int inputPin = 0; inputPin < NUMBER_OF_INPUTS; inputPin++)
            {
                Inputs[inputPin] += (s, t) =>
                {
                    OnInputInvoked(inputPin, t, s);
                };
            }
        }
예제 #7
0
 public CycleDownGate(ComponentTriggeredEvent input = null, Trit inputState = Trit.Neu) :
     base(input, inputState)
 {
 }
예제 #8
0
 public ReverseDiode(ComponentTriggeredEvent input = null, Trit inputState = Trit.Neu) :
     base(input, inputState)
 {
 }
예제 #9
0
 public TryteHalfAdder(IEnumerable <Trit> aInputStates = null, IEnumerable <Trit> bInputStates = null) : base(aInputStates, bInputStates)
 {
     CarryOuts      = new ComponentTriggeredEvent[Tryte.NUMBER_OF_TRITS];
     CarryOutStates = new Trit[Tryte.NUMBER_OF_TRITS];
 }
예제 #10
0
 public InverterGate(ComponentTriggeredEvent input = null, Trit inputState = Trit.Neu) :
     base(input, inputState)
 {
 }
예제 #11
0
 public EqualityGate(ComponentTriggeredEvent input1 = null, ComponentTriggeredEvent input2 = null, Trit inputStateA = Trit.Neu, Trit inputStateB = Trit.Neu) :
     base(input1, input2, inputStateA, inputStateB)
 {
 }
예제 #12
0
 public ImplicationGate(ComponentTriggeredEvent input1 = null, ComponentTriggeredEvent input2 = null, Trit inputStateA = Trit.Neu, Trit inputStateB = Trit.Neu) :
     base(input1, input2, inputStateA, inputStateB)
 {
 }
예제 #13
0
 public MonadicBaseGate(ComponentTriggeredEvent input = null, Trit inputState = Trit.Neu) :
     base(input, inputState)
 {
 }
예제 #14
0
 public ShiftUpGate(ComponentTriggeredEvent input = null, Trit inputState = Trit.Neu) :
     base(input, inputState)
 {
 }
예제 #15
0
 public Basic1In1OutComponent(ComponentTriggeredEvent input = null, Trit inputState = Trit.Neu)
 {
     input     += Input;
     InputState = inputState;
 }