MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / resolve

Method resolve

src/App/ObjectIdentifier.cpp:846–974  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

844}
845
846void ObjectIdentifier::resolve(ResolveResults& results) const
847{
848 if (!owner) {
849 return;
850 }
851
852 bool docAmbiguous = false;
853
854 /* Document name specified? */
855 if (!documentName.getString().empty()) {
856 results.resolvedDocument = getDocument(documentName, &docAmbiguous);
857 results.resolvedDocumentName = documentName;
858 }
859 else {
860 results.resolvedDocument = owner->getDocument();
861 results.resolvedDocumentName = String(results.resolvedDocument->getName(), false, true);
862 }
863
864 results.subObjectName = subObjectName;
865 results.propertyName = "";
866 results.propertyIndex = 0;
867
868 // Assume document name and object name from owner if not found
869 if (!results.resolvedDocument) {
870 if (!documentName.getString().empty()) {
871 if (docAmbiguous) {
872 results.flags.set(ResolveAmbiguous);
873 }
874 return;
875 }
876
877 results.resolvedDocument = owner->getDocument();
878 if (!results.resolvedDocument) {
879 return;
880 }
881 }
882
883 results.resolvedDocumentName = String(results.resolvedDocument->getName(), false, true);
884
885 /* Document object name specified? */
886 if (!documentObjectName.getString().empty()) {
887 results.resolvedDocumentObjectName = documentObjectName;
888 results.resolvedDocumentObject =
889 getDocumentObject(results.resolvedDocument, documentObjectName, results.flags);
890 if (!results.resolvedDocumentObject) {
891 return;
892 }
893
894 if (components.empty()) {
895 return;
896 }
897
898 results.propertyName = components[0].name.getString();
899 results.propertyIndex = 0;
900 results.getProperty(*this);
901 }
902 else {
903 /* Document object name not specified, resolve from path */

Callers 1

ResolveResultsMethod · 0.45

Calls 14

StringClass · 0.70
getDocumentFunction · 0.50
emptyMethod · 0.45
getStringMethod · 0.45
getDocumentMethod · 0.45
getNameMethod · 0.45
setMethod · 0.45
getPropertyMethod · 0.45
sizeMethod · 0.45
getNameInDocumentMethod · 0.45
testMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected