Skip to content

Commit

Permalink
Build fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
davesrocketshop committed Mar 16, 2024
1 parent 0ba77b1 commit 53d4069
Show file tree
Hide file tree
Showing 6 changed files with 348 additions and 340 deletions.
192 changes: 96 additions & 96 deletions src/App/GeoFeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,115 +87,115 @@ std::pair<std::string, std::string> GeoFeature::getElementName(const char* name,
std::pair<std::string, std::string> ret;
if (!name) {
return ret;
auto prop = getPropertyOfGeometry();
if (!prop) {
return std::make_pair("", name);
}

auto geo = prop->getComplexData();
if (!geo) {
return std::make_pair("", name);
}
}
auto prop = getPropertyOfGeometry();
if (!prop) {
return std::make_pair("", name);
}

return _getElementName(name, geo->getElementName(name));
auto geo = prop->getComplexData();
if (!geo) {
return std::make_pair("", name);
}

std::pair<std::string, std::string> GeoFeature::_getElementName(
const char* name,
const Data::MappedElement& mapped) const
{
std::pair<std::string, std::string> ret;
if (mapped.index && mapped.name) {
std::ostringstream ss;
ss << Data::ComplexGeoData::elementMapPrefix() << mapped.name << '.' << mapped.index;
ret.first = ss.str();
mapped.index.appendToStringBuffer(ret.second);
}
else if (mapped.name) {
// FC_TRACE("element mapped name " << name << " not found in " << getFullName());
ret.first = name;
const char* dot = strrchr(name, '.');
if (dot) {
// deliberately mangle the old style element name to signal a
// missing reference
ret.second = Data::MISSING_PREFIX;
ret.second += dot + 1;
}
}
else {
mapped.index.appendToStringBuffer(ret.second);
}
return _getElementName(name, geo->getElementName(name));
}

return ret;
std::pair<std::string, std::string>
GeoFeature::_getElementName(const char* name, const Data::MappedElement& mapped) const
{
std::pair<std::string, std::string> ret;
if (mapped.index && mapped.name) {
std::ostringstream ss;
ss << Data::ComplexGeoData::elementMapPrefix() << mapped.name << '.' << mapped.index;
ret.first = ss.str();
mapped.index.appendToStringBuffer(ret.second);
}

DocumentObject* GeoFeature::resolveElement(DocumentObject * obj,
const char* subname,
std::pair<std::string, std::string>& elementName,
bool append,
ElementNameType type,
const DocumentObject* filter,
const char** _element,
GeoFeature** geoFeature)
{
if (!obj || !obj->isAttachedToDocument()) {
return nullptr;
}
if (!subname) {
subname = "";
}
const char* element = Data::findElementName(subname);
if (_element) {
*_element = element;
}
auto sobj = obj->getSubObject(subname);
if (!sobj) {
return nullptr;
}
obj = sobj->getLinkedObject(true);
auto geo = dynamic_cast<GeoFeature*>(obj);
if (geoFeature) {
*geoFeature = geo;
}
if (!obj || (filter && obj != filter)) {
return nullptr;
}
if (!element || !element[0]) {
if (append) {
elementName.second = Data::oldElementName(subname);
}
return sobj;
else if (mapped.name) {
// FC_TRACE("element mapped name " << name << " not found in " << getFullName());
ret.first = name;
const char* dot = strrchr(name, '.');
if (dot) {
// deliberately mangle the old style element name to signal a
// missing reference
ret.second = Data::MISSING_PREFIX;
ret.second += dot + 1;
}
}
else {
mapped.index.appendToStringBuffer(ret.second);
}

if (!geo || hasHiddenMarker(element)) {
if (!append) {
elementName.second = element;
}
else {
elementName.second = Data::oldElementName(subname);
}
return sobj;
return ret;
}

DocumentObject* GeoFeature::resolveElement(DocumentObject* obj,
const char* subname,
std::pair<std::string, std::string>& elementName,
bool append,
ElementNameType type,
const DocumentObject* filter,
const char** _element,
GeoFeature** geoFeature)
{
if (!obj || !obj->isAttachedToDocument()) {
return nullptr;
}
if (!subname) {
subname = "";
}
const char* element = Data::findElementName(subname);
if (_element) {
*_element = element;
}
auto sobj = obj->getSubObject(subname);
if (!sobj) {
return nullptr;
}
obj = sobj->getLinkedObject(true);
auto geo = dynamic_cast<GeoFeature*>(obj);
if (geoFeature) {
*geoFeature = geo;
}
if (!obj || (filter && obj != filter)) {
return nullptr;
}
if (!element || !element[0]) {
if (append) {
elementName.second = Data::oldElementName(subname);
}
return sobj;
}

if (!geo || hasHiddenMarker(element)) {
if (!append) {
elementName = geo->getElementName(element, type);
elementName.second = element;
}
else {
const auto& names = geo->getElementName(element, type);
std::string prefix(subname, element - subname);
if (!names.first.empty()) {
elementName.first = prefix + names.first;
}
elementName.second = prefix + names.second;
elementName.second = Data::oldElementName(subname);
}
return sobj;
}

App::Material GeoFeature::getMaterialAppearance() const
{
return App::Material(App::Material::DEFAULT);
if (!append) {
elementName = geo->getElementName(element, type);
}

void GeoFeature::setMaterialAppearance(const App::Material& material)
{
Q_UNUSED(material)
else {
const auto& names = geo->getElementName(element, type);
std::string prefix(subname, element - subname);
if (!names.first.empty()) {
elementName.first = prefix + names.first;
}
elementName.second = prefix + names.second;
}
return sobj;
}

App::Material GeoFeature::getMaterialAppearance() const
{
return App::Material(App::Material::DEFAULT);
}

void GeoFeature::setMaterialAppearance(const App::Material& material)
{
Q_UNUSED(material)
}
Loading

0 comments on commit 53d4069

Please sign in to comment.