xref: /trunk/main/svl/source/svdde/ddeimp.hxx (revision c4c57a27)
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 _DDEIMP_HXX
25 #define _DDEIMP_HXX
26 
27 #ifdef OS2
28 
29 #include "ddemlos2.h"
30 
31 #define WORD sal_uInt16
32 #define DWORD sal_uLong
33 #define LPBYTE sal_uInt8*
34 #define LPWORD sal_uInt16*
35 #define LPDWORD sal_uLong*
36 #define LPCTSTR PCSZ
37 
38 #else
39 
40 #include <tools/prewin.h>
41 #include <ddeml.h>
42 #include <tools/postwin.h>
43 #include "ddewrap.hxx"
44 
45 /*
46 extern "C"
47 {
48 #define sal_Bool WIN_BOOL
49 #define sal_uInt8 WIN_BYTE
50 #undef sal_Bool
51 #undef sal_uInt8
52 };
53 */
54 
55 #endif
56 #include <tools/string.hxx>
57 #include <tools/list.hxx>
58 #include <tools/shl.hxx>
59 
60 class DdeService;
61 class DdeTopic;
62 class DdeItem;
63 class DdeTopics;
64 class DdeItems;
65 
66 // ----------------
67 // - Conversation -
68 // ----------------
69 
70 struct Conversation
71 {
72 	HCONV       hConv;
73 	DdeTopic*   pTopic;
74 };
75 
76 DECLARE_LIST( ConvList, Conversation* );
77 
78 // ---------------
79 // - DdeInternal -
80 // ---------------
81 
82 class DdeInternal
83 {
84 public:
85 #ifdef WNT
86 	static HDDEDATA CALLBACK CliCallback
87 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
88 	static HDDEDATA CALLBACK SvrCallback
89 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
90 	static HDDEDATA CALLBACK InfCallback
91 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
92 #else
93 #if defined ( MTW ) || ( defined ( GCC ) && defined ( OS2 )) || defined( ICC )
94 	static HDDEDATA CALLBACK __EXPORT CliCallback
95 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
96 	static HDDEDATA CALLBACK __EXPORT SvrCallback
97 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
98 	static HDDEDATA CALLBACK __EXPORT InfCallback
99 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
100 #else
101 	static HDDEDATA CALLBACK _export CliCallback
102 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
103 	static HDDEDATA CALLBACK _export SvrCallback
104 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
105 	static HDDEDATA CALLBACK _export InfCallback
106 		   ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
107 #endif
108 #endif
109 	static DdeService*      FindService( HSZ );
110 	static DdeTopic*        FindTopic( DdeService&, HSZ );
111 	static DdeItem*         FindItem( DdeTopic&, HSZ );
112 };
113 
114 // -------------
115 // - DdeString -
116 // -------------
117 
118 class DdeString : public String
119 {
120 protected:
121 	HSZ         hString;
122 	DWORD       hInst;
123 
124 public:
125 				DdeString( DWORD, const sal_Unicode* );
126 				DdeString( DWORD, const String& );
127 				~DdeString();
128 
129 	int         operator==( HSZ );
130 				operator HSZ();
131 };
132 
133 // --------------
134 // - DdeDataImp -
135 // --------------
136 
137 struct DdeDataImp
138 {
139 	HDDEDATA		hData;
140 	LPBYTE			pData;
141 	long			nData;
142 	sal_uLong 			nFmt;
143 };
144 
145 class DdeConnections;
146 class DdeServices;
147 
148 struct DdeInstData
149 {
150 	sal_uInt16			nRefCount;
151 	DdeConnections*	pConnections;
152 	// Server
153 	HCONV 			hCurConvSvr;
154 	DWORD			hDdeInstSvr;
155 	short			nInstanceSvr;
156 	DdeServices*	pServicesSvr;
157 	// Client
158 	DWORD			hDdeInstCli;
159 	short			nInstanceCli;
160 };
161 
162 #ifndef SHL_SVDDE
163 #define SHL_SVDDE	SHL_SHL2
164 #endif
165 
ImpGetInstData()166 inline DdeInstData* ImpGetInstData()
167 {
168 	return (DdeInstData*)(*GetAppData( SHL_SVDDE ));
169 }
170 DdeInstData* ImpInitInstData();
171 void ImpDeinitInstData();
172 
173 #endif // _DDEIMP_HXX
174