xref: /aoo41x/main/autodoc/inc/ary/idl/i_struct.hxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef ARY_IDL_I_STRUCT_HXX
29 #define ARY_IDL_I_STRUCT_HXX
30 
31 // BASE CLASSES
32 #include <ary/idl/i_ce.hxx>
33 
34 
35 
36 
37 namespace ary
38 {
39 namespace idl
40 {
41 namespace ifc_struct
42 {
43     struct attr;
44 }
45 
46 
47 /** Represents an IDL struct.
48 */
49 class Struct : public CodeEntity
50 {
51   public:
52     enum E_ClassId { class_id = 2008 };
53 
54     // LIFECYCLE
55                         Struct(
56                             const String &      i_sName,
57                             Ce_id               i_nOwner,
58                             Type_id             i_nBase,
59                             const String &      i_sTemplateParameter,
60                             Type_id             i_nTemplateParameterType );
61                         ~Struct();
62     // INQUIRY
63     Type_id             Base() const;
64     String              TemplateParameter() const;
65     Type_id             TemplateParameterType() const;
66 
67     // ACCESS
68     void                Add_Member(
69                             Ce_id               i_nMember );
70   private:
71     // Interface csv::ConstProcessorClient:
72     virtual void        do_Accept(
73                             csv::ProcessorIfc & io_processor ) const;
74     // Interface ary::Object:
75     virtual ClassId     get_AryClass() const;
76 
77     // Interface CodeEntity
78     virtual const String &  inq_LocalName() const;
79     virtual Ce_id           inq_NameRoom() const;
80     virtual Ce_id           inq_Owner() const;
81     virtual E_SightLevel    inq_SightLevel() const;
82 
83     // Locals
84     typedef std::vector<Ce_id>     ElementList;
85     friend struct ifc_struct::attr;
86 
87     // DATA
88     String              sName;
89     Ce_id               nOwner;
90 
91     Type_id             nBase;
92     String              sTemplateParameter;
93     Type_id             nTemplateParameterType;
94     ElementList         aElements;
95 };
96 
97 
98 
99 
100 // IMPLEMENTATION
101 inline Type_id
102 Struct::Base() const
103 {
104     return nBase;
105 }
106 
107 inline String
108 Struct::TemplateParameter() const
109 {
110     return sTemplateParameter;
111 }
112 
113 inline Type_id
114 Struct::TemplateParameterType() const
115 {
116     return nTemplateParameterType;
117 }
118 
119 inline void
120 Struct::Add_Member( Ce_id i_nMember )
121 {
122     aElements.push_back(i_nMember);
123 }
124 
125 
126 
127 
128 }   // namespace idl
129 }   // namespace ary
130 #endif
131