20#ifndef LIBREPCB_CORE_CIRCUIT_H
21#define LIBREPCB_CORE_CIRCUIT_H
26#include "../../fileio/filepath.h"
27#include "../../library/cmp/componentprefix.h"
28#include "../../types/busname.h"
29#include "../../types/circuitidentifier.h"
30#include "../../types/elementname.h"
31#include "../../types/fileproofname.h"
32#include "../../types/uuid.h"
46class ComponentInstance;
50class TransactionalDirectory;
133 const Uuid& uuid)
const noexcept;
135 const QString& name)
const noexcept;
The Bus class.
Definition bus.h:50
The Circuit class represents all electrical connections in a project (drawn in the schematics)
Definition circuit.h:72
void addBus(Bus &bus)
Definition circuit.cpp:304
void netClassDesignRulesModified()
const QMap< Uuid, NetClass * > & getNetClasses() const noexcept
Definition circuit.h:98
NetSignal * getNetSignalWithMostElements() const noexcept
Definition circuit.cpp:223
bool operator!=(const Circuit &rhs) const noexcept
Definition circuit.h:153
AssemblyVariantList & getAssemblyVariants() noexcept
Definition circuit.h:86
void addNetClass(NetClass &netclass)
Definition circuit.cpp:149
NetClass * getNetClassByName(const ElementName &name) const noexcept
Definition circuit.cpp:140
void addComponentInstance(ComponentInstance &cmp)
Definition circuit.cpp:376
void setNetClassName(NetClass &netclass, const ElementName &newName)
Definition circuit.cpp:183
QString generateAutoComponentInstanceName(const ComponentPrefix &cmpPrefix) const noexcept
Definition circuit.cpp:352
~Circuit() noexcept
Definition circuit.cpp:49
void removeBus(Bus &bus)
Definition circuit.cpp:323
void busRenamed(Bus &bus)
void setBusName(Bus &bus, const BusName &newName, bool isAutoName)
Definition circuit.cpp:332
void componentRemoved(ComponentInstance &cmp)
Circuit(const Circuit &other)=delete
const QMap< Uuid, ComponentInstance * > & getComponentInstances() const noexcept
Definition circuit.h:129
void netClassAdded(NetClass &netclass)
ComponentInstance * getComponentInstanceByUuid(const Uuid &uuid) const noexcept
Definition circuit.cpp:363
void removeComponentInstance(ComponentInstance &cmp)
Definition circuit.cpp:399
Bus * getBusByName(const QString &name) const noexcept
Definition circuit.cpp:295
Circuit & operator=(const Circuit &rhs)=delete
QMap< Uuid, NetSignal * > mNetSignals
Definition circuit.h:173
void componentAdded(ComponentInstance &cmp)
QMap< Uuid, ComponentInstance * > mComponentInstances
Definition circuit.h:175
void setNetSignalName(NetSignal &netsignal, const CircuitIdentifier &newName, bool isAutoName)
Definition circuit.cpp:265
void netSignalAdded(NetSignal &netsignal)
void removeNetClass(NetClass &netclass)
Definition circuit.cpp:172
QMap< Uuid, Bus * > mBuses
Definition circuit.h:174
void netClassRemoved(NetClass &netclass)
Project & getProject() const noexcept
Definition circuit.h:83
const AssemblyVariantList & getAssemblyVariants() const noexcept
Definition circuit.h:89
QString generateAutoBusName() const noexcept
Definition circuit.cpp:286
const QMap< Uuid, Bus * > & getBuses() const noexcept
Definition circuit.h:120
Project & mProject
A reference to the Project object (from the ctor)
Definition circuit.h:170
ComponentInstance * getComponentInstanceByName(const QString &name) const noexcept
Definition circuit.cpp:368
void setComponentInstanceName(ComponentInstance &cmp, const CircuitIdentifier &newName)
Definition circuit.cpp:410
void assemblyVariantRemoved(std::shared_ptr< AssemblyVariant > &av)
void assemblyVariantAdded(std::shared_ptr< AssemblyVariant > &av)
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition circuit.cpp:430
void netSignalRemoved(NetSignal &netsignal)
QMap< Uuid, NetClass * > mNetClasses
Definition circuit.h:172
AssemblyVariantList mAssemblyVariants
Definition circuit.h:171
void addNetSignal(NetSignal &netsignal)
Definition circuit.cpp:235
bool operator==(const Circuit &rhs) const noexcept
Definition circuit.h:152
NetSignal * getNetSignalByName(const QString &name) const noexcept
Definition circuit.cpp:214
void removeAssemblyVariant(std::shared_ptr< AssemblyVariant > av)
Definition circuit.cpp:111
QString generateAutoNetSignalName() const noexcept
Definition circuit.cpp:205
void removeNetSignal(NetSignal &netsignal)
Definition circuit.cpp:256
void busRemoved(Bus &bus)
const QMap< Uuid, NetSignal * > & getNetSignals() const noexcept
Definition circuit.h:108
void setAssemblyVariantName(std::shared_ptr< AssemblyVariant > av, const FileProofName &newName)
Definition circuit.cpp:123
int addAssemblyVariant(std::shared_ptr< AssemblyVariant > av, int index=-1)
Definition circuit.cpp:86
The ComponentInstance class.
Definition componentinstance.h:54
The NetClass class.
Definition netclass.h:47
The NetSignal class.
Definition netsignal.h:50
The Project class represents a whole (opened) project with all its content.
Definition project.h:71
The SExpression class.
Definition sexpression.h:69
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
Definition occmodel.cpp:77
type_safe::constrained_type< QString, CircuitIdentifierConstraint, CircuitIdentifierVerifier > CircuitIdentifier
Definition circuitidentifier.h:88
type_safe::constrained_type< QString, ComponentPrefixConstraint, ComponentPrefixVerifier > ComponentPrefix
Definition componentprefix.h:81
type_safe::constrained_type< QString, FileProofNameConstraint, FileProofNameVerifier > FileProofName
Definition fileproofname.h:90
type_safe::constrained_type< QString, BusNameConstraint, BusNameVerifier > BusName
Definition busname.h:82
type_safe::constrained_type< QString, ElementNameConstraint, ElementNameVerifier > ElementName
Definition elementname.h:84