Update ooo320-m1
[ooovba.git] / autodoc / inc / ary / cpp / c_funct.hxx
blob5aa4ca2caafbe5f869fa92b43fa3c36f3a5fcf65
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: c_funct.hxx,v $
10 * $Revision: 1.5 $
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
36 // USED SERVICES
37 // BASE CLASSES
38 #include <ary/cpp/c_ce.hxx>
39 // OTHER
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>
49 namespace ary
51 namespace cpp
56 /** A C++ function declaration.
58 class Function : public CodeEntity
60 public:
61 enum E_ClassId { class_id = 1004 };
63 Function(
64 const String & i_sLocalName,
65 Ce_id i_nOwner,
66 E_Protection i_eProtection,
67 loc::Le_id i_nFile,
68 Type_id i_nReturnType,
69 const std::vector<S_Parameter> &
70 i_parameters,
71 E_ConVol i_conVol,
72 E_Virtuality i_eVirtuality,
73 FunctionFlags i_aFlags,
74 bool i_bThrowExists,
75 const std::vector<Type_id> &
76 i_rExceptions );
77 ~Function();
80 // OPERATIONS
81 void Add_TemplateParameterType(
82 const String & i_sLocalName,
83 Type_id i_nIdAsType );
85 // INQUIRY
86 const OperationSignature &
87 Signature() const;
88 Type_id ReturnType() const;
89 E_Protection Protection() const { return eProtection; }
90 E_Virtuality Virtuality() const { return eVirtuality; }
91 const FunctionFlags &
92 Flags() const { return aFlags; }
93 const StringVector &
94 ParamInfos() const { return aParameterInfos; }
95 const std::vector<Type_id> *
96 Exceptions() const { return pExceptions.Ptr(); }
98 const List_TplParam &
99 TemplateParameters() const
100 { return aTemplateParameterTypes; }
101 bool IsIdentical(
102 const Function & i_f ) const;
104 private:
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;
118 // Local Types
119 typedef StringVector ParameterInfoList;
120 typedef std::vector<Type_id> ExceptionTypeList;
122 // DATA
123 CeEssentials aEssentials;
124 List_TplParam aTemplateParameterTypes;
125 OperationSignature aSignature;
126 Type_id nReturnType;
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.
139 // IMPLEMENTATION
140 inline const OperationSignature &
141 Function::Signature() const
142 { return aSignature; }
143 inline Type_id
144 Function::ReturnType() const
145 { return nReturnType; }
150 } // namespace cpp
151 } // namespace ary
152 #endif