18 const std::vector<std::string>& partSelections,
22 create(
name, std::make_unique<Specific>(partSelections, svalues, doRegex));
23 std::vector<std::pair<DDLogicalPart, std::pair<const DDPartSelection*, const DDsvalues_type*>>>
v;
24 rep().updateLogicalPart(
v);
26 if (
it.first.isDefined().second) {
27 it.first.addSpecifics(
it.second);
29 throw cms::Exception(
"DDException") <<
"Definition of LogicalPart missing! name=" <<
it.first.ddname().fullname();
51 os << *(defined.first) <<
" ";
55 os <<
"* specific not defined * ";
58 os <<
"* specific not declared * ";
63 std::ostream& operator<<(std::ostream& os, const std::vector<std::string>&
v) {
64 for (
const auto&
it :
v) {
65 os <<
it << std::endl;
std::ostream & operator<<(std::ostream &os, const DDSpecifics &sp)
const std::vector< DDPartSelection > & selection() const
Gives a reference to the collection of part-selections.
DDName is used to identify DDD entities uniquely.
const DDI::rep_traits< DDName, std::unique_ptr< DDI::Specific > >::reference rep() const
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
const DDsvalues_type & specifics() const
Reference to the user-data attached to all nodes selected by the selections-strings given through sel...
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
const DDName & name() const
DDSpecifics()
Creates a uninitialized reference-object (see DDLogicalPart documentation for details on reference ob...
def_type isDefined() const
Interface to attach user specific data to nodes in the expanded-view.
std::pair< bool, DDExpandedView > node() const
Calculates the geometrical history of a fully specified PartSelector.
void create(const DDName &name, std::unique_ptr< DDI::Specific > vals)