MCPcopy Create free account
hub / github.com/NatLabRockies/OpenStudio / addObject

Method addObject

src/utilities/idf/Workspace.cpp:640–671  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

638 }
639
640 boost::optional<WorkspaceObject> Workspace_Impl::addObject(const IdfObject& idfObject) {
641 WorkspaceObject_ImplPtr objectImplPtr;
642
643 // handle potential name conflicts up front
644 IdfObject workingIdfObject = idfObject; // shallow copy
645 if (idfObject.iddObject().hasNameField()) {
646 OptionalString currentName = idfObject.name();
647 if (currentName && !currentName->empty()) {
648 bool potentialConflict = potentialNameConflict(idfObject.name().get(), idfObject.iddObject());
649 if (potentialConflict) {
650 LOG(Info, "Resetting name of " << idfObject.briefDescription() << " to avoid name conflict upon adding it to the Workspace.");
651 workingIdfObject = idfObject.clone(); // deep copy
652 // clear name of single object--WorkspaceObject_Impl constructor will make new one
653 bool ok = workingIdfObject.setName("").has_value();
654 OS_ASSERT(ok);
655 }
656 }
657 }
658 // create new object
659 objectImplPtr = this->createObject(workingIdfObject, false);
660
661 // add to workspace
662 WorkspaceObject_ImplPtrVector objectImplPtrs(1u, objectImplPtr);
663 WorkspaceObjectVector objects = addObjects(objectImplPtrs, false);
664
665 // assess result and return
666 if (objects.size() != 1) {
667 OS_ASSERT(objects.empty());
668 return boost::none;
669 }
670 return objects[0];
671 }
672
673 boost::optional<WorkspaceObject> Workspace_Impl::insertObject(const IdfObject& idfObject) {
674 OptionalWorkspaceObject result = getEquivalentObject(idfObject);

Callers 2

swapMethod · 0.45
toIdfFileMethod · 0.45

Calls 10

createObjectMethod · 0.95
hasNameFieldMethod · 0.80
iddObjectMethod · 0.80
briefDescriptionMethod · 0.80
nameMethod · 0.45
emptyMethod · 0.45
getMethod · 0.45
cloneMethod · 0.45
setNameMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected