Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / lib / tt / lib / util / tt_object.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /*%%  (c) Copyright 1993, 1994 Hewlett-Packard Company                   */
24 /*%%  (c) Copyright 1993, 1994 International Business Machines Corp.     */
25 /*%%  (c) Copyright 1993, 1994 Sun Microsystems, Inc.                    */
26 /*%%  (c) Copyright 1993, 1994 Novell, Inc.                              */
27 /*%%  $XConsortium: tt_object.h /main/3 1995/10/23 10:42:31 rswiston $                                                   */
28 /* @(#)tt_object.h      1.19 93/07/30
29  *
30  * tt_object.h
31  *
32  * Copyright (c) 1990, 1992 by Sun Microsystems, Inc.
33  */
34 #ifndef _TT_OBJECT_H
35 #define _TT_OBJECT_H
36 #include "util/tt_ptr.h"
37 #if defined(ultrix)
38 #include <rpc/types.h>
39 #endif
40
41 declare_ptr_to(_Tt_object)
42
43 class _Tt_ostream;
44
45 //
46 // _Tt_object should instead be a public virtual _Tt_allocated,
47 // but C++ is not smart enough to realize that sizeof _Tt_allocated is
48 // zero, and so _Tt_objects do not need a pointer to them.
49 //
50 class _Tt_object: public _Tt_allocated {
51         friend class _Tt_new_ptr;
52       public:
53         _Tt_object() { _refcount_ = 0;};
54         virtual ~_Tt_object();
55         static _Tt_object_ptr &null_ptr();
56         bool_t         xdr(XDR *xdrs);
57         int             verify_refcount(int maxref);
58       private:
59         int     _refcount_;
60 };
61 typedef void (*_Tt_object_printfn)(const _Tt_ostream &os,
62                                    const _Tt_object *obj);
63
64 #endif                          /* _TT_OBJECT_H */