NanoTekSpice
DigitalElectronics
C4001.hpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2019
3 ** OOP_NanoTekSpice
4 ** File description:
5 ** C4001 class
6 */
7 
15 #ifndef C4001_HPP_
16  #define C4001_HPP_
17 
18 #include "IComponent.hpp"
19 #include "Component.hpp"
20 #include <iostream>
21 #include <string>
22 #include <map>
23 
29 {
30  public:
36  C4001();
40  ~C4001();
50  nts::Tristate compute(std::size_t pin = 1) override;
60  void setLink(std::size_t pin , nts::IComponent &other, std::size_t otherPin) final;
66  void dump() const noexcept override;
76  void setInput(std::size_t pin, nts::IComponent &other, std::size_t otherPin) final;
86  void setOutput(std::size_t pin, nts::IComponent &other, std::size_t otherPin) final;
87 
88  private:
97  void checkSelfLink(std::size_t pin1, std::size_t pin2);
106  nts::Tristate computeInput(nts::Pin &pin);
116  nts::Tristate computeOutput(nts::Door &door);
117 
118  std::map<size_t, nts::Door> _doors;
119 };
120 
121 #endif /* !C4001_HPP_ */
Definition: IComponent.hpp:45
Definition: Component.hpp:19
C4001()
Component 4001 Constructor.
Definition: C4001.cpp:12
~C4001()
Component 4001 Destructor.
Definition: C4001.cpp:36
nts::Tristate compute(std::size_t pin=1) override
Compute.
Definition: C4001.cpp:66
void dump() const noexcept override
Display information.
Definition: C4001.cpp:188
void setInput(std::size_t pin, nts::IComponent &other, std::size_t otherPin) final
Set input link method.
Definition: C4001.cpp:149
void setOutput(std::size_t pin, nts::IComponent &other, std::size_t otherPin) final
Set output link method.
Definition: C4001.cpp:173
Definition: IComponent.hpp:18
Quad 2-input NOR gate.
Definition: C4001.hpp:28
Definition: IComponent.hpp:52
void setLink(std::size_t pin, nts::IComponent &other, std::size_t otherPin) final
Set link method.
Definition: C4001.cpp:104