Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "SmartString.h"
- #include "SmartArray.h"
- using namespace std;
- class StringDisplay:public SmartArray::Callback
- {
- private:
- bool mOutline;
- public:
- bool Outline()
- {
- return mOutline;
- }
- bool Outline(bool aOutline)
- {
- return mOutline = aOutline;
- }
- StringDisplay()
- {
- Outline(false);
- }
- StringDisplay(bool aOutline)
- {
- Outline(aOutline);
- }
- void operator()(SmartObject::Reference& ref, unsigned int ID) const
- {
- try
- {
- try
- {
- SmartString& str = dynamic_cast<SmartString&>(ref());
- cout << "Object::" << str.ID() << " \"" << str << "\"" << endl;
- }
- catch( std::bad_cast& ex )
- {
- if( mOutline )
- dynamic_cast<SmartArray&>(ref()).ForEach(StringDisplay(mOutline));
- else throw ex;
- }
- }
- catch( std::bad_cast )
- {
- cout << "Element " << ID << "(Object::" << ref().ID() << ") is not a SmartString or SmartArray object!" << endl;
- }
- catch( SmartObject::Reference::NullReference )
- {
- cout << "Element " << ID << " does not refer to a valid SmartObject." << endl;
- }
- }
- };
- int main(int argc,char** argv)
- {
- SmartArray Master;
- SmartArray* minor = new SmartArray;
- minor->Append(new SmartString("Minor-A")).Append(new SmartString("Minor-B")).Append(new SmartString("Minor-C"));
- Master.Append(new SmartString("Major A")).Append(new SmartString("Major B"));
- Master.Insert(minor,-2);
- Master[-1] = NULL;
- Master.Empty().ForEach(StringDisplay(true));
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement