diff --git a/SpeckleConnector/Connector/Interface/Browser/Bridge/Send/GetSendFilters.cpp b/SpeckleConnector/Connector/Interface/Browser/Bridge/Send/GetSendFilters.cpp index efddd60..26bf6d6 100644 --- a/SpeckleConnector/Connector/Interface/Browser/Bridge/Send/GetSendFilters.cpp +++ b/SpeckleConnector/Connector/Interface/Browser/Bridge/Send/GetSendFilters.cpp @@ -5,6 +5,7 @@ #include "Active/Serialise/Package/Wrapper/ContainerWrap.h" #include "Active/Serialise/Package/Wrapper/PackageWrap.h" #include "Connector/Record/Model/Filter/ArchicadEverythingFilter.h" +#include "Connector/Record/Model/Filter/FilterMover.h" #include "Connector/Record/Model/Filter/ArchicadSelectionFilter.h" using namespace active::container; @@ -15,7 +16,7 @@ using namespace speckle::utility; namespace { - using WrappedValue = active::serialise::CargoHold>, Vector>; + using WrappedValue = active::serialise::CargoHold, FilterMover>, Vector>; } diff --git a/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.cpp b/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.cpp index a4f5c32..cd624ce 100644 --- a/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.cpp +++ b/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.cpp @@ -16,10 +16,25 @@ namespace { ///The tag used to identify a Speckle type name value const char* attributeTag = "typeDiscriminator"; - ///Identity for a SenderModelCard - const char* ArchicadSelectionTypeName = "ArchicadSelectionFilter"; - ///Identity for a SenderModelCard + ///Identity for selecting everything const char* ArchicadEverythingTypeName = "ArchicadEverythingFilter"; + ///Identity for a selection filter + const char* ArchicadSelectionTypeName = "ArchicadSelectionFilter"; + + /*-------------------------------------------------------------------- + Ensure the handler is populated + + handler: The filter handler to validate + + return: A reference to the handler + --------------------------------------------------------------------*/ + std::shared_ptr& validateHandler(std::shared_ptr& handler) { + if (!handler->empty()) + return handler; + handler->add(ArchicadEverythingTypeName); + handler->add(ArchicadSelectionTypeName); + return handler; + } //validateHandler } @@ -32,8 +47,7 @@ std::shared_ptr FilterMover::m_handler = std::make_s handler: A package handler to reconstruct incoming packages --------------------------------------------------------------------*/ -FilterMover::FilterMover() : Mover{m_handler} { - validateHandler(); +FilterMover::FilterMover() : Mover{validateHandler(m_handler)} { } //FilterMover::FilterMover @@ -42,8 +56,7 @@ FilterMover::FilterMover() : Mover{m_handler} { outgoing: An outgoing package --------------------------------------------------------------------*/ -FilterMover::FilterMover(const active::serialise::Package& outgoing) : Mover{outgoing, m_handler} { - validateHandler(); +FilterMover::FilterMover(const active::serialise::Package& outgoing) : Mover{outgoing, validateHandler(m_handler)} { } //FilterMover::FilterMover @@ -52,17 +65,5 @@ FilterMover::FilterMover(const active::serialise::Package& outgoing) : Mover{out package: A reference to the member variable --------------------------------------------------------------------*/ -FilterMover::FilterMover(active::serialise::PackageUniqueWrap&& package) : Mover{std::move(package), m_handler} { - +FilterMover::FilterMover(active::serialise::PackageUniqueWrap&& package) : Mover{std::move(package), validateHandler(m_handler)} { } //FilterMover::FilterMover - - -/*-------------------------------------------------------------------- - Ensure the handler is populated - --------------------------------------------------------------------*/ -void FilterMover::validateHandler() { - if (!m_handler->empty()) - return; - m_handler->add(ArchicadEverythingTypeName); - m_handler->add(ArchicadSelectionTypeName); -} //FilterMover::validateHandler diff --git a/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.h b/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.h index dc326a1..eade628 100644 --- a/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.h +++ b/SpeckleConnector/Connector/Record/Model/Filter/FilterMover.h @@ -37,12 +37,7 @@ namespace connector::record { FilterMover(active::serialise::PackageUniqueWrap&& package); private: - /*! - Ensure the handler is populated - */ - static void validateHandler(); - - ///The handler for model card packages + ///The handler for model filter packages static std::shared_ptr m_handler; };