xref: /AOO42X/main/autodoc/source/ary/cpp/c_builtintype.cxx (revision b1c5455db1639c48e26c568e4fa7ee78ca5d60ee)
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 #include <precomp.h>
23 #include <ary/cpp/c_builtintype.hxx>
24 
25 
26 // NOT FULLY DEFINED SERVICES
27 #include <ary/cpp/c_type.hxx>
28 
29 
30 namespace ary
31 {
32 namespace cpp
33 {
34 
35 
36 
37 
38 //**********************        Type        **************************//
39 Rid
inq_RelatedCe() const40 Type::inq_RelatedCe() const
41 {
42     return 0;
43 }
44 
45 
46 //**********************        BuiltInType        **************************//
47 
BuiltInType(const String & i_sName,E_TypeSpecialisation i_eSpecialisation)48 BuiltInType::BuiltInType( const String  &       i_sName,
49                           E_TypeSpecialisation  i_eSpecialisation )
50     :   sName( i_sName ),
51         eSpecialisation( i_eSpecialisation )
52 {
53 }
54 
55 String
SpecializedName_(const char * i_sName,E_TypeSpecialisation i_eTypeSpecialisation)56 BuiltInType::SpecializedName_( const char *         i_sName,
57                                E_TypeSpecialisation i_eTypeSpecialisation )
58 {
59     StreamLock
60         aStrLock(60);
61     StreamStr &
62         ret = aStrLock();
63 
64     switch ( i_eTypeSpecialisation )
65     {
66         case TYSP_unsigned:
67                     ret << "u_";
68                     break;
69         case TYSP_signed:
70                     if (strcmp(i_sName,"char") == 0)
71                         ret << "s_";
72                     break;
73         default:
74                     ;
75 
76     }   // end switch
77 
78     ret << i_sName;
79     return String(ret.c_str());
80 }
81 
82 void
do_Accept(csv::ProcessorIfc & io_processor) const83 BuiltInType::do_Accept(csv::ProcessorIfc & io_processor) const
84 {
85     csv::CheckedCall(io_processor,*this);
86 }
87 
88 ary::ClassId
get_AryClass() const89 BuiltInType::get_AryClass() const
90 {
91     return class_id;
92 }
93 
94 bool
inq_IsConst() const95 BuiltInType::inq_IsConst() const
96 {
97     return false;
98 }
99 
100 void
inq_Get_Text(StreamStr &,StreamStr & o_rName,StreamStr &,const Gate &) const101 BuiltInType::inq_Get_Text( StreamStr &      ,               // o_rPreName
102                            StreamStr &      o_rName,
103                            StreamStr &      ,               // o_rPostName
104                            const Gate &     ) const         // i_rGate
105 {
106     switch (eSpecialisation)
107     {
108         case TYSP_unsigned: o_rName << "unsigned "; break;
109         case TYSP_signed:   o_rName << "signed ";   break;
110 
111         default:            // Does nothing.
112                             ;
113     }
114     o_rName << sName;
115 }
116 
117 
118 
119 
120 }   // namespace cpp
121 }   // namespace ary
122