xlan-test.cc 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. // { dg-do run }
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. class XMemory
  5. {
  6. public:
  7. void * operator new (size_t size);
  8. void operator delete (void *p);
  9. protected:
  10. XMemory () {}
  11. virtual ~XMemory() {}
  12. };
  13. class XSerializable
  14. {
  15. public:
  16. virtual ~XSerializable () {};
  17. virtual bool isSerializable() const = 0;
  18. virtual void serialize () = 0;
  19. protected:
  20. XSerializable() {};
  21. };
  22. class Grammar: public XSerializable, public XMemory
  23. {
  24. public:
  25. enum GrammarType {
  26. DTDGrammarType,
  27. SchemaGrammarType,
  28. OtherGrammarType,
  29. Unknown
  30. };
  31. virtual ~Grammar() {}
  32. virtual GrammarType getGrammarType() const = 0;
  33. virtual bool getValidated() const = 0;
  34. virtual bool isSerializable() const;
  35. virtual void serialize ();
  36. protected:
  37. Grammar() {};
  38. };
  39. class SchemaGrammar : public Grammar
  40. {
  41. public:
  42. SchemaGrammar () : Grammar(), elemID(10) { fValidated = true; }
  43. virtual ~SchemaGrammar() {}
  44. virtual Grammar::GrammarType getGrammarType() const;
  45. virtual bool getValidated() const;
  46. virtual bool isSerializable () const;
  47. virtual void serialize ();
  48. private:
  49. const unsigned int elemID;
  50. bool fValidated;
  51. };
  52. class OtherGrammar : public Grammar
  53. {
  54. public:
  55. OtherGrammar () : Grammar(), elemID(10) { fValidated = true; }
  56. virtual ~OtherGrammar() {}
  57. virtual Grammar::GrammarType getGrammarType() const;
  58. virtual bool getValidated() const;
  59. virtual bool isSerializable () const;
  60. virtual void serialize ();
  61. private:
  62. const unsigned int elemID;
  63. bool fValidated;
  64. };
  65. void
  66. Grammar::serialize ()
  67. {
  68. printf ("in Grammar::serialize\n");
  69. }
  70. bool
  71. Grammar::isSerializable () const
  72. {
  73. return true;
  74. }
  75. bool
  76. SchemaGrammar::isSerializable () const
  77. {
  78. return true;
  79. }
  80. void
  81. SchemaGrammar::serialize ()
  82. {
  83. printf ("in SchemaGrammar::serialize\n");
  84. }
  85. Grammar::GrammarType
  86. SchemaGrammar::getGrammarType() const {
  87. return Grammar::SchemaGrammarType;
  88. }
  89. bool
  90. SchemaGrammar::getValidated () const
  91. {
  92. return fValidated;
  93. }
  94. void *
  95. XMemory::operator new (size_t size)
  96. {
  97. return malloc (size);
  98. }
  99. void
  100. XMemory::operator delete (void *p)
  101. {
  102. }
  103. bool
  104. OtherGrammar::isSerializable () const
  105. {
  106. return false;
  107. }
  108. void
  109. OtherGrammar::serialize ()
  110. {
  111. printf ("in OtherGrammar::serialize\n");
  112. }
  113. Grammar::GrammarType
  114. OtherGrammar::getGrammarType() const {
  115. return Grammar::OtherGrammarType;
  116. }
  117. bool
  118. OtherGrammar::getValidated () const
  119. {
  120. return fValidated;
  121. }
  122. int
  123. main (int argc, char **argv)
  124. {
  125. SchemaGrammar sPtr;
  126. OtherGrammar oPtr;
  127. Grammar &sGrammar = sPtr;
  128. for (int i = 0; i < 2; ++i)
  129. {
  130. if (i == 0)
  131. sGrammar = oPtr;
  132. else
  133. sGrammar = sPtr;
  134. if (sGrammar.getGrammarType() != Grammar::SchemaGrammarType ||
  135. sGrammar.getValidated ())
  136. printf ("if condition was true.\n");
  137. else
  138. printf ("if condition was false.\n");
  139. }
  140. return 0;
  141. }