xref: /trunk/main/autodoc/inc/ary/cpp/c_vfflag.hxx (revision 1c78a5d6)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef ARY_CPP_C_VFFLAG_HXX
25 #define ARY_CPP_C_VFFLAG_HXX
26 
27 // USED SERVICES
28 
29 
30 namespace ary
31 {
32 namespace cpp
33 {
34 
35 
36 /** Properties of C++ variables.
37 */
38 struct VariableFlags
39 {
40   public:
41 	enum E_Flags
42 	{
43 		f_static_local 		= 0x0001,
44 		f_static_member 	= 0x0002,
45 		f_extern 			= 0x0004,
46 		f_mutable			= 0x0008
47 	};
48 
VariableFlagsary::cpp::VariableFlags49                         VariableFlags(
50                             UINT16              i_nFlags = 0 )
51                                                 :   nFlags(i_nFlags) {}
52 
Resetary::cpp::VariableFlags53     void                Reset()                 { nFlags = 0; }
54 
SetStaticLocalary::cpp::VariableFlags55 	void 				SetStaticLocal()		{ nFlags |= f_static_local; }
SetStaticMemberary::cpp::VariableFlags56 	void 				SetStaticMember()		{ nFlags |= f_static_member; }
SetExternary::cpp::VariableFlags57 	void 				SetExtern() 	  		{ nFlags |= f_extern; }
SetMutableary::cpp::VariableFlags58 	void 				SetMutable() 			{ nFlags |= f_mutable; }
59 
IsStaticLocalary::cpp::VariableFlags60 	bool 				IsStaticLocal()	const	{ return (nFlags & f_static_local) != 0; }
IsStaticMemberary::cpp::VariableFlags61 	bool 				IsStaticMember() const	{ return (nFlags & f_static_member) != 0; }
IsExternary::cpp::VariableFlags62 	bool 				IsExtern() const  		{ return (nFlags & f_extern) != 0; }
IsMutableary::cpp::VariableFlags63 	bool 				IsMutable() const		{ return (nFlags & f_mutable) != 0; }
64 
65   private:
66     UINT16              nFlags;
67 };
68 
69 
70 /** Properties of C++ functions.
71 */
72 struct FunctionFlags
73 {
74   public:
75 	enum E_Flags
76 	{
77 		f_static_local 		= 0x0001,
78 		f_static_member 	= 0x0002,
79 		f_extern 			= 0x0004,
80 		f_externC 			= 0x0008,
81 		f_mutable			= 0x0010,
82 		f_inline 	        = 0x0100,
83 		f_register		 	= 0x0200,
84 		f_explicit			= 0x0400
85 	};
86 
FunctionFlagsary::cpp::FunctionFlags87                         FunctionFlags(
88                             UINT16              i_nFlags = 0 )
89                                                 :   nFlags(i_nFlags) {}
90 
operator ==ary::cpp::FunctionFlags91     bool                operator==(
92                             const FunctionFlags &
93                                                 i_ff ) const
94                                                 { return nFlags == i_ff.nFlags; }
operator !=ary::cpp::FunctionFlags95     bool                operator!=(
96                             const FunctionFlags &
97                                                 i_ff ) const
98                                                 { return NOT operator==(i_ff); }
99 
Resetary::cpp::FunctionFlags100     void                Reset()                 { nFlags = 0; }
101 
SetStaticLocalary::cpp::FunctionFlags102 	void 				SetStaticLocal()		{ nFlags |= f_static_local; }
SetStaticMemberary::cpp::FunctionFlags103 	void 				SetStaticMember()		{ nFlags |= f_static_member; }
SetExternary::cpp::FunctionFlags104 	void 				SetExtern() 	  		{ nFlags |= f_extern; }
SetExternCary::cpp::FunctionFlags105 	void 				SetExternC() 	  		{ nFlags |= f_externC; }
SetMutableary::cpp::FunctionFlags106 	void 				SetMutable() 			{ nFlags |= f_mutable; }
SetInlineary::cpp::FunctionFlags107 	void 				SetInline() 	  	    { nFlags |= f_inline; }
SetRegisterary::cpp::FunctionFlags108 	void 				SetRegister() 			{ nFlags |= f_register; }
SetExplicitary::cpp::FunctionFlags109 	void 				SetExplicit() 		    { nFlags |= f_explicit; }
110 
IsStaticLocalary::cpp::FunctionFlags111 	bool 				IsStaticLocal()	const	{ return (nFlags & f_static_local) != 0; }
IsStaticMemberary::cpp::FunctionFlags112 	bool 				IsStaticMember() const	{ return (nFlags & f_static_member) != 0; }
IsExternary::cpp::FunctionFlags113 	bool 				IsExtern() const  		{ return (nFlags & f_extern) != 0; }
IsExternCary::cpp::FunctionFlags114 	bool 				IsExternC() const  		{ return (nFlags & f_externC) != 0; }
IsMutableary::cpp::FunctionFlags115 	bool 				IsMutable() const		{ return (nFlags & f_mutable) != 0; }
IsInlineary::cpp::FunctionFlags116 	bool 				IsInline() const  	    { return (nFlags & f_inline) != 0; }
IsRegisterary::cpp::FunctionFlags117 	bool 				IsRegister() const		{ return (nFlags & f_register) != 0; }
IsExplicitary::cpp::FunctionFlags118 	bool                IsExplicit() const      { return (nFlags & f_explicit) != 0; }
119 
120   private:
121     UINT16              nFlags;
122 };
123 
124 
125 /** A C++ function parameter.
126 */
127 struct S_Parameter
128 {
129     String              sName;
130     String              sSizeExpression;
131     String              sInitExpression;
132     Type_id             nType;
133 
S_Parameterary::cpp::S_Parameter134                         S_Parameter()           : nType(0) {}
~S_Parameterary::cpp::S_Parameter135                         ~S_Parameter()          {}
Emptyary::cpp::S_Parameter136     void                Empty()                 { nType = Type_id(0);
137                                                   sName.clear();
138                                                   sSizeExpression.clear();
139                                                   sInitExpression.clear(); }
140 };
141 
142 
143 
144 
145 }   // namespace cpp
146 }   // namespace ary
147 #endif
148