Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

uargs.hpp

00001 /* ==================================================== ======== ======= *
00002  *
00003  *  uargs.hh : class for creating argument lists (additive notation).
00004  *  Ubit Project  [Elc][2003]
00005  *  Author: Eric Lecolinet
00006  *
00007  *  Part of the Ubit Toolkit: A Brick Construction Game Model for Creating GUIs
00008  *
00009  *  (C) 1999-2003 Eric Lecolinet @ ENST Paris
00010  *  WWW: http://www.enst.fr/~elc/ubit   Email: elc@enst.fr (subject: ubit)
00011  *
00012  * ***********************************************************************
00013  * COPYRIGHT NOTICE : 
00014  * THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY AND WITHOUT EVEN THE 
00015  * IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
00016  * YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT UNDER THE TERMS OF THE GNU 
00017  * GENERAL PUBLIC LICENSE AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 
00018  * EITHER VERSION 2 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
00019  * SEE FILES 'COPYRIGHT' AND 'COPYING' FOR MORE DETAILS.
00020  * ***********************************************************************
00021  *
00022  * ==================================================== [Elc:03] ======= *
00023  * ==================================================== ======== ======= */
00024 
00025 #ifndef _uargs_hh
00026 #define _uargs_hh
00027 //pragma ident  "@(#)uargs.hh   ubit:03.04.00"
00028 
00029 
00030 class UArgsImpl;
00031 
00044 class UArgs {
00045   friend class UGroup;
00046   friend class UBox;
00047   friend class UArgsImpl;
00048 
00049   UArgs& operator=(const UArgs&);  // assigment is forbidden
00050   class UArgsChain* children;
00051 
00052 public:
00053   static const UArgs none;
00054 
00055   UArgs();
00056   ~UArgs();
00057   UArgs(const UArgs&);
00058   UArgs(const UArgsImpl&);
00059   UArgs(const char*);
00060   UArgs(class UBrick*);
00061   UArgs(class UBrick&);
00062   UArgs(class ULink&);
00063   UArgs(class ULink*);
00064 
00065   UArgs& operator+=(const UArgs&);
00066 
00067   friend const UArgsImpl& operator+(const UArgsImpl&, const char*);
00068   friend const UArgsImpl& operator+(const UArgsImpl&, class UBrick*);
00069   friend const UArgsImpl& operator+(const UArgsImpl&, class UBrick&);
00070   friend const UArgsImpl& operator+(const UArgsImpl&, class ULink&);
00071   friend const UArgsImpl& operator+(const UArgsImpl&, class ULink*);
00072   friend const UArgsImpl& operator+(const UArgsImpl&, const UArgs&);
00073 };
00074 
00075 /* ==================================================== ======== ======= */
00076 
00079 class UArgsImpl {
00080   friend class UGroup;
00081   friend class UBox;
00082   friend class UArgs;
00083 
00084   UArgsImpl& operator=(const UArgsImpl&);  // assigment is forbidden
00085   class UArgsChain* children;
00086 
00087 public:
00088   UArgsImpl();
00089   ~UArgsImpl();
00090   UArgsImpl(const UArgsImpl&);
00091   UArgsImpl(const UArgs&);
00092   UArgsImpl(const char*);
00093   UArgsImpl(class UBrick*);
00094   UArgsImpl(class UBrick&);
00095   UArgsImpl(class ULink&);
00096   UArgsImpl(class ULink*);
00097 
00098   friend const UArgsImpl& operator+(const UArgsImpl&, const char*);
00099   friend const UArgsImpl& operator+(const UArgsImpl&, class UBrick*);
00100   friend const UArgsImpl& operator+(const UArgsImpl&, class UBrick&);
00101   friend const UArgsImpl& operator+(const UArgsImpl&, class ULink&);
00102   friend const UArgsImpl& operator+(const UArgsImpl&, class ULink*);
00103   friend const UArgsImpl& operator+(const UArgsImpl&, const UArgs&);
00104 };
00105 
00106 #endif
00107 /* ==================================================== [TheEnd] ======= */
00108 /* ==================================================== [Elc:02] ======= */

Generated on Thu Mar 3 06:36:49 2005 for Ubit[Eric.Lecolinet@enst.fr] by  doxygen 1.4.1