Teach symstore more duplicated DLLs
[LibreOffice.git] / idl / inc / globals.hxx
blob033a8f2703502941ec375e99f5818f3560e2586b
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_IDL_INC_GLOBALS_HXX
21 #define INCLUDED_IDL_INC_GLOBALS_HXX
23 #include "hash.hxx"
24 #include <memory>
26 struct SvGlobalHashNames
28 SvStringHashEntry* MM_module;
29 SvStringHashEntry* MM_interface;
30 SvStringHashEntry* MM_shell;
31 SvStringHashEntry* MM_Toggle;
32 SvStringHashEntry* MM_AutoUpdate;
33 SvStringHashEntry* MM_Asynchron;
34 SvStringHashEntry* MM_RecordPerSet;
35 SvStringHashEntry* MM_RecordPerItem;
36 SvStringHashEntry* MM_NoRecord;
37 SvStringHashEntry* MM_RecordAbsolute;
38 SvStringHashEntry* MM_enum;
39 SvStringHashEntry* MM_UINT16;
40 SvStringHashEntry* MM_INT16;
41 SvStringHashEntry* MM_UINT32;
42 SvStringHashEntry* MM_INT32;
43 SvStringHashEntry* MM_BOOL;
44 SvStringHashEntry* MM_BYTE;
45 SvStringHashEntry* MM_float;
46 SvStringHashEntry* MM_double;
47 SvStringHashEntry* MM_item;
48 SvStringHashEntry* MM_import;
49 SvStringHashEntry* MM_SlotIdFile;
50 SvStringHashEntry* MM_include;
51 SvStringHashEntry* MM_ExecMethod;
52 SvStringHashEntry* MM_StateMethod;
53 SvStringHashEntry* MM_GroupId;
54 SvStringHashEntry* MM_Export;
55 SvStringHashEntry* MM_define;
56 SvStringHashEntry* MM_MenuConfig;
57 SvStringHashEntry* MM_ToolBoxConfig;
58 SvStringHashEntry* MM_AccelConfig;
59 SvStringHashEntry* MM_FastCall;
60 SvStringHashEntry* MM_SbxObject;
61 SvStringHashEntry* MM_Container;
62 SvStringHashEntry* MM_ReadOnlyDoc;
63 SvStringHashEntry* MM_struct;
64 SvStringHashEntry* MM_DisableFlags;
66 SvGlobalHashNames();
69 class IdlDll
71 public:
72 std::unique_ptr<SvStringHashTable> pHashTable;
73 std::unique_ptr<SvGlobalHashNames> pGlobalNames;
75 IdlDll();
76 ~IdlDll();
79 IdlDll & GetIdlApp();
81 #define HASH_INLINE( Name ) \
82 inline SvStringHashEntry * SvHash_##Name() \
83 { \
84 if( !GetIdlApp().pGlobalNames ) \
85 GetIdlApp().pGlobalNames.reset( new SvGlobalHashNames() ); \
86 return GetIdlApp().pGlobalNames->MM_##Name; \
89 HASH_INLINE(module)
90 HASH_INLINE(interface)
91 HASH_INLINE(shell)
92 HASH_INLINE(Toggle)
93 HASH_INLINE(AutoUpdate)
94 HASH_INLINE(Asynchron)
95 HASH_INLINE(RecordPerItem)
96 HASH_INLINE(RecordPerSet)
97 HASH_INLINE(NoRecord)
98 HASH_INLINE(RecordAbsolute)
99 HASH_INLINE(enum)
100 HASH_INLINE(UINT16)
101 HASH_INLINE(INT16)
102 HASH_INLINE(UINT32)
103 HASH_INLINE(INT32)
104 HASH_INLINE(BOOL)
105 HASH_INLINE(BYTE)
106 HASH_INLINE(item)
107 HASH_INLINE(import)
108 HASH_INLINE(SlotIdFile)
109 HASH_INLINE(include)
110 HASH_INLINE(ExecMethod)
111 HASH_INLINE(StateMethod)
112 HASH_INLINE(GroupId)
113 HASH_INLINE(float)
114 HASH_INLINE(double)
115 HASH_INLINE(Export)
116 HASH_INLINE(define)
117 HASH_INLINE(MenuConfig)
118 HASH_INLINE(ToolBoxConfig)
119 HASH_INLINE(AccelConfig)
120 HASH_INLINE(FastCall)
121 HASH_INLINE(SbxObject)
122 HASH_INLINE(Container)
123 HASH_INLINE(ReadOnlyDoc)
124 HASH_INLINE(struct)
125 HASH_INLINE(DisableFlags)
128 #endif // INCLUDED_IDL_INC_GLOBALS_HXX
130 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */