Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Feb 16, 2008, 7:31:18 PM (16 years ago)
Author:
landauf
Message:

big update:

  • reimplemented direct-child and direct-parent list and several related functions (get-iterator, get-list)
  • reimplemented isDirectChildOf- and isDirectParentOf-functions in Identifier, SubclassIdentifier and OrxonoxClass
  • renamed isDirectlyA to isExactlyA in Identifier, SubclassIdentifier and OrxonoxClass
  • ClassTreeMask works now with interfaces and has more possibilities (parameters for overwriting of previous rules and cleaning after adding a new function)
  • ObjectList's begin() and end() functions use ClassManager to avoid problems with libraries
  • the Factory got functions to return begin() and end() iterator for the identifier-map
  • overloaded << operator to put identifier-lists on the stream
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core/src/orxonox/Orxonox.cc

    r811 r817  
    7878#include "core/ClassTreeMask.h"
    7979#include "objects/WorldEntity.h"
     80#include "core/DebugLevel.h"
    8081#include "core/BaseObject.h"
    8182#include "objects/Test.h"
     
    231232      break;
    232233    }
    233 
    234234        #define testandcout(code) \
    235235          std::cout << #code << " " << code << "\n"
    236 
    237236/*
    238237        std::cout << "Test 1\n";
     
    259258        test4 = new A3();
    260259        test4 = new A3();
    261 */
    262 /*
     260
     261
    263262        std::cout << "Test 5\n";
    264263        A1* test5_01 = new A1();
     
    280279        A3B2C1* test5_17 = new A3B2C1();
    281280        A3B2C2* test5_18 = new A3B2C2();
    282 
    283         OrxonoxClass* test5;
     281*/
     282/*
     283        OrxonoxClass* test5 = 0;
    284284        for (int i = 0; i <= 18; i++)
    285285        {
     
    305305
    306306          std::cout << "\n";
    307           std::cout << test5->getIdentifier()->getName() << " (" << test5->getIdentifier()->getNetworkID() << "): parents:     " << test5->getIdentifier()->getParents().toString() << "\n";
    308           std::cout << test5->getIdentifier()->getName() << " (" << test5->getIdentifier()->getNetworkID() << "): children:    " << test5->getIdentifier()->getChildren().toString() << "\n";
     307          std::cout << test5->getIdentifier()->getName() << " (" << test5->getIdentifier()->getNetworkID() << "): parents:         " << test5->getIdentifier()->getParents() << "\n";
     308          std::cout << test5->getIdentifier()->getName() << " (" << test5->getIdentifier()->getNetworkID() << "): children:        " << test5->getIdentifier()->getChildren() << "\n";
     309          std::cout << test5->getIdentifier()->getName() << " (" << test5->getIdentifier()->getNetworkID() << "): direct parents:  " << test5->getIdentifier()->getDirectParents() << "\n";
     310          std::cout << test5->getIdentifier()->getName() << " (" << test5->getIdentifier()->getNetworkID() << "): direct children: " << test5->getIdentifier()->getDirectChildren() << "\n";
    309311        }
    310 
    311         std::cout << "Class with ID 0: " << ID(0) << " " << ID(0)->getName() << "\n";
    312         std::cout << "Class with ID 1: " << ID(1) << " " << ID(1)->getName() << "\n";
    313         std::cout << "Class with ID 2: " << ID(2) << " " << ID(2)->getName() << "\n";
    314         std::cout << "Class with ID 3: " << ID(3) << " " << ID(3)->getName() << "\n";
    315         std::cout << "Class with ID 4: " << ID(4) << " " << ID(4)->getName() << "\n";
     312*/
     313/*
     314        for (std::map<std::string, Identifier*>::const_iterator it = Factory::getFactoryBegin(); it != Factory::getFactoryEnd(); ++it)
     315            std::cout << "Class with ID " << (*it).second->getNetworkID() << ": " << ID((*it).second->getNetworkID()) << " / " << ID((*it).second->getNetworkID())->getName() << std::endl;
     316
    316317        std::cout << "Class with ID 100: " << ID(100) << "\n";
    317318        std::cout << "ID of BaseObject: " << Class(BaseObject)->getNetworkID() << "\n";
     
    360361        std::cout << "isDirectA(XYZ)-Test:\n";
    361362        std::cout << "test5_01 = A1, Erwartet: 1 0 0 0 0\n";
    362         testandcout(test5_01->isDirectlyA(Class(A1)));
    363         testandcout(test5_01->isDirectlyA(Class(A2)));
    364         testandcout(test5_01->isDirectlyA(Class(A1B1)));
    365         testandcout(test5_01->isDirectlyA(Class(BaseObject)));
    366         testandcout(test5_01->isDirectlyA(Class(Interface1)));
     363        testandcout(test5_01->isExactlyA(Class(A1)));
     364        testandcout(test5_01->isExactlyA(Class(A2)));
     365        testandcout(test5_01->isExactlyA(Class(A1B1)));
     366        testandcout(test5_01->isExactlyA(Class(BaseObject)));
     367        testandcout(test5_01->isExactlyA(Class(Interface1)));
    367368
    368369        std::cout << "\n";
    369370        std::cout << "test5_02 = A2, Erwartet: 0 1 0 0 0\n";
    370         testandcout(test5_02->isDirectlyA(Class(A1)));
    371         testandcout(test5_02->isDirectlyA(Class(A2)));
    372         testandcout(test5_02->isDirectlyA(Class(A1B1)));
    373         testandcout(test5_02->isDirectlyA(Class(BaseObject)));
    374         testandcout(test5_02->isDirectlyA(Class(Interface1)));
     371        testandcout(test5_02->isExactlyA(Class(A1)));
     372        testandcout(test5_02->isExactlyA(Class(A2)));
     373        testandcout(test5_02->isExactlyA(Class(A1B1)));
     374        testandcout(test5_02->isExactlyA(Class(BaseObject)));
     375        testandcout(test5_02->isExactlyA(Class(Interface1)));
    375376
    376377        std::cout << "\n";
    377378        std::cout << "test5_03 = A3, Erwartet: 0 0 0 0 0\n";
    378         testandcout(test5_03->isDirectlyA(Class(A1)));
    379         testandcout(test5_03->isDirectlyA(Class(A2)));
    380         testandcout(test5_03->isDirectlyA(Class(A1B1)));
    381         testandcout(test5_03->isDirectlyA(Class(BaseObject)));
    382         testandcout(test5_03->isDirectlyA(Class(Interface1)));
     379        testandcout(test5_03->isExactlyA(Class(A1)));
     380        testandcout(test5_03->isExactlyA(Class(A2)));
     381        testandcout(test5_03->isExactlyA(Class(A1B1)));
     382        testandcout(test5_03->isExactlyA(Class(BaseObject)));
     383        testandcout(test5_03->isExactlyA(Class(Interface1)));
    383384
    384385        std::cout << "\n";
     
    431432
    432433        std::cout << "\n";
     434        std::cout << "isDirectChildOf(XYZ)-Test:\n";
     435        std::cout << "test5_04 = A1B1, Erwartet: 1 0 0 0 0 0 0\n";
     436        testandcout(test5_04->isDirectChildOf(Class(A1)));
     437        testandcout(test5_04->isDirectChildOf(Class(A2)));
     438        testandcout(test5_04->isDirectChildOf(Class(BaseObject)));
     439        testandcout(test5_04->isDirectChildOf(Class(Interface1)));
     440        testandcout(test5_04->isDirectChildOf(Class(Interface2)));
     441        testandcout(test5_04->isDirectChildOf(Class(A1B1C2)));
     442        testandcout(test5_04->isDirectChildOf(Class(A1B1)));
     443
     444        std::cout << "\n";
     445        std::cout << "test5_06 = A2B1, Erwartet: 0 1 0 0 0 0 0\n";
     446        testandcout(test5_06->isDirectChildOf(Class(A1)));
     447        testandcout(test5_06->isDirectChildOf(Class(A2)));
     448        testandcout(test5_06->isDirectChildOf(Class(BaseObject)));
     449        testandcout(test5_06->isDirectChildOf(Class(Interface1)));
     450        testandcout(test5_06->isDirectChildOf(Class(Interface2)));
     451        testandcout(test5_06->isDirectChildOf(Class(A1B1C2)));
     452        testandcout(test5_06->isDirectChildOf(Class(A1B1)));
     453
     454        std::cout << "\n";
     455        std::cout << "test5_07 = A2B2, Erwartet: 0 1 0 1 0 0\n";
     456        testandcout(test5_07->isDirectChildOf(Class(A1)));
     457        testandcout(test5_07->isDirectChildOf(Class(A2)));
     458        testandcout(test5_07->isDirectChildOf(Class(BaseObject)));
     459        testandcout(test5_07->isDirectChildOf(Class(Interface1)));
     460        testandcout(test5_07->isDirectChildOf(Class(Interface2)));
     461        testandcout(test5_07->isDirectChildOf(Class(A1B1C2)));
     462
     463        std::cout << "\n";
     464        std::cout << "test5_08 = A3B1, Erwartet: 0 0 0 0 0 0\n";
     465        testandcout(test5_08->isDirectChildOf(Class(A1)));
     466        testandcout(test5_08->isDirectChildOf(Class(A2)));
     467        testandcout(test5_08->isDirectChildOf(Class(BaseObject)));
     468        testandcout(test5_08->isDirectChildOf(Class(Interface1)));
     469        testandcout(test5_08->isDirectChildOf(Class(Interface2)));
     470        testandcout(test5_08->isDirectChildOf(Class(A1B1C2)));
     471
     472        std::cout << "\n";
     473        std::cout << "test5_09 = A3B2, Erwartet: 0 0 0 0 1 0\n";
     474        testandcout(test5_09->isDirectChildOf(Class(A1)));
     475        testandcout(test5_09->isDirectChildOf(Class(A2)));
     476        testandcout(test5_09->isDirectChildOf(Class(BaseObject)));
     477        testandcout(test5_09->isDirectChildOf(Class(Interface1)));
     478        testandcout(test5_09->isDirectChildOf(Class(Interface2)));
     479        testandcout(test5_09->isDirectChildOf(Class(A1B1C2)));
     480
     481        std::cout << "\n";
     482
    433483        std::cout << "isParentOf(XYZ)-Test:\n";
    434484        std::cout << "test1 = BaseObject, Erwartet: 0 0 1 1 1 1 1\n";
     
    460510        testandcout(Class(Interface1)->isParentOf(Class(A2B2)));
    461511        testandcout(Class(Interface1)->isParentOf(Class(A3B1C2)));
     512
     513        std::cout << "\n";
     514        std::cout << "isDirectParentOf(XYZ)-Test:\n";
     515        std::cout << "test1 = BaseObject, Erwartet: 0 0 1 1 0 0 0\n";
     516        testandcout(test1->isDirectParentOf(Class(BaseObject)));
     517        testandcout(test1->isDirectParentOf(Class(Interface1)));
     518        testandcout(test1->isDirectParentOf(Class(A1)));
     519        testandcout(test1->isDirectParentOf(Class(A2)));
     520        testandcout(test1->isDirectParentOf(Class(A1B1)));
     521        testandcout(test1->isDirectParentOf(Class(A2B2)));
     522        testandcout(test1->isDirectParentOf(Class(A3B1C2)));
     523
     524        std::cout << "\n";
     525        std::cout << "test5_01 = A1, Erwartet: 0 0 0 0 1 0 0\n";
     526        testandcout(test5_01->isDirectParentOf(Class(BaseObject)));
     527        testandcout(test5_01->isDirectParentOf(Class(Interface1)));
     528        testandcout(test5_01->isDirectParentOf(Class(A1)));
     529        testandcout(test5_01->isDirectParentOf(Class(A2)));
     530        testandcout(test5_01->isDirectParentOf(Class(A1B1)));
     531        testandcout(test5_01->isDirectParentOf(Class(A2B2)));
     532        testandcout(test5_01->isDirectParentOf(Class(A3B1C2)));
     533
     534        std::cout << "\n";
     535        std::cout << "Interface1, Erwartet: 0 0 0 0 0 1 0\n";
     536        testandcout(Class(Interface1)->isDirectParentOf(Class(BaseObject)));
     537        testandcout(Class(Interface1)->isDirectParentOf(Class(Interface1)));
     538        testandcout(Class(Interface1)->isDirectParentOf(Class(A1)));
     539        testandcout(Class(Interface1)->isDirectParentOf(Class(A2)));
     540        testandcout(Class(Interface1)->isDirectParentOf(Class(A1B1)));
     541        testandcout(Class(Interface1)->isDirectParentOf(Class(A2B2)));
     542        testandcout(Class(Interface1)->isDirectParentOf(Class(A3B1C2)));
    462543*/
    463544/*
    464545        std::cout << "Test 6\n";
    465         std::cout << "1:\n";
     546        std::cout << "1\n";
    466547        Identifier* test6_01 = Class(A1B1);
    467         std::cout << "2:\n";
     548        std::cout << "2\n";
    468549        Identifier* test6_02 = Class(A1B1);
    469         std::cout << "3:\n";
     550        std::cout << "3\n";
    470551        Identifier* test6_03 = Class(A1);
    471         std::cout << "4:\n";
     552        std::cout << "4\n";
    472553        Identifier* test6_04 = Class(A1B1C1);
    473         std::cout << "5:\n";
     554        std::cout << "5\n";
    474555        Identifier* test6_05 = Class(A1B1);
    475         std::cout << "6:\n";
     556        std::cout << "6\n";
    476557        Identifier* test6_06 = Class(A1B1C1);
    477558
    478         std::cout << "\n";
    479         std::cout << "BaseObject: parents:     " << Class(BaseObject)->getParents().toString() << "\n";
    480         std::cout << "BaseObject: children:    " << Class(BaseObject)->getChildren().toString() << "\n";
    481 
    482         std::cout << "\n";
    483         std::cout << "A1: parents:     " << Class(A1)->getParents().toString() << "\n";
    484         std::cout << "A1: children:    " << Class(A1)->getChildren().toString() << "\n";
    485 
    486         std::cout << "\n";
    487         std::cout << "A1B1: parents:     " << Class(A1B1)->getParents().toString() << "\n";
    488         std::cout << "A1B1: children:    " << Class(A1B1)->getChildren().toString() << "\n";
    489 
    490         std::cout << "\n";
    491         std::cout << "A1B1C1: parents:     " << Class(A1B1C1)->getParents().toString() << "\n";
    492         std::cout << "A1B1C1: children:    " << Class(A1B1C1)->getChildren().toString() << "\n";
    493 
    494         std::cout << "\n";
    495         std::cout << "A3B1C1 child of A3:  " << Class(A3B1C1)->isChildOf(Class(A3)) << "\n";
    496         std::cout << "\n";
    497         std::cout << "A2 parent of A2B1C1: " << Class(A2)->isParentOf(Class(A2B1C1)) << "\n";
     559        std::cout << "7\n";
     560
     561        std::cout << "\n";
     562        std::cout << "BaseObject: parents:         " << Class(BaseObject)->getParents() << "\n";
     563        std::cout << "BaseObject: children:        " << Class(BaseObject)->getChildren() << "\n";
     564        std::cout << "BaseObject: direct parents:  " << Class(BaseObject)->getDirectParents() << "\n";
     565        std::cout << "BaseObject: direct children: " << Class(BaseObject)->getDirectChildren() << "\n";
     566
     567        std::cout << "\n";
     568        std::cout << "A1: parents:                 " << Class(A1)->getParents() << "\n";
     569        std::cout << "A1: children:                " << Class(A1)->getChildren() << "\n";
     570        std::cout << "A1: direct parents:          " << Class(A1)->getDirectParents() << "\n";
     571        std::cout << "A1: direct children:         " << Class(A1)->getDirectChildren() << "\n";
     572
     573        std::cout << "\n";
     574        std::cout << "A1B1: parents:               " << Class(A1B1)->getParents() << "\n";
     575        std::cout << "A1B1: children:              " << Class(A1B1)->getChildren() << "\n";
     576        std::cout << "A1B1: direct parents:        " << Class(A1B1)->getDirectParents() << "\n";
     577        std::cout << "A1B1: direct children:       " << Class(A1B1)->getDirectChildren() << "\n";
     578
     579        std::cout << "\n";
     580        std::cout << "A1B1C1: parents:             " << Class(A1B1C1)->getParents() << "\n";
     581        std::cout << "A1B1C1: children:            " << Class(A1B1C1)->getChildren() << "\n";
     582        std::cout << "A1B1C1: direct parents:      " << Class(A1B1C1)->getDirectParents() << "\n";
     583        std::cout << "A1B1C1: direct children:     " << Class(A1B1C1)->getDirectChildren() << "\n";
     584
     585        std::cout << "\n";
     586        std::cout << "A3B1C1 child of A3:      " << Class(A3B1C1)->isChildOf(Class(A3)) << "\n";
     587        std::cout << "\n";
     588        std::cout << "A2 parent of A2B1C1:     " << Class(A2)->isParentOf(Class(A2B1C1)) << "\n";
     589
     590        std::cout << "8\n";
    498591*/
    499592/*
     
    510603*/
    511604/*
     605// ## WARNING - CRASH! ##
    512606        std::cout << "2\n";
    513607
     
    520614        SubclassIdentifier<A1B1> test7_05;
    521615        test7_05 = Class(A2);
     616// ## END WARNING - CRASH! ##
    522617*/
    523618/*
     
    558653        delete test8_02;
    559654        delete test8_03;
    560 
    561 
     655*/
     656/*
    562657        std::cout << "Test 9\n";
    563658        std::cout << "1\n";
     
    603698        int count;
    604699
    605         count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it != 0; ++it) { count++; }
     700        count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it; ++it) { count++; }
    606701        std::cout << "Anzahl BaseObjects: " << count << "\n";
    607         count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it != 0; ++it) { count++; }
     702        count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it; ++it) { count++; }
    608703        std::cout << "Anzahl A1: " << count << "\n";
    609704        count = 0; for (Iterator<A1B1> it = ObjectList<A1B1>::start(); it; ++it) { count++; }
     
    616711        std::cout << "2\n";
    617712        BaseObject* test10_08;
    618         BaseObject* test10_09;
    619         BaseObject* test10_10;
     713        BaseObject* test10_09 = 0;
     714        BaseObject* test10_10 = 0;
    620715        for (int i = 0; i < 10; i++)
    621716        {
     
    632727        }
    633728
    634         count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it != 0; ++it) { count++; }
     729        count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it; ++it) { count++; }
    635730        std::cout << "Anzahl BaseObjects: " << count << "\n";
    636         count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it != 0; ++it) { count++; }
     731        count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it; ++it) { count++; }
    637732        std::cout << "Anzahl A1: " << count << "\n";
    638733        count = 0; for (Iterator<A1B1> it = ObjectList<A1B1>::start(); it; ++it) { count++; }
     
    653748        delete test10_08;
    654749
    655         count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it != 0; ++it) { count++; }
     750        count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it; ++it) { count++; }
    656751        std::cout << "Anzahl BaseObjects: " << count << "\n";
    657         count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it != 0; ++it) { count++; }
     752        count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it; ++it) { count++; }
    658753        std::cout << "Anzahl A1: " << count << "\n";
    659754        count = 0; for (Iterator<A1B1> it = ObjectList<A1B1>::start(); it; ++it) { count++; }
     
    675770        delete test10_09;
    676771
    677         count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::end(); it != 0; --it) { count++; }
     772        count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::end(); it; --it) { count++; }
    678773        std::cout << "Anzahl BaseObjects: " << count << "\n";
    679         count = 0; for (Iterator<A1> it = ObjectList<A1>::end(); it != 0; --it) { count++; }
     774        count = 0; for (Iterator<A1> it = ObjectList<A1>::end(); it; --it) { count++; }
    680775        std::cout << "Anzahl A1: " << count << "\n";
    681776        count = 0; for (Iterator<A1B1> it = ObjectList<A1B1>::end(); it; --it) { count++; }
     
    697792        delete test10_10;
    698793
    699         count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it != 0; ++it) { count++; }
     794        count = 0; for (Iterator<BaseObject> it = ObjectList<BaseObject>::start(); it; ++it) { count++; }
    700795        std::cout << "Anzahl BaseObjects: " << count << "\n";
    701         count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it != 0; ++it) { count++; }
     796        count = 0; for (Iterator<A1> it = ObjectList<A1>::start(); it; ++it) { count++; }
    702797        std::cout << "Anzahl A1: " << count << "\n";
    703798        count = 0; for (Iterator<A1B1> it = ObjectList<A1B1>::start(); it; ++it) { count++; }
     
    721816        std::cout << "Test 11\n";
    722817        std::cout << "1\n";
    723         count = 0; for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it) { count++; }
    724         std::cout << "AnzahlTickable: " << count << "\n";
     818        int count2 = 0; for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it) { count2++; }
     819        std::cout << "AnzahlTickable: " << count2 << "\n";
    725820
    726821        Test1* test11_1;
     
    728823            test11_1 = new Test1;
    729824
    730         count = 0; for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it) { count++; }
    731         std::cout << "AnzahlTickable: " << count << "\n";
     825        count2 = 0; for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it) { count2++; }
     826        std::cout << "AnzahlTickable: " << count2 << "\n";
    732827
    733828        for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it)
     
    736831        std::cout << "2\n";
    737832        Test2* test11_2 = new Test2;
    738 */
    739 /*
     833
     834
    740835        std::cout << "3\n";
    741836        Test3* test11_3 = new Test3;
     
    834929        std::cout << "Mask 2:\n";
    835930        TestClassTreeMask(test13_2);
    836 /*
     931
     932        std::cout << "2\n";
     933
    837934        ClassTreeMask test13_3;
    838         test13_3.include(Class(A1));
    839         test13_3.exclude(Class(A1B2));
    840         test13_3.exclude(Class(A1B1C2));
    841         test13_3.include(Class(A2));
    842         test13_3.exclude(Class(A2B2));
    843         test13_3.include(Class(A3B1));
    844         test13_3.include(Class(A3B2));
    845         test13_3.exclude(Class(A3B2C2));
     935        test13_3.include(Class(A1), true, false);
     936        test13_3.exclude(Class(A1B2), true, false);
     937        test13_3.exclude(Class(A1B1C2), true, false);
     938        test13_3.include(Class(A2), true, false);
     939        test13_3.exclude(Class(A2B2), true, false);
     940        test13_3.include(Class(A3B1), true, false);
     941        test13_3.include(Class(A3B2), true, false);
     942        test13_3.exclude(Class(A3B2C2), true, false);
    846943        std::cout << std::endl;
    847944        std::cout << "Mask 2 without excluded BaseObject:\n";
    848945        TestClassTreeMask(test13_3);
    849         test13_3.exclude(Class(BaseObject));
    850         std::cout << std::endl;
    851         std::cout << "Mask 2 with BaseObject excluded afterwards:\n";
     946        test13_3.exclude(Class(BaseObject), false, false);
     947        std::cout << std::endl;
     948        std::cout << "Mask 2 with BaseObject excluded afterwards without overwrite:\n";
    852949        TestClassTreeMask(test13_3);
    853 
    854         ClassTreeMask test13_3_2;
    855         test13_3_2.include(Class(A1));
    856         test13_3_2.exclude(Class(A1B2));
    857         test13_3_2.exclude(Class(A1B1C2));
    858         test13_3_2.include(Class(A2));
    859         test13_3_2.exclude(Class(A2B2));
    860         test13_3_2.include(Class(A3B1));
    861         test13_3_2.include(Class(A3B2));
    862         test13_3_2.exclude(Class(A3B2C2));
    863         test13_3_2.clean();
    864         test13_3_2.exclude(Class(BaseObject));
    865         std::cout << std::endl;
    866         std::cout << "Mask 2 with BaseObject excluded afterwards, but cleaned before:\n";
    867         TestClassTreeMask(test13_3_2);
    868         test13_3_2.include(Class(BaseObject));
    869         std::cout << std::endl;
    870         std::cout << "Mask 2 from before, but BaseObject re-included without cleaning:\n";
    871         TestClassTreeMask(test13_3_2);
     950        test13_3.exclude(Class(BaseObject), true);
     951        std::cout << std::endl;
     952        std::cout << "Mask 2 with BaseObject excluded afterwards with overwrite:\n";
     953        TestClassTreeMask(test13_3);
    872954
    873955        ClassTreeMask test13_4;
     
    882964        test13_4.include(Class(A1));
    883965        std::cout << std::endl;
    884         std::cout << "Mask 2 created in random order:\n";
     966        std::cout << "Mask 2 created in random order with overwrite and clean:\n";
    885967        TestClassTreeMask(test13_4);
    886968
    887         std::cout << "2\n";
    888 
    889         ClassTreeMask test13_5 = test13_1;
    890         std::cout << std::endl;
    891         std::cout << "Mask 1 assigned to a new ClassTestMask:\n";
    892         TestClassTreeMask(test13_5);
     969        ClassTreeMask test13_4_2;
     970        test13_4_2.include(Class(A3B2), false, false);
     971        test13_4_2.exclude(Class(A1B1C2), false, false);
     972        test13_4_2.include(Class(A3B1), false, false);
     973        test13_4_2.exclude(Class(A3B2C2), false, false);
     974        test13_4_2.exclude(Class(BaseObject), false, false);
     975        test13_4_2.include(Class(A2), false, false);
     976        test13_4_2.exclude(Class(A1B2), false, false);
     977        test13_4_2.exclude(Class(A2B2), false, false);
     978        test13_4_2.include(Class(A1), false, false);
     979        std::cout << std::endl;
     980        std::cout << "Mask 2 created in random order without overwrite and without clean:\n";
     981        TestClassTreeMask(test13_4_2);
    893982
    894983        std::cout << "3\n";
     
    9291018        std::cout << "8\n";
    9301019
    931         std::cout << std::endl;
    932         ClassTreeMask test13_11(test13_1);
    933         std::cout << std::endl;
    934         std::cout << "Mask 1 assigned with copyconstructor + original mask 1:\n";
    935         TestClassTreeMask(test13_11);
    936         TestClassTreeMask(test13_1);
    937 
    938         ClassTreeMask test13_12(!test13_11);
     1020        ClassTreeMask test13_12(!test13_1);
    9391021        std::cout << std::endl;
    9401022        std::cout << "Mask 1 inverted assigned with copyconstructor + the original from before:\n";
    9411023        TestClassTreeMask(test13_12);
    942         TestClassTreeMask(test13_11);
    943 
    944         ClassTreeMask test13_13;
    945         test13_13 = test13_2;
    946         std::cout << std::endl;
    947         std::cout << "Mask 2 assigned with = operator + original mask 2:\n";
     1024        TestClassTreeMask(test13_1);
     1025
     1026
     1027        ClassTreeMask test13_13 = test13_1 + test13_2;
     1028        std::cout << std::endl;
     1029        std::cout << "Mask 1 + Mask 2 assigned with copyconstructor + originals from before:\n";
    9481030        TestClassTreeMask(test13_13);
     1031        TestClassTreeMask(test13_1);
    9491032        TestClassTreeMask(test13_2);
    9501033
    951         ClassTreeMask test13_14 = test13_11 + test13_13;
    952         std::cout << std::endl;
    953         std::cout << "Mask 1 + Mask 2 assigned with copyconstructor + originals from before:\n";
     1034        ClassTreeMask test13_14 = test13_1;
     1035        test13_14 += test13_2;
     1036        std::cout << std::endl;
     1037        std::cout << "Mask 1 + Mask 2 with += operator + original of mask 2 from before:\n";
    9541038        TestClassTreeMask(test13_14);
    955         TestClassTreeMask(test13_11);
    956         TestClassTreeMask(test13_13);
    957 
    958         test13_11 += test13_13;
    959         std::cout << std::endl;
    960         std::cout << "Mask 1 + Mask 2 with += operator + original of mask 2 from before:\n";
    961         TestClassTreeMask(test13_11);
    962         TestClassTreeMask(test13_13);
     1039        TestClassTreeMask(test13_2);
    9631040
    9641041        test13_1 = test13_1;
     
    9681045
    9691046        std::cout << "9\n";
    970 */
    971 
     1047
     1048        ClassTreeMask test13_15;
     1049        test13_15.exclude(Class(Interface1));
     1050        std::cout << std::endl;
     1051        std::cout << "Mask with excluded Interface 1:\n";
     1052        TestClassTreeMask(test13_15);
     1053
     1054        ClassTreeMask test13_16 = test13_1;
     1055        test13_16.exclude(Class(Interface1));
     1056        std::cout << std::endl;
     1057        std::cout << "Mask 1 with excluded Interface 1 (overwrite):\n";
     1058        TestClassTreeMask(test13_16);
     1059
     1060        ClassTreeMask test13_17 = test13_1;
     1061        test13_17.exclude(Class(Interface1), false);
     1062        std::cout << std::endl;
     1063        std::cout << "Mask 1 with excluded Interface 1 (without overwrite):\n";
     1064        TestClassTreeMask(test13_17);
     1065
     1066        ClassTreeMask test13_18 = test13_2;
     1067        test13_18.exclude(Class(Interface1), false);
     1068        std::cout << std::endl;
     1069        std::cout << "Mask 2 with excluded Interface 1 (without overwrite):\n";
     1070        TestClassTreeMask(test13_18);
     1071
     1072        std::cout << "10\n";
     1073
     1074        ClassTreeMask test13_19;
     1075        test13_19.exclude(Class(Test1));
     1076        std::cout << std::endl;
     1077        std::cout << "Mask with excluded Test1:\n";
     1078        TestClassTreeMask(test13_19);
     1079
     1080        std::cout << "11\n";
     1081
     1082        ClassTreeMask test13_20;
     1083        test13_20.exclude(Class(DebugLevel));
     1084        std::cout << std::endl;
     1085        std::cout << "Mask with excluded DebugLevel:\n";
     1086        TestClassTreeMask(test13_20);
     1087
     1088        std::cout << "12\n";
     1089
     1090/*
    9721091        std::cout << "Test 14\n";
    9731092        std::cout << "1\n";
     
    9911110        std::cout << test14_5.getIdentifier()->getName() << std::endl;
    9921111
     1112        std::cout << "2\n";
     1113*/
    9931114//    startRenderLoop();
    9941115  }
Note: See TracChangeset for help on using the changeset viewer.