2 * $XConsortium: Long_Lived.hh /main/3 1996/06/11 16:20:20 cde-hal $
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
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
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.
22 * HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.
29 class Long_Lived : public FolioObject
33 virtual ~Long_Lived();
36 static List g_long_lived_list;
40 // Macros to easily create access functions.
42 #define LONG_LIVED_HH(CLASS,FUNC) friend CLASS &FUNC(); \
43 static CLASS * CONCAT(g_,FUNC)
45 #define LONG_LIVED_HH2(CLASS,FUNC) CLASS &FUNC();
47 #define LONG_LIVED_CC(CLASS,FUNC) CLASS * CLASS::CONCAT(g_,FUNC); \
49 if (CLASS::CONCAT(g_,FUNC) == NULL) \
50 CLASS::CONCAT(g_,FUNC) = new CLASS(); \
51 return (*CLASS::CONCAT(g_,FUNC)); \