ubit
uparent.hpp
1 /* ==================================================== ======== ======= *
2  *
3  * uparent.hpp [internal implementation]
4  * Ubit GUI Toolkit - Version 6
5  * (C) 2009 | Eric Lecolinet | TELECOM ParisTech | http://www.enst.fr/~elc/ubit
6  *
7  * ***********************************************************************
8  * COPYRIGHT NOTICE :
9  * THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY AND WITHOUT EVEN THE
10  * IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
11  * YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT UNDER THE TERMS OF THE GNU
12  * GENERAL PUBLIC LICENSE AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION;
13  * EITHER VERSION 2 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
14  * SEE FILES 'COPYRIGHT' AND 'COPYING' FOR MORE DETAILS.
15  * ***********************************************************************/
16 
17 #ifndef _uparent_hpp_
18 #define _uparent_hpp_ 1
19 namespace ubit {
20 
23 class UParent {
24 public:
25  UParent(UChildIter i) : child_iter(i) {}
26 
27  UElem* operator*() {return child_iter->parent;}
28  const UElem* operator*() const {return child_iter->parent;}
29 
30  UChild& getChild() {return child_iter.child();}
31 
32 private:
33  UChildIter child_iter;
34 };
35 
36 /* ==================================================== ======== ======= */
37 
38 template <class _I>
39 struct _UParentIter : public _I {
40  _UParentIter() : _I(null) {} // !ATT: peut poser probleme si pas g++ !
41  _UParentIter(const _I& i) : _I(i) {}
42  _UParentIter(const _UParentIter& i) : _I(i) {}
43 
44  UElem* operator*() {return static_cast<UElem*>(*_I::operator*());}
45  UParent& parent() {return _I::operator*();}
46 };
47 
52 
53 /* ==================================================== ===== ======= */
57 class UParents : public std::list<UParent> {
58 public:
59  void removeFirst(UChild*);
61 
62  void updateAutoParents(const UUpdate&);
64 
65  void fireParents(const UCond& c, UNode* n);
67 
68  void setParentsViewsModes(int vmodes, bool on_off);
70 };
71 
72 }
73 #endif
Parent list.
Definition: uparent.hpp:57
Definition: uparent.hpp:39
Base class of objects that can be added to the UBIT scene graph (SEE DETAILS!).
Definition: unode.hpp:38
Base class for Ubit conditions.
Definition: ucond.hpp:29
specifies how to update UElem, UBox, UWin objects and subclasses.
Definition: uupdate.hpp:25
lightweight general purpose container.
Definition: uelem.hpp:44
[impl] Internal implementation of a parent node.
Definition: uparent.hpp:23
Definition: uhardfont.hpp:31
[impl] Internal implementation of a child node.
Definition: uchild.hpp:23