14constexpr MorphStep kMorphCycle[] = {
16 { ElementType::Not, ElementType::Node },
17 { ElementType::Node, ElementType::Not },
20 { ElementType::And, ElementType::Or },
21 { ElementType::Or, ElementType::Nand },
22 { ElementType::Nand, ElementType::Nor },
23 { ElementType::Nor, ElementType::Xor },
24 { ElementType::Xor, ElementType::Xnor },
25 { ElementType::Xnor, ElementType::And },
28 { ElementType::InputVcc, ElementType::InputGnd },
29 { ElementType::InputGnd, ElementType::InputButton },
30 { ElementType::InputButton, ElementType::InputSwitch },
31 { ElementType::InputSwitch, ElementType::InputRotary },
32 { ElementType::InputRotary, ElementType::Clock },
33 { ElementType::Clock, ElementType::InputVcc },
36 { ElementType::DFlipFlop, ElementType::TFlipFlop },
37 { ElementType::TFlipFlop, ElementType::DFlipFlop },
38 { ElementType::JKFlipFlop, ElementType::SRFlipFlop },
39 { ElementType::SRFlipFlop, ElementType::JKFlipFlop },
42 { ElementType::Led, ElementType::Buzzer },
43 { ElementType::Buzzer, ElementType::AudioBox },
44 { ElementType::AudioBox, ElementType::Led },
51 for (
const auto &step : kMorphCycle) {
52 if (step.from == type)
return step.to;
54 return ElementType::Unknown;
59 for (
const auto &step : kMorphCycle) {
60 if (step.to == type)
return step.from;
62 return ElementType::Unknown;
69 return type =
static_cast<ElementType>(
static_cast<int>(type) + 1);
78 quint64 temp; stream >> temp;
85 stream << static_cast<quint64>(type);
QDataStream & operator<<(QDataStream &stream, const ElementType &type)
Serializes type into stream.
ElementType & operator++(ElementType &type)
Pre-increment operator; advances type to the next ElementType in sequence.
QDataStream & operator>>(QDataStream &stream, ElementType &type)
Deserializes an ElementType from stream into type.
Central enumeration types for element types, groups, and signal status.
Enums::ElementType ElementType
ElementType
Numeric identifiers for every concrete element type.
static ElementType nextElmType(ElementType type)
Returns the ElementType that follows type in the defined sequence.
static ElementType prevElmType(ElementType type)
Returns the ElementType that precedes type in the defined sequence.