1 #ifndef CONFIGMERGEVISITOR_HH
2 #define CONFIGMERGEVISITOR_HH
Generic list class for config objects.
Definition: configobject.hh:258
The base class of all channels (analog and digital) of a codeplug configuration.
Definition: channel.hh:34
Base class for all configuration objects (channels, zones, contacts, etc).
Definition: configobject.hh:40
Implements a visitor to merge the visited config into a given config.
Definition: configmergevisitor.hh:24
bool processRadioID(RadioID *item, const ErrorStack &err=ErrorStack())
Handles a RadioID object of the source configuration.
Definition: configmergevisitor.cc:50
bool duplicateObject(AbstractConfigObjectList *list, ConfigObject *present, ConfigObject *merging, const ErrorStack &err=ErrorStack())
Adds a copy of the merging object to the given list.
Definition: configmergevisitor.cc:299
bool addObject(AbstractConfigObjectList *list, ConfigObject *present, ConfigObject *merging, const ErrorStack &err=ErrorStack())
Adds a copy of the merging object to the given list, containing the colliding present object.
Definition: configmergevisitor.cc:252
QHash< ConfigObject *, ConfigObject * > & _translation
Translation table for fixing references.
Definition: configmergevisitor.hh:94
ItemStrategy _itemStrategy
The item merge strategy.
Definition: configmergevisitor.hh:96
ConfigMergeVisitor(Config *destination, QHash< ConfigObject *, ConfigObject * > &translation, ItemStrategy itemStrategy=ItemStrategy::Ignore, SetStrategy setStrategy=SetStrategy::Ignore)
Constructor of the merge visitor.
Definition: configmergevisitor.cc:13
bool processRoamingChannel(RoamingChannel *item, const ErrorStack &err=ErrorStack())
Handles a RoamingChannel object of the source configuration.
Definition: configmergevisitor.cc:134
bool processZone(Zone *item, const ErrorStack &err=ErrorStack())
Handles a Zone object of the source configuration.
Definition: configmergevisitor.cc:179
bool processChannel(Channel *item, const ErrorStack &err=ErrorStack())
Handles a Channel object of the source configuration.
Definition: configmergevisitor.cc:71
bool processRoamingZone(RoamingZone *item, const ErrorStack &err=ErrorStack())
Handles a RoamingZone object of the source configuration.
Definition: configmergevisitor.cc:228
SetStrategy
Possible strategies to merge sets of references.
Definition: configmergevisitor.hh:36
@ Override
Override the destination item.
@ Duplicate
Add a new set with a modified name.
@ Ignore
Ignore the source set.
bool processItem(ConfigItem *item, const ErrorStack &err=ErrorStack())
Traverses the specified config item.
Definition: configmergevisitor.cc:23
bool processPositioningSystem(PositioningSystem *item, const ErrorStack &err=ErrorStack())
Handles a PositioningSystem object of the source configuration.
Definition: configmergevisitor.cc:113
bool mergeList(ConfigObjectRefList *present, ConfigObjectRefList *merging, const ErrorStack &err=ErrorStack())
Merges two reference lists.
Definition: configmergevisitor.cc:317
bool processScanList(ScanList *item, const ErrorStack &err=ErrorStack())
Handles a ScanList object of the source configuration.
Definition: configmergevisitor.cc:204
bool processContact(Contact *item, const ErrorStack &err=ErrorStack())
Handles a Contact object of the source configuration.
Definition: configmergevisitor.cc:92
SetStrategy _setStrategy
The set merge strategy.
Definition: configmergevisitor.hh:98
bool ignoreObject(AbstractConfigObjectList *list, ConfigObject *present, ConfigObject *merging, const ErrorStack &err=ErrorStack())
Does not add the merging object, but fixes the translation table to bend references to the merging ob...
Definition: configmergevisitor.cc:271
bool processGroupList(RXGroupList *item, const ErrorStack &err=ErrorStack())
Handles a RXGroupList object of the source configuration.
Definition: configmergevisitor.cc:155
bool replaceObject(AbstractConfigObjectList *list, ConfigObject *present, ConfigObject *merging, const ErrorStack &err=ErrorStack())
Replaces the present object in the given list by a copy of merging object.
Definition: configmergevisitor.cc:282
ItemStrategy
Possible strategies to merge atomic items.
Definition: configmergevisitor.hh:28
@ Override
Override the destination item.
@ Duplicate
Add a new item with a modified name.
@ Ignore
Ignore the source item.
Config * _destination
The destination configuration.
Definition: configmergevisitor.hh:92
Just a namespace to provide merging functions.
Definition: configmergevisitor.hh:105
static Config * merge(Config *destination, Config *source, ConfigMergeVisitor::ItemStrategy itemStrategy=ConfigMergeVisitor::ItemStrategy::Ignore, ConfigMergeVisitor::SetStrategy setStrategy=ConfigMergeVisitor::SetStrategy::Ignore, const ErrorStack &err=ErrorStack())
Merges the given source into a copy of the given destination, using the specified strategies to handl...
Definition: configmergevisitor.cc:359
static bool mergeInto(Config *destination, Config *source, ConfigMergeVisitor::ItemStrategy itemStrategy=ConfigMergeVisitor::ItemStrategy::Ignore, ConfigMergeVisitor::SetStrategy setStrategy=ConfigMergeVisitor::SetStrategy::Ignore, const ErrorStack &err=ErrorStack())
Merges the given source into the given destination using the specified strategies to handle conflicts...
Definition: configmergevisitor.cc:336
List class for config objects.
Definition: configobject.hh:390
Base class of all labeled and named objects.
Definition: configobject.hh:199
The config class, representing the codeplug configuration.
Definition: config.hh:70
Implements a stack of error messages to provide a pretty formatted error traceback.
Definition: errorstack.hh:41
Base class of the positioning systems, that is APRS and DMR position reporting system.
Definition: gpssystem.hh:17
Generic representation of a RX group list.
Definition: rxgrouplist.hh:14
Abstract base class for all radio IDs.
Definition: radioid.hh:15
Represents a roaming channel.
Definition: roamingchannel.hh:16
Represents a RoamingZone within the abstract device configuration.
Definition: roamingzone.hh:15
Generic representation of a scan list.
Definition: scanlist.hh:15
Base visitor class for the config tree.
Definition: visitor.hh:20
Represents a zone within the generic configuration.
Definition: zone.hh:15