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 INCLUDED_stoc_source_registry_tdprovider_functiondescription_hxx
25 #define INCLUDED_stoc_source_registry_tdprovider_functiondescription_hxx
26 
27 #include "com/sun/star/uno/Reference.hxx"
28 #include "com/sun/star/uno/Sequence.hxx"
29 #include "osl/mutex.hxx"
30 #include "sal/types.h"
31 
32 namespace com { namespace sun { namespace star {
33     namespace container {
34         class XHierarchicalNameAccess;
35     }
36     namespace reflection {
37         class XCompoundTypeDescription;
38     }
39 } } }
40 namespace typereg { class Reader; }
41 
42 namespace stoc { namespace registry_tdprovider {
43 
44 class FunctionDescription {
45 public:
46     FunctionDescription(
47         com::sun::star::uno::Reference<
48             com::sun::star::container::XHierarchicalNameAccess > const &
49             manager,
50         com::sun::star::uno::Sequence< sal_Int8 > const & bytes,
51         sal_uInt16 index);
52 
53     ~FunctionDescription();
54 
55     com::sun::star::uno::Sequence<
56         com::sun::star::uno::Reference<
57             com::sun::star::reflection::XCompoundTypeDescription > >
58     getExceptions() const;
59 
60 protected:
61     typereg::Reader getReader() const;
62 
63     com::sun::star::uno::Reference<
64         com::sun::star::container::XHierarchicalNameAccess > m_manager;
65     com::sun::star::uno::Sequence< sal_Int8 > m_bytes;
66     sal_uInt16 m_index;
67 
68     mutable osl::Mutex m_mutex;
69     mutable com::sun::star::uno::Sequence<
70         com::sun::star::uno::Reference<
71             com::sun::star::reflection::XCompoundTypeDescription > >
72                 m_exceptions;
73     mutable bool m_exceptionsInit;
74 
75 private:
76     FunctionDescription(FunctionDescription &); // not implemented
77     void operator =(FunctionDescription); // not implemented
78 };
79 
80 } }
81 
82 #endif
83