diff options
Diffstat (limited to 'libvtv/testsuite/libvtv.cc/xlan-test.cc')
-rw-r--r-- | libvtv/testsuite/libvtv.cc/xlan-test.cc | 185 |
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; +} |