1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: c_funct.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef ARY_CPP_C_FUNCT_HXX
32 #define ARY_CPP_C_FUNCT_HXX
38 #include <ary/cpp/c_ce.hxx>
40 #include <ary/cessentl.hxx>
41 #include <ary/cpp/c_types4cpp.hxx>
42 #include <ary/cpp/c_slntry.hxx>
43 #include <ary/cpp/c_vfflag.hxx>
44 #include <ary/cpp/c_osigna.hxx>
56 /** A C++ function declaration.
58 class Function
: public CodeEntity
61 enum E_ClassId
{ class_id
= 1004 };
64 const String
& i_sLocalName
,
66 E_Protection i_eProtection
,
68 Type_id i_nReturnType
,
69 const std::vector
<S_Parameter
> &
72 E_Virtuality i_eVirtuality
,
73 FunctionFlags i_aFlags
,
75 const std::vector
<Type_id
> &
81 void Add_TemplateParameterType(
82 const String
& i_sLocalName
,
83 Type_id i_nIdAsType
);
86 const OperationSignature
&
88 Type_id
ReturnType() const;
89 E_Protection
Protection() const { return eProtection
; }
90 E_Virtuality
Virtuality() const { return eVirtuality
; }
92 Flags() const { return aFlags
; }
94 ParamInfos() const { return aParameterInfos
; }
95 const std::vector
<Type_id
> *
96 Exceptions() const { return pExceptions
.Ptr(); }
99 TemplateParameters() const
100 { return aTemplateParameterTypes
; }
102 const Function
& i_f
) const;
105 // Interface csv::ConstProcessorClient
106 virtual void do_Accept(
107 csv::ProcessorIfc
& io_processor
) const;
109 // Interface ary::cpp::CodeEntity
110 virtual const String
&
111 inq_LocalName() const;
112 virtual Cid
inq_Owner() const;
113 virtual Lid
inq_Location() const;
115 // Interface ary::cpp::CppEntity
116 virtual ClassId
get_AryClass() const;
119 typedef StringVector ParameterInfoList
;
120 typedef std::vector
<Type_id
> ExceptionTypeList
;
123 CeEssentials aEssentials
;
124 List_TplParam aTemplateParameterTypes
;
125 OperationSignature aSignature
;
127 E_Protection eProtection
;
128 E_Virtuality eVirtuality
;
129 FunctionFlags aFlags
;
130 ParameterInfoList aParameterInfos
;
131 Dyn
<ExceptionTypeList
>
132 pExceptions
; // if (NOT pExceptions) there is no throw,
133 // else, there is one, but the list still may be empty.
140 inline const OperationSignature
&
141 Function::Signature() const
142 { return aSignature
; }
144 Function::ReturnType() const
145 { return nReturnType
; }