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_BUILTINTYPE_HXX
25 #define ARY_CPP_C_BUILTINTYPE_HXX
26
27
28
29 // USED SERVICES
30 // BASE CLASSES
31 #include <ary/cpp/c_type.hxx>
32 // COMPONENTS
33 // PARAMETERS
34
35
36 namespace ary
37 {
38 namespace cpp
39 {
40
41
42 /** Represents types like void, int, double.
43 */
44 class BuiltInType : public Type
45 {
46 public:
47 enum E_ClassId { class_id = 1200 };
48
49 BuiltInType(
50 const String & i_sName,
51 E_TypeSpecialisation
52 i_Specialisation );
53
54 String SpecializedName() const;
55
56 static String SpecializedName_(
57 const char * i_sName,
58 E_TypeSpecialisation
59 i_eTypeSpecialisation );
60 private:
61 // Interface csv::ConstProcessorClient
62 virtual void do_Accept(
63 csv::ProcessorIfc & io_processor ) const;
64 // Interface Object:
65 virtual ClassId get_AryClass() const;
66
67 // Interface Type:
68 virtual bool inq_IsConst() const;
69 virtual void inq_Get_Text(
70 StreamStr & o_rPreName,
71 StreamStr & o_rName,
72 StreamStr & o_rPostName,
73 const Gate & i_rGate ) const;
74 // DATA
75 String sName;
76 E_TypeSpecialisation
77 eSpecialisation;
78 };
79
80
81
82 inline String
SpecializedName() const83 BuiltInType::SpecializedName() const
84 {
85 return SpecializedName_(sName, eSpecialisation);
86 }
87
88
89
90
91 } // namespace cpp
92 } // namespace ary
93 #endif
94