dtinfo subtree dtinfo
[oweals/cde.git] / cde / programs / dtinfo / dtinfo / src / Basic / Long_Lived.hh
1 /*
2  * $XConsortium: Long_Lived.hh /main/3 1996/06/11 16:20:20 cde-hal $
3  *
4  * Copyright (c) 1993 HAL Computer Systems International, Ltd.
5  * All rights reserved.  Unpublished -- rights reserved under
6  * the Copyright Laws of the United States.  USE OF A COPYRIGHT
7  * NOTICE IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
8  * OR DISCLOSURE.
9  * 
10  * THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE
11  * SECRETS OF HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.  USE,
12  * DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT THE
13  * PRIOR EXPRESS WRITTEN PERMISSION OF HAL COMPUTER SYSTEMS
14  * INTERNATIONAL, LTD.
15  * 
16  *                         RESTRICTED RIGHTS LEGEND
17  * Use, duplication, or disclosure by the Government is subject
18  * to the restrictions as set forth in subparagraph (c)(l)(ii)
19  * of the Rights in Technical Data and Computer Software clause
20  * at DFARS 252.227-7013.
21  *
22  *          HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.
23  *                  1315 Dell Avenue
24  *                  Campbell, CA  95008
25  * 
26  */
27
28
29 class Long_Lived : public FolioObject
30 {
31 protected:
32   Long_Lived();
33   virtual ~Long_Lived();
34
35 private:
36   static List g_long_lived_list;
37 };
38
39
40 // Macros to easily create access functions.
41
42 #define LONG_LIVED_HH(CLASS,FUNC)   friend CLASS &FUNC(); \
43                                     static CLASS * CONCAT(g_,FUNC)
44
45 #define LONG_LIVED_HH2(CLASS,FUNC)  CLASS &FUNC();
46
47 #define LONG_LIVED_CC(CLASS,FUNC)   CLASS * CLASS::CONCAT(g_,FUNC);         \
48                                     CLASS &FUNC() {                         \
49                                       if (CLASS::CONCAT(g_,FUNC) == NULL)   \
50                                       CLASS::CONCAT(g_,FUNC) = new CLASS(); \
51                                       return (*CLASS::CONCAT(g_,FUNC));     \
52                                     }