EnvObj: Restrict access. (#7121)
authorAina Niemetz <aina.niemetz@gmail.com>
Thu, 2 Sep 2021 19:04:11 +0000 (12:04 -0700)
committerGitHub <noreply@github.com>
Thu, 2 Sep 2021 19:04:11 +0000 (19:04 +0000)
This makes all members of EnvObj protected in order to prevent creating
EnvObj instances and call member functions. It further uses protected
inheritance (instead of public) for derived classes in order to disallow
`EnvObj* a = new DerivedObj();`.

src/preprocessing/preprocessing_pass.h
src/preprocessing/util/ite_utilities.h
src/smt/env_obj.h

index e1c3a5100499694178e4d7165c9ec5d35d137d5e..cc438e5c69dcd0493c6d1528a1fa8a5d6aa49a32 100644 (file)
@@ -49,7 +49,7 @@ class PreprocessingPassContext;
  */
 enum PreprocessingPassResult { CONFLICT, NO_CONFLICT };
 
-class PreprocessingPass : public EnvObj
+class PreprocessingPass : protected EnvObj
 {
  public:
   /* Preprocesses a list of assertions assertionsToPreprocess */
index 48408e46ee02a654079bfec96fb4bdfbd664c06a..1d2aa70848d78deca11ad3989b28bcec20e41088 100644 (file)
@@ -67,7 +67,7 @@ class ContainsTermITEVisitor
   NodeBoolMap d_cache;
 };
 
-class ITEUtilities : public EnvObj
+class ITEUtilities : protected EnvObj
 {
  public:
   ITEUtilities(Env& env);
@@ -164,7 +164,7 @@ class TermITEHeightCounter
  * A routine designed to undo the potentially large blow up
  * due to expansion caused by the ite simplifier.
  */
-class ITECompressor : public EnvObj
+class ITECompressor : protected EnvObj
 {
  public:
   ITECompressor(Env& env, ContainsTermITEVisitor* contains);
@@ -206,7 +206,7 @@ class ITECompressor : public EnvObj
   Statistics d_statistics;
 }; /* class ITECompressor */
 
-class ITESimplifier : public EnvObj
+class ITESimplifier : protected EnvObj
 {
  public:
   ITESimplifier(Env& env, ContainsTermITEVisitor* d_containsVisitor);
index 69aab76471a63f71341c3716892e64c32b709396..bae05874b7ef021d4360782723201db3582dab1e 100644 (file)
@@ -31,12 +31,12 @@ class Options;
 
 class EnvObj
 {
- public:
+ protected:
   /** Constructor. */
   EnvObj(Env& env);
   EnvObj() = delete;
   /** Destructor.  */
-  ~EnvObj() {}
+  virtual ~EnvObj() {}
 
   /**
    * Rewrite a node.
@@ -44,7 +44,6 @@ class EnvObj
    */
   Node rewrite(TNode node);
 
- protected:
   /** The associated environment. */
   Env& d_env;
 };