From ac3f0014232619edc41865f6e42e6510bdd8acc6 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Mon, 6 May 2024 18:26:24 +0900 Subject: Allow generation of build time data files in out-of-source builds. Also fix generation of data file for devices/mem24 subfolder Signed-off-by: Michele Calgaro --- src/xml_to_data/device_xml_to_data.cpp | 10 ++++++++-- src/xml_to_data/device_xml_to_data.h | 3 ++- src/xml_to_data/prog_xml_to_data.h | 16 +++++++++++----- src/xml_to_data/xml_to_data.h | 16 ++++++++++++---- 4 files changed, 33 insertions(+), 12 deletions(-) (limited to 'src/xml_to_data') diff --git a/src/xml_to_data/device_xml_to_data.cpp b/src/xml_to_data/device_xml_to_data.cpp index 5ad40a5..84d177f 100644 --- a/src/xml_to_data/device_xml_to_data.cpp +++ b/src/xml_to_data/device_xml_to_data.cpp @@ -241,10 +241,16 @@ Device::Package Device::XmlToDataBase::processPackage(TQDomElement element) void Device::XmlToDataBase::parse() { // process device files - TQStringList files = TQDir::current().entryList("*.xml"); + TQStringList files; + TQDir xmlFilesDir; + if (!xmlFolder.isEmpty()) + { + xmlFilesDir.setPath(xmlFolder); + } + files = xmlFilesDir.entryList("*.xml"); for (uint i=0; i class XmlToData : public XmlToDataBase, public DataStreamer { public: + XmlToData(const TQString &folder) : XmlToDataBase(folder) {} virtual Device::Data *createData() const { return new DataType; } DataType *data() { return static_cast(_data); } const DataType *data() const { return static_cast(_data); } diff --git a/src/xml_to_data/prog_xml_to_data.h b/src/xml_to_data/prog_xml_to_data.h index bcca9da..b977359 100644 --- a/src/xml_to_data/prog_xml_to_data.h +++ b/src/xml_to_data/prog_xml_to_data.h @@ -9,6 +9,7 @@ #ifndef PROG_XML_TO_DATA_H #define PROG_XML_TO_DATA_H +#include #include #include #include @@ -21,8 +22,8 @@ template class ExtXmlToData : public ::XmlToData { public: - ExtXmlToData(const TQString &basename, const TQString &namespac) - : _basename(basename), _namespace(namespac) {} + ExtXmlToData(const TQString &folder, const TQString &basename, const TQString &namespac) + : ::XmlToData(folder), _basename(basename), _namespace(namespac) {} protected: TQString _basename, _namespace; @@ -85,7 +86,12 @@ void ExtXmlToData::parseDevice(TQDomElement element) template void ExtXmlToData::parse() { - TQDomDocument doc = parseFile(_basename + ".xml"); + TQDir xmlFilesDir; + if (!xmlFolder.isEmpty()) + { + xmlFilesDir.setPath(xmlFolder); + } + TQDomDocument doc = parseFile(xmlFilesDir.absFilePath(_basename + ".xml")); TQDomElement root = doc.documentElement(); if ( root.nodeName()!="type" ) tqFatal("Root node should be \"type\""); if ( root.attribute("name")!=_basename ) tqFatal(TQString("Root node name is not \"%1\"").arg(_basename)); @@ -186,8 +192,8 @@ template class XmlToData : public ExtXmlToData { public: - XmlToData(const TQString &basename, const TQString &namespac) - : ExtXmlToData(basename, namespac) {} + XmlToData(const TQString &folder, const TQString &basename, const TQString &namespac) + : ExtXmlToData(folder, basename, namespac) {} protected: virtual void outputFunctions(TQTextStream &s) const; diff --git a/src/xml_to_data/xml_to_data.h b/src/xml_to_data/xml_to_data.h index 1b45ea6..2d91640 100644 --- a/src/xml_to_data/xml_to_data.h +++ b/src/xml_to_data/xml_to_data.h @@ -10,13 +10,14 @@ #define XML_TO_DATA_H #include "common/global/global.h" -# include + +#include #include class XmlToData { public: - XmlToData() {} + XmlToData(const TQString &folder) : xmlFolder(folder) {} virtual ~XmlToData() {} void process(); @@ -30,12 +31,19 @@ protected: const TQString &attribute, const TQString &value) const; void checkTagNames(TQDomElement element, const TQString &tag, const TQStringList &names) const; TQDomDocument parseFile(const TQString &filename) const; + + TQString xmlFolder; }; #define XML_MAIN(_type) \ - int main(int, char **) \ + int main(int argc, char **argv) \ { \ - _type dx; \ + TQString xmlFolder = TQString::null; \ + if (argc > 1) \ + { \ + xmlFolder = argv[1]; \ + } \ + _type dx(xmlFolder); \ dx.process(); \ return 0; \ } -- cgit v1.2.3