Bilder.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include "Bilder.h"
  2. // Inhalt der Bilder Klasse aus Bilder.h
  3. // Konstruktor
  4. Bilder::Bilder()
  5. {
  6. next = 0;
  7. name = new Text( "" );
  8. bild = 0;
  9. }
  10. // Destruktor
  11. Bilder::~Bilder()
  12. {
  13. if( bild )
  14. bild->release();
  15. name->release();
  16. delete (Bilder*)next;
  17. }
  18. // nicht constant
  19. bool Bilder::add( const char *name, Bild *bild )
  20. {
  21. if( this->name->istGleich( name ) )
  22. {
  23. bild->release();
  24. return 0;
  25. }
  26. if( !this->bild )
  27. {
  28. this->name->setText( name );
  29. this->bild = bild;
  30. return 1;
  31. }
  32. if( !next )
  33. next = new Bilder();
  34. return next->add( name, bild );
  35. }
  36. bool Bilder::set( const char *name, Bild *bild )
  37. {
  38. if( this->name->istGleich( name ) )
  39. {
  40. this->bild->release();
  41. this->bild = bild;
  42. return 1;
  43. }
  44. if( !next )
  45. {
  46. bild->release();
  47. return 0;
  48. }
  49. return next->set( name, bild );
  50. }
  51. bool Bilder::remove( const char *name )
  52. {
  53. if( this->name->istGleich( name ) )
  54. {
  55. this->bild->release();
  56. this->bild = next->zThis();
  57. this->name->setText( ((Bilder*)next)->name );
  58. BilderV *tmp = next->zNext();
  59. next->setNext( 0 );
  60. next->release();
  61. next = tmp;
  62. return 1;
  63. }
  64. if( !next )
  65. return 0;
  66. return next->remove( name );
  67. }
  68. void Bilder::setNext( BilderV *next )
  69. {
  70. this->next = next;
  71. }
  72. void Bilder::deleteAll()
  73. {
  74. bild = bild->release();
  75. name->setText( "" );
  76. next->release();
  77. next = 0;
  78. }
  79. void Bilder::release()
  80. {
  81. delete this;
  82. }
  83. // constant
  84. Bild *Bilder::get( const char *name ) const
  85. {
  86. if( this->name->istGleich( name ) )
  87. return bild ? bild->getThis() : 0;
  88. if( !next )
  89. return 0;
  90. return next->get( name );
  91. }
  92. Bild *Bilder::z( const char *name ) const
  93. {
  94. if( this->name->istGleich( name ) )
  95. return bild;
  96. if( !next )
  97. return 0;
  98. return next->get( name );
  99. }
  100. Bild *Bilder::zThis() const
  101. {
  102. return bild;
  103. }
  104. BilderV *Bilder::zNext() const
  105. {
  106. return next;
  107. }
  108. char *Bilder::getName() const
  109. {
  110. return name->getText();
  111. }