[PATCH setup 4/7] Restore abstract base class IniDBBuilder

Jon Turney jon.turney@dronecode.org.uk
Sat Feb 15 17:04:00 GMT 2020


This effectively reverts commit 618bd457849ed44d301d27d81d3b2f262f798897.
---
 IniDBBuilder.h        | 58 +++++++++++++++++++++++++++++++++++++++++++
 IniDBBuilderPackage.h |  6 ++---
 ini.h                 |  4 +--
 inilex.ll             |  4 +--
 iniparse.yy           |  4 +--
 5 files changed, 66 insertions(+), 10 deletions(-)
 create mode 100644 IniDBBuilder.h

diff --git a/IniDBBuilder.h b/IniDBBuilder.h
new file mode 100644
index 0000000..3b89041
--- /dev/null
+++ b/IniDBBuilder.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2002, Robert Collins.
+ *
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ *
+ *     A copy of the GNU General Public License can be found at
+ *     http://www.gnu.org/
+ *
+ * Written by Robert Collins  <rbtcollins@hotmail.com>
+ *
+ */
+
+#ifndef SETUP_INIDBBUILDER_H
+#define SETUP_INIDBBUILDER_H
+
+#include "PackageSpecification.h"
+#include "PackageTrust.h"
+
+enum class hashType { none, md5, sha512 };
+
+class IniDBBuilder
+{
+public:
+  virtual ~IniDBBuilder() {};
+
+  virtual void buildTimestamp (const std::string& ) = 0;
+  virtual void buildVersion (const std::string& ) = 0;
+  virtual const std::string buildMinimumVersion(const std::string &) = 0;
+  virtual void buildPackage (const std::string& ) = 0;
+  virtual void buildPackageVersion (const std::string& ) = 0;
+  virtual void buildPackageSDesc (const std::string& ) = 0;
+  virtual void buildPackageLDesc (const std::string& ) = 0;
+  virtual void buildPackageInstall (const std::string&, const std::string&,
+                                    char *, hashType) = 0;
+  virtual void buildPackageSource (const std::string&, const std::string&,
+                                   char *, hashType) = 0;
+  virtual void buildPackageTrust (trusts) = 0;
+  virtual void buildPackageCategory (const std::string& ) = 0;
+  virtual void buildBeginDepends () = 0;
+  virtual void buildBeginBuildDepends () = 0;
+  virtual void buildBeginObsoletes () = 0;
+  virtual void buildBeginProvides () = 0;
+  virtual void buildBeginConflicts () = 0;
+  virtual void buildMessage (const std::string&, const std::string&) = 0;
+  virtual void buildSourceName (const std::string& ) = 0;
+  virtual void buildSourceNameVersion (const std::string& ) = 0;
+  virtual void buildPackageListNode (const std::string& ) = 0;
+  virtual void buildPackageListOperator (PackageSpecification::_operators const &) = 0;
+  virtual void buildPackageListOperatorVersion (const std::string& ) = 0;
+  virtual void buildPackageReplaceVersionsList (const std::string& ) = 0;
+  virtual void set_arch (const std::string& a) = 0;
+  virtual void set_release (const std::string& rel) = 0;
+};
+
+#endif /* SETUP_INIDBBUILDER_H */
diff --git a/IniDBBuilderPackage.h b/IniDBBuilderPackage.h
index e5d3662..3e3a9e4 100644
--- a/IniDBBuilderPackage.h
+++ b/IniDBBuilderPackage.h
@@ -16,20 +16,18 @@
 #ifndef SETUP_INIDBBUILDERPACKAGE_H
 #define SETUP_INIDBBUILDERPACKAGE_H
 
+#include "IniDBBuilder.h"
 #include <vector>
 #include <set>
 
 #include "package_message.h"
-#include "PackageTrust.h"
 #include "String++.h"
 #include "libsolv.h"
 
 class IniParseFeedback;
 class packagesource;
 
-enum class hashType { none, md5, sha512 };
-
-class IniDBBuilderPackage
+class IniDBBuilderPackage:public IniDBBuilder
 {
 public:
   IniDBBuilderPackage (IniParseFeedback const &);
diff --git a/ini.h b/ini.h
index 3ff9617..1e4f889 100644
--- a/ini.h
+++ b/ini.h
@@ -30,9 +30,9 @@ extern std::string SetupIniDir;
 extern std::string SetupBaseName;
 
 class IniState;
-class IniDBBuilderPackage;
+class IniDBBuilder;
 class IniParseFeedback;
-void ini_init (io_stream *, IniDBBuilderPackage *, IniParseFeedback &);
+void ini_init (io_stream *, IniDBBuilder *, IniParseFeedback &);
 #define YYSTYPE char *
 
 /* When setup.ini is parsed, the information is stored according to
diff --git a/inilex.ll b/inilex.ll
index 0147b4d..26a95e3 100644
--- a/inilex.ll
+++ b/inilex.ll
@@ -166,11 +166,11 @@ B64	[a-zA-Z0-9_-]
 #include "io_stream.h"
 
 static io_stream *input_stream = 0;
-extern IniDBBuilderPackage *iniBuilder;
+extern IniDBBuilder *iniBuilder;
 static IniParseFeedback *iniFeedback;
 
 void
-ini_init(io_stream *stream, IniDBBuilderPackage *aBuilder, IniParseFeedback &aFeedback)
+ini_init(io_stream *stream, IniDBBuilder *aBuilder, IniParseFeedback &aFeedback)
 {
   input_stream = stream;
   iniBuilder = aBuilder;
diff --git a/iniparse.yy b/iniparse.yy
index f85fe13..ca9b8a7 100644
--- a/iniparse.yy
+++ b/iniparse.yy
@@ -25,13 +25,13 @@
 extern int yyerror (const std::string& s);
 int yylex ();
 
-#include "IniDBBuilderPackage.h"
+#include "IniDBBuilder.h"
 
 #define YYERROR_VERBOSE 1
 #define YYINITDEPTH 1000
 /*#define YYDEBUG 1*/
 
-IniDBBuilderPackage *iniBuilder;
+IniDBBuilder *iniBuilder;
 extern int yylineno;
 %}
 
-- 
2.21.0



More information about the Cygwin-apps mailing list