OpenIndiana and Solaris port
[oweals/cde.git] / cde / programs / dtinfo / dtinfo / src / Basic / TOC_Element.C
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 /*
24  * $XConsortium: TOC_Element.C /main/7 1996/09/04 14:29:22 rcs $
25  *
26  * Copyright (c) 1993 HAL Computer Systems International, Ltd.
27  * All rights reserved.  Unpublished -- rights reserved under
28  * the Copyright Laws of the United States.  USE OF A COPYRIGHT
29  * NOTICE IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
30  * OR DISCLOSURE.
31  * 
32  * THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE
33  * SECRETS OF HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.  USE,
34  * DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT THE
35  * PRIOR EXPRESS WRITTEN PERMISSION OF HAL COMPUTER SYSTEMS
36  * INTERNATIONAL, LTD.
37  * 
38  *                         RESTRICTED RIGHTS LEGEND
39  * Use, duplication, or disclosure by the Government is subject
40  * to the restrictions as set forth in subparagraph (c)(l)(ii)
41  * of the Rights in Technical Data and Computer Software clause
42  * at DFARS 252.227-7013.
43  *
44  *          HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.
45  *                  1315 Dell Avenue
46  *                  Campbell, CA  95008
47  * 
48  */
49
50 #define C_TOC_Element
51 #define C_OutlineList
52 #define L_Basic
53
54 #include "Prelude.h"
55
56 #include <iostream>
57 using namespace std;
58
59 INIT_CLASS (TOC_Element);
60
61 TOC_Element::TOC_Element (const UAS_Pointer<UAS_Common> &toc)
62 : f_toc (toc) 
63 {
64      UAS_Pointer<UAS_Common> *temp_common = (UAS_Pointer<UAS_Common> *)&toc;
65      fDisplayAs = (*temp_common)->title();
66 }
67
68
69 const char *
70 TOC_Element::display_as()
71 {
72   return (char *) fDisplayAs;
73 }
74
75
76 OutlineList *
77 TOC_Element::children()
78 {
79   // If the children list hasn't been created yet, create it now. 
80   if (f_children == NULL)
81     {
82       UAS_List<UAS_Common> kids = f_toc->children();
83       unsigned int num_children = kids.length();
84       if (num_children > 0)
85         {
86           // Allocate an OutlineList for the kids and fill it in. 
87           f_children = new OutlineList (num_children);
88           unsigned int i;
89           for (i = 0; i < num_children; i++)
90             f_children->append (new TOC_Element (kids[i]));
91         }
92     }
93   children_valid (TRUE);
94   return (f_children);
95 }
96
97
98 void
99 TOC_Element::set_children (OutlineList *)
100 {
101   // Attempting to set the children is a programming error. 
102   abort();
103 }
104
105
106 void
107 TOC_Element::display()
108 {
109 #ifdef SUBTREE_SIZE_DEBUG
110   cerr << "subtree size = " << f_toc->subtree_size() << endl;
111 #endif
112     f_toc->retrieve((void *)0);
113 }
114
115
116 void
117 TOC_Element::xprint()
118 {
119     f_toc->retrieve((void *)1);
120 }
121
122
123 bool
124 TOC_Element::has_children_internal()
125 {
126   UAS_List<UAS_Common> kids = f_toc->children();
127   return (kids.length() > 0);
128 }