Advertisement
Tyler_Elric

FullMetalSample.cpp

Dec 28th, 2011
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2. #include "SmartString.h"
  3. #include "SmartArray.h"
  4.  
  5. using namespace std;
  6.  
  7. class StringDisplay:public SmartArray::Callback
  8. {
  9. private:
  10.     bool mOutline;
  11. public:
  12.     bool Outline()
  13.     {
  14.         return mOutline;
  15.     }
  16.     bool Outline(bool aOutline)
  17.     {
  18.         return mOutline = aOutline;
  19.     }
  20.     StringDisplay()
  21.     {
  22.         Outline(false);
  23.     }
  24.     StringDisplay(bool aOutline)
  25.     {
  26.         Outline(aOutline);
  27.     }
  28.     void operator()(SmartObject::Reference& ref, unsigned int ID) const
  29.     {
  30.         try
  31.         {
  32.             try
  33.             {
  34.                 SmartString& str = dynamic_cast<SmartString&>(ref());
  35.                 cout << "Object::" << str.ID() << " \"" << str << "\"" << endl;
  36.             }
  37.             catch( std::bad_cast& ex )
  38.             {
  39.                 if( mOutline )
  40.                     dynamic_cast<SmartArray&>(ref()).ForEach(StringDisplay(mOutline));
  41.                 else throw ex;
  42.             }
  43.         }
  44.         catch( std::bad_cast )
  45.         {
  46.             cout << "Element " << ID << "(Object::" << ref().ID() << ") is not a SmartString or SmartArray object!" << endl;
  47.         }
  48.         catch( SmartObject::Reference::NullReference )
  49.         {
  50.             cout << "Element " << ID << " does not refer to a valid SmartObject." << endl;
  51.         }
  52.     }
  53. };
  54.  
  55. int main(int argc,char** argv)
  56. {
  57.     SmartArray Master;
  58.     SmartArray* minor = new SmartArray;
  59.     minor->Append(new SmartString("Minor-A")).Append(new SmartString("Minor-B")).Append(new SmartString("Minor-C"));
  60.     Master.Append(new SmartString("Major A")).Append(new SmartString("Major B"));
  61.     Master.Insert(minor,-2);
  62.     Master[-1] = NULL;
  63.     Master.Empty().ForEach(StringDisplay(true));
  64.     system("PAUSE");
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement