summaryrefslogtreecommitdiff
path: root/libvtv/testsuite/libvtv.cc/xlan-test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libvtv/testsuite/libvtv.cc/xlan-test.cc')
-rw-r--r--libvtv/testsuite/libvtv.cc/xlan-test.cc185
1 files changed, 185 insertions, 0 deletions
diff --git a/libvtv/testsuite/libvtv.cc/xlan-test.cc b/libvtv/testsuite/libvtv.cc/xlan-test.cc
new file mode 100644
index 00000000000..213ed613fbb
--- /dev/null
+++ b/libvtv/testsuite/libvtv.cc/xlan-test.cc
@@ -0,0 +1,185 @@
+// { dg-do run }
+
+#include <stdio.h>
+#include <stdlib.h>
+
+class XMemory
+{
+public:
+ void * operator new (size_t size);
+ void operator delete (void *p);
+
+protected:
+ XMemory () {}
+
+ virtual ~XMemory() {}
+};
+
+class XSerializable
+{
+public:
+ virtual ~XSerializable () {};
+
+ virtual bool isSerializable() const = 0;
+ virtual void serialize () = 0;
+
+protected:
+ XSerializable() {};
+
+};
+
+class Grammar: public XSerializable, public XMemory
+{
+public:
+ enum GrammarType {
+ DTDGrammarType,
+ SchemaGrammarType,
+ OtherGrammarType,
+ Unknown
+ };
+
+ virtual ~Grammar() {}
+
+ virtual GrammarType getGrammarType() const = 0;
+ virtual bool getValidated() const = 0;
+
+ virtual bool isSerializable() const;
+ virtual void serialize ();
+
+protected:
+ Grammar() {};
+
+};
+
+class SchemaGrammar : public Grammar
+{
+public:
+
+ SchemaGrammar () : Grammar(), elemID(10) { fValidated = true; }
+
+ virtual ~SchemaGrammar() {}
+
+ virtual Grammar::GrammarType getGrammarType() const;
+ virtual bool getValidated() const;
+
+ virtual bool isSerializable () const;
+ virtual void serialize ();
+
+private:
+ const unsigned int elemID;
+ bool fValidated;
+
+};
+
+class OtherGrammar : public Grammar
+{
+public:
+
+ OtherGrammar () : Grammar(), elemID(10) { fValidated = true; }
+
+ virtual ~OtherGrammar() {}
+
+ virtual Grammar::GrammarType getGrammarType() const;
+ virtual bool getValidated() const;
+
+ virtual bool isSerializable () const;
+ virtual void serialize ();
+
+private:
+ const unsigned int elemID;
+ bool fValidated;
+
+};
+
+void
+Grammar::serialize ()
+{
+ printf ("in Grammar::serialize\n");
+}
+
+bool
+Grammar::isSerializable () const
+{
+ return true;
+}
+
+bool
+SchemaGrammar::isSerializable () const
+{
+ return true;
+}
+
+void
+SchemaGrammar::serialize ()
+{
+ printf ("in SchemaGrammar::serialize\n");
+}
+
+Grammar::GrammarType
+SchemaGrammar::getGrammarType() const {
+ return Grammar::SchemaGrammarType;
+}
+
+bool
+SchemaGrammar::getValidated () const
+{
+ return fValidated;
+}
+
+void *
+XMemory::operator new (size_t size)
+{
+ return malloc (size);
+}
+
+void
+XMemory::operator delete (void *p)
+{
+}
+
+bool
+OtherGrammar::isSerializable () const
+{
+ return false;
+}
+
+void
+OtherGrammar::serialize ()
+{
+ printf ("in OtherGrammar::serialize\n");
+}
+
+Grammar::GrammarType
+OtherGrammar::getGrammarType() const {
+ return Grammar::OtherGrammarType;
+}
+
+bool
+OtherGrammar::getValidated () const
+{
+ return fValidated;
+}
+
+int
+main (int argc, char **argv)
+{
+ SchemaGrammar sPtr;
+ OtherGrammar oPtr;
+ Grammar &sGrammar = sPtr;
+
+ for (int i = 0; i < 2; ++i)
+ {
+ if (i == 0)
+ sGrammar = oPtr;
+ else
+ sGrammar = sPtr;
+
+ if (sGrammar.getGrammarType() != Grammar::SchemaGrammarType ||
+ sGrammar.getValidated ())
+ printf ("if condition was true.\n");
+ else
+ printf ("if condition was false.\n");
+ }
+
+ return 0;
+}