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

Method toPersistentString

src/App/ObjectIdentifier.cpp:327–385  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

325}
326
327std::string ObjectIdentifier::toPersistentString() const
328{
329
330 if (!owner) {
331 return {};
332 }
333
334 std::ostringstream s;
335 ResolveResults result(*this);
336
337 if (result.propertyIndex >= (int)components.size()) {
338 return {};
339 }
340
341 if (localProperty
342 || (result.resolvedProperty && result.resolvedDocumentObject == owner
343 && components.size() > 1 && components[1].isSimple() && result.propertyIndex == 0)) {
344 s << '.';
345 }
346 else if (result.resolvedDocumentObject && result.resolvedDocumentObject != owner
347 && result.resolvedDocumentObject->isExporting()) {
348 s << result.resolvedDocumentObject->getExportName(true);
349 if (documentObjectName.isRealString()) {
350 s << '@';
351 }
352 s << '.';
353 }
354 else if (documentNameSet && !documentName.getString().empty()) {
355 if (documentObjectNameSet && !documentObjectName.getString().empty()) {
356 s << documentName.toString() << "#" << documentObjectName.toString() << '.';
357 }
358 else if (!result.resolvedDocumentObjectName.getString().empty()) {
359 s << documentName.toString() << "#" << result.resolvedDocumentObjectName.toString()
360 << '.';
361 }
362 }
363 else if (documentObjectNameSet && !documentObjectName.getString().empty()) {
364 s << documentObjectName.toString() << '.';
365 }
366 else if (result.propertyIndex > 0) {
367 components[0].toString(s);
368 s << '.';
369 }
370
371 if (!subObjectName.getString().empty()) {
372 const char* subname = subObjectName.getString().c_str();
373 std::string exportName;
374 s << String(PropertyLinkBase::exportSubName(exportName,
375 result.resolvedDocumentObject,
376 subname),
377 true)
378 .toString()
379 << '.';
380 }
381
382 s << components[result.propertyIndex].getName();
383 getSubPathStr(s, result);
384 return s.str();

Callers 1

_toStringMethod · 0.80

Calls 11

getExportNameMethod · 0.80
isRealStringMethod · 0.80
StringClass · 0.70
sizeMethod · 0.45
isExportingMethod · 0.45
emptyMethod · 0.45
getStringMethod · 0.45
toStringMethod · 0.45
c_strMethod · 0.45
getNameMethod · 0.45
strMethod · 0.45

Tested by

no test coverage detected