Skip to content

Commit

Permalink
remove duplicated "TxAcx", etc.
Browse files Browse the repository at this point in the history
  • Loading branch information
JDanielSmith committed Apr 15, 2024
1 parent ea48169 commit 0c43645
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 13 deletions.
7 changes: 2 additions & 5 deletions six/modules/c++/cphd/include/cphd/PVPBlock.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,9 @@ struct AddedPVP<std::string>
}
};

struct PvpAntenna
struct PvpAntenna final
{
PvpAntenna() :
acx(Vector3()),
acy(Vector3()),
eb(Vector2()) {};
PvpAntenna() = default;
PvpAntenna(Vector3 acx, Vector3 acy, Vector2 eb):
acx(acx),
acy(acy),
Expand Down
24 changes: 16 additions & 8 deletions six/modules/c++/cphd/source/CPHDXMLParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1443,14 +1443,18 @@ void CPHDXMLParser::fromXML(const xml::lite::Element* channelXML, Channel& chann
}
}

void CPHDXMLParser::parse(const xml::lite::Element& parent, six::XsElement<PerVectorParameterXYZ>& v) const
void CPHDXMLParser::parse(const xml::lite::Element& antennaXml, six::XsElement<PerVectorParameterXYZ>& v) const
{
const auto& parent = getFirstAndOnly(antennaXml, v.tag());

auto& param = value(v).param;
const auto offset = parsePVPType(parent, param);
setOffset(param, offset);
}
void CPHDXMLParser::parse(const xml::lite::Element& parent, six::XsElement<PerVectorParameterEB>& v) const
void CPHDXMLParser::parse(const xml::lite::Element& antennaXml, six::XsElement<PerVectorParameterEB>& v) const
{
const auto& parent = getFirstAndOnly(antennaXml, v.tag());

auto& param = value(v).param;
const auto offset = parsePVPType(parent, param);
setOffset(param, offset);
Expand All @@ -1461,19 +1465,23 @@ void CPHDXMLParser::parse(const xml::lite::Element& parent, six::XsElement_minOc
if (const auto pXML = getOptional(parent, o.tag()))
{
o.value().emplace();
parse(getFirstAndOnly(*pXML, "TxACX"), value(o).txACX);
parse(getFirstAndOnly(*pXML, "TxACY"), value(o).txACY);
parse(getFirstAndOnly(*pXML, "TxEB"), value(o).txEB);
auto& antenna = value(o);

parse(*pXML, antenna.txACX);
parse(*pXML, antenna.txACY);
parse(*pXML, antenna.txEB);
}
}
void CPHDXMLParser::parse(const xml::lite::Element& parent, six::XsElement_minOccurs0<RcvAntenna>& o) const
{
if (const auto pXML = getOptional(parent, o.tag()))
{
o.value().emplace();
parse(getFirstAndOnly(*pXML, "RcvACX"), value(o).rcvACX);
parse(getFirstAndOnly(*pXML, "RcvACY"), value(o).rcvACY);
parse(getFirstAndOnly(*pXML, "RcvEB"), value(o).rcvEB);
auto& antenna = value(o);

parse(*pXML, antenna.rcvACX);
parse(*pXML, antenna.rcvACY);
parse(*pXML, antenna.rcvEB);
}
}

Expand Down
17 changes: 17 additions & 0 deletions six/modules/c++/cphd/unittests/test_cphd_xml_optional.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,23 @@ const char* test_cphd_xml_optional_XML =
" <Size>1</Size>\n"
" <Format>F8</Format>\n"
" </SCSS>\n"
" <TxAntenna>\n"
" <TxACX>\n"
" <Size>3</Size>\n"
" <Offset>0</Offset>\n"
" <Format>X=F8;Y=F8;Z=F8;</Format>\n"
" </TxACX>\n"
" <TxACY>\n"
" <Size>3</Size>\n"
" <Offset>0</Offset>\n"
" <Format>X=F8;Y=F8;Z=F8;</Format>\n"
" </TxACY>\n"
" <TxEB>\n"
" <Size>2</Size>\n"
" <Offset>0</Offset>\n"
" <Format>DCX=F8;DCY=F8;</Format>\n"
" </TxEB>\n"
" </TxAntenna>\n"
" <AddedPVP>\n"
" <Name>newParam1</Name>\n"
" <Offset>27</Offset>\n"
Expand Down

0 comments on commit 0c43645

Please sign in to comment.