xref: /aoo4110/main/registry/source/reflcnst.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _REFLCNST_HXX_
25*b1cdbd2cSJim Jagielski #define _REFLCNST_HXX_
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <registry/refltype.hxx>
28*b1cdbd2cSJim Jagielski #include <sal/macros.h>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <string.h>
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski #define REGTYPE_IEEE_NATIVE 1
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski extern const sal_uInt32	magic;
35*b1cdbd2cSJim Jagielski extern const sal_uInt16 minorVersion;
36*b1cdbd2cSJim Jagielski extern const sal_uInt16 majorVersion;
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski #define OFFSET_MAGIC 				0
39*b1cdbd2cSJim Jagielski #define OFFSET_SIZE 				(OFFSET_MAGIC + sizeof(magic))
40*b1cdbd2cSJim Jagielski #define OFFSET_MINOR_VERSION 		(OFFSET_SIZE + sizeof(sal_uInt32))
41*b1cdbd2cSJim Jagielski #define OFFSET_MAJOR_VERSION 		(OFFSET_MINOR_VERSION + sizeof(minorVersion))
42*b1cdbd2cSJim Jagielski #define OFFSET_N_ENTRIES   	 		(OFFSET_MAJOR_VERSION + sizeof(sal_uInt16))
43*b1cdbd2cSJim Jagielski #define OFFSET_TYPE_SOURCE    		(OFFSET_N_ENTRIES + sizeof(sal_uInt16))
44*b1cdbd2cSJim Jagielski #define OFFSET_TYPE_CLASS 			(OFFSET_TYPE_SOURCE + sizeof(sal_uInt16))
45*b1cdbd2cSJim Jagielski #define OFFSET_THIS_TYPE 			(OFFSET_TYPE_CLASS + sizeof(sal_uInt16))
46*b1cdbd2cSJim Jagielski #define OFFSET_UIK 					(OFFSET_THIS_TYPE + sizeof(sal_uInt16))
47*b1cdbd2cSJim Jagielski #define OFFSET_DOKU 	   			(OFFSET_UIK + sizeof(sal_uInt16))
48*b1cdbd2cSJim Jagielski #define OFFSET_FILENAME				(OFFSET_DOKU + sizeof(sal_uInt16))
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski #define OFFSET_N_SUPERTYPES			(OFFSET_FILENAME + sizeof(sal_uInt16))
51*b1cdbd2cSJim Jagielski #define OFFSET_SUPERTYPES			(OFFSET_N_SUPERTYPES + sizeof(sal_uInt16))
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski #define OFFSET_CP_SIZE				(OFFSET_SUPERTYPES + sizeof(sal_uInt16))
54*b1cdbd2cSJim Jagielski #define OFFSET_CP 					(OFFSET_CP_SIZE + sizeof(sal_uInt16))
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_SIZE		0
57*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_TAG			(CP_OFFSET_ENTRY_SIZE + sizeof(sal_uInt32))
58*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_DATA		(CP_OFFSET_ENTRY_TAG + sizeof(sal_uInt16))
59*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_UIK1		CP_OFFSET_ENTRY_DATA
60*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_UIK2		(CP_OFFSET_ENTRY_UIK1 + sizeof(sal_uInt32))
61*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_UIK3		(CP_OFFSET_ENTRY_UIK2 + sizeof(sal_uInt16))
62*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_UIK4		(CP_OFFSET_ENTRY_UIK3 + sizeof(sal_uInt16))
63*b1cdbd2cSJim Jagielski #define CP_OFFSET_ENTRY_UIK5		(CP_OFFSET_ENTRY_UIK4 + sizeof(sal_uInt32))
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski #define FIELD_OFFSET_ACCESS			0
66*b1cdbd2cSJim Jagielski #define FIELD_OFFSET_NAME			(FIELD_OFFSET_ACCESS + sizeof(sal_uInt16))
67*b1cdbd2cSJim Jagielski #define FIELD_OFFSET_TYPE			(FIELD_OFFSET_NAME + sizeof(sal_uInt16))
68*b1cdbd2cSJim Jagielski #define FIELD_OFFSET_VALUE			(FIELD_OFFSET_TYPE + sizeof(sal_uInt16))
69*b1cdbd2cSJim Jagielski #define FIELD_OFFSET_DOKU			(FIELD_OFFSET_VALUE + sizeof(sal_uInt16))
70*b1cdbd2cSJim Jagielski #define FIELD_OFFSET_FILENAME		(FIELD_OFFSET_DOKU + sizeof(sal_uInt16))
71*b1cdbd2cSJim Jagielski //#define FIELD_ENTRY_SIZE			(FIELD_OFFSET_FILENAME + sizeof(sal_uInt16))
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski #define PARAM_OFFSET_TYPE			0
74*b1cdbd2cSJim Jagielski #define PARAM_OFFSET_MODE			(PARAM_OFFSET_TYPE + sizeof(sal_uInt16))
75*b1cdbd2cSJim Jagielski #define PARAM_OFFSET_NAME			(PARAM_OFFSET_MODE + sizeof(sal_uInt16))
76*b1cdbd2cSJim Jagielski //#define PARAM_ENTRY_SIZE			(PARAM_OFFSET_NAME + sizeof(sal_uInt16))
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski #define METHOD_OFFSET_SIZE			0
79*b1cdbd2cSJim Jagielski #define METHOD_OFFSET_MODE			(METHOD_OFFSET_SIZE + sizeof(sal_uInt16))
80*b1cdbd2cSJim Jagielski #define METHOD_OFFSET_NAME			(METHOD_OFFSET_MODE + sizeof(sal_uInt16))
81*b1cdbd2cSJim Jagielski #define METHOD_OFFSET_RETURN		(METHOD_OFFSET_NAME + sizeof(sal_uInt16))
82*b1cdbd2cSJim Jagielski #define METHOD_OFFSET_DOKU			(METHOD_OFFSET_RETURN + sizeof(sal_uInt16))
83*b1cdbd2cSJim Jagielski #define METHOD_OFFSET_PARAM_COUNT	(METHOD_OFFSET_DOKU + sizeof(sal_uInt16))
84*b1cdbd2cSJim Jagielski //#define METHOD_OFFSET_PARAM(i)		(METHOD_OFFSET_PARAM_COUNT + sizeof(sal_uInt16) + (i * PARAM_ENTRY_SIZE))
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski #define REFERENCE_OFFSET_TYPE	   	0
87*b1cdbd2cSJim Jagielski #define REFERENCE_OFFSET_NAME	   	(REFERENCE_OFFSET_TYPE + sizeof(sal_uInt16))
88*b1cdbd2cSJim Jagielski #define REFERENCE_OFFSET_DOKU	   	(REFERENCE_OFFSET_NAME + sizeof(sal_uInt16))
89*b1cdbd2cSJim Jagielski #define REFERENCE_OFFSET_ACCESS	   	(REFERENCE_OFFSET_DOKU + sizeof(sal_uInt16))
90*b1cdbd2cSJim Jagielski //#define REFERENCE_ENTRY_SIZE	   	(REFERENCE_OFFSET_ACCESS + sizeof(sal_uInt16))
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski enum CPInfoTag
93*b1cdbd2cSJim Jagielski {
94*b1cdbd2cSJim Jagielski 	CP_TAG_INVALID = RT_TYPE_NONE,
95*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_BOOL = RT_TYPE_BOOL,
96*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_BYTE  = RT_TYPE_BYTE,
97*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_INT16 = RT_TYPE_INT16,
98*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_UINT16 = RT_TYPE_UINT16,
99*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_INT32 = RT_TYPE_INT32,
100*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_UINT32 = RT_TYPE_UINT32,
101*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_INT64 = RT_TYPE_INT64,
102*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_UINT64 = RT_TYPE_UINT64,
103*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_FLOAT = RT_TYPE_FLOAT,
104*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_DOUBLE = RT_TYPE_DOUBLE,
105*b1cdbd2cSJim Jagielski 	CP_TAG_CONST_STRING = RT_TYPE_STRING,
106*b1cdbd2cSJim Jagielski 	CP_TAG_UTF8_NAME,
107*b1cdbd2cSJim Jagielski 	CP_TAG_UIK
108*b1cdbd2cSJim Jagielski };
109*b1cdbd2cSJim Jagielski 
writeBYTE(sal_uInt8 * buffer,sal_uInt8 v)110*b1cdbd2cSJim Jagielski inline sal_uInt32 writeBYTE(sal_uInt8* buffer, sal_uInt8 v)
111*b1cdbd2cSJim Jagielski {
112*b1cdbd2cSJim Jagielski 	buffer[0] = v;
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt8);
115*b1cdbd2cSJim Jagielski }
116*b1cdbd2cSJim Jagielski 
readBYTE(const sal_uInt8 * buffer,sal_uInt8 & v)117*b1cdbd2cSJim Jagielski inline sal_uInt16 readBYTE(const sal_uInt8* buffer, sal_uInt8& v)
118*b1cdbd2cSJim Jagielski {
119*b1cdbd2cSJim Jagielski 	v = buffer[0];
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt8);
122*b1cdbd2cSJim Jagielski }
123*b1cdbd2cSJim Jagielski 
writeINT16(sal_uInt8 * buffer,sal_Int16 v)124*b1cdbd2cSJim Jagielski inline sal_uInt32 writeINT16(sal_uInt8* buffer, sal_Int16 v)
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski 	buffer[0] = (sal_uInt8)((v >> 8) & 0xFF);
127*b1cdbd2cSJim Jagielski 	buffer[1] = (sal_uInt8)((v >> 0) & 0xFF);
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski 	return sizeof(sal_Int16);
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski 
readINT16(const sal_uInt8 * buffer,sal_Int16 & v)132*b1cdbd2cSJim Jagielski inline sal_uInt32 readINT16(const sal_uInt8* buffer, sal_Int16& v)
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski 	v = ((buffer[0] << 8) | (buffer[1] << 0));
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 	return sizeof(sal_Int16);
137*b1cdbd2cSJim Jagielski }
138*b1cdbd2cSJim Jagielski 
writeUINT16(sal_uInt8 * buffer,sal_uInt16 v)139*b1cdbd2cSJim Jagielski inline sal_uInt32 writeUINT16(sal_uInt8* buffer, sal_uInt16 v)
140*b1cdbd2cSJim Jagielski {
141*b1cdbd2cSJim Jagielski 	buffer[0] = (sal_uInt8)((v >> 8) & 0xFF);
142*b1cdbd2cSJim Jagielski 	buffer[1] = (sal_uInt8)((v >> 0) & 0xFF);
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt16);
145*b1cdbd2cSJim Jagielski }
146*b1cdbd2cSJim Jagielski 
readUINT16(const sal_uInt8 * buffer,sal_uInt16 & v)147*b1cdbd2cSJim Jagielski inline sal_uInt32 readUINT16(const sal_uInt8* buffer, sal_uInt16& v)
148*b1cdbd2cSJim Jagielski {
149*b1cdbd2cSJim Jagielski 	v = ((buffer[0] << 8) | (buffer[1] << 0));
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt16);
152*b1cdbd2cSJim Jagielski }
153*b1cdbd2cSJim Jagielski 
writeINT32(sal_uInt8 * buffer,sal_Int32 v)154*b1cdbd2cSJim Jagielski inline sal_uInt32 writeINT32(sal_uInt8* buffer, sal_Int32 v)
155*b1cdbd2cSJim Jagielski {
156*b1cdbd2cSJim Jagielski 	buffer[0] = (sal_uInt8)((v >> 24) & 0xFF);
157*b1cdbd2cSJim Jagielski 	buffer[1] = (sal_uInt8)((v >> 16) & 0xFF);
158*b1cdbd2cSJim Jagielski 	buffer[2] = (sal_uInt8)((v >> 8) & 0xFF);
159*b1cdbd2cSJim Jagielski 	buffer[3] = (sal_uInt8)((v >> 0) & 0xFF);
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski 	return sizeof(sal_Int32);
162*b1cdbd2cSJim Jagielski }
163*b1cdbd2cSJim Jagielski 
readINT32(const sal_uInt8 * buffer,sal_Int32 & v)164*b1cdbd2cSJim Jagielski inline sal_uInt32 readINT32(const sal_uInt8* buffer, sal_Int32& v)
165*b1cdbd2cSJim Jagielski {
166*b1cdbd2cSJim Jagielski 	v = (
167*b1cdbd2cSJim Jagielski 			(buffer[0] << 24) |
168*b1cdbd2cSJim Jagielski 			(buffer[1] << 16) |
169*b1cdbd2cSJim Jagielski 			(buffer[2] << 8)  |
170*b1cdbd2cSJim Jagielski 			(buffer[3] << 0)
171*b1cdbd2cSJim Jagielski 		);
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski 	return sizeof(sal_Int32);
174*b1cdbd2cSJim Jagielski }
175*b1cdbd2cSJim Jagielski 
writeUINT32(sal_uInt8 * buffer,sal_uInt32 v)176*b1cdbd2cSJim Jagielski inline sal_uInt32 writeUINT32(sal_uInt8* buffer, sal_uInt32 v)
177*b1cdbd2cSJim Jagielski {
178*b1cdbd2cSJim Jagielski 	buffer[0] = (sal_uInt8)((v >> 24) & 0xFF);
179*b1cdbd2cSJim Jagielski 	buffer[1] = (sal_uInt8)((v >> 16) & 0xFF);
180*b1cdbd2cSJim Jagielski 	buffer[2] = (sal_uInt8)((v >> 8) & 0xFF);
181*b1cdbd2cSJim Jagielski 	buffer[3] = (sal_uInt8)((v >> 0) & 0xFF);
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt32);
184*b1cdbd2cSJim Jagielski }
185*b1cdbd2cSJim Jagielski 
readUINT32(const sal_uInt8 * buffer,sal_uInt32 & v)186*b1cdbd2cSJim Jagielski inline sal_uInt32 readUINT32(const sal_uInt8* buffer, sal_uInt32& v)
187*b1cdbd2cSJim Jagielski {
188*b1cdbd2cSJim Jagielski 	v = (
189*b1cdbd2cSJim Jagielski 			(buffer[0] << 24) |
190*b1cdbd2cSJim Jagielski 			(buffer[1] << 16) |
191*b1cdbd2cSJim Jagielski 			(buffer[2] << 8)  |
192*b1cdbd2cSJim Jagielski 			(buffer[3] << 0)
193*b1cdbd2cSJim Jagielski 		);
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt32);
196*b1cdbd2cSJim Jagielski }
197*b1cdbd2cSJim Jagielski 
writeINT64(sal_uInt8 * buffer,sal_Int64 v)198*b1cdbd2cSJim Jagielski inline sal_uInt32 writeINT64(sal_uInt8* buffer, sal_Int64 v)
199*b1cdbd2cSJim Jagielski {
200*b1cdbd2cSJim Jagielski 	buffer[0] = (sal_uInt8)((v >> 56) & 0xFF);
201*b1cdbd2cSJim Jagielski 	buffer[1] = (sal_uInt8)((v >> 48) & 0xFF);
202*b1cdbd2cSJim Jagielski 	buffer[2] = (sal_uInt8)((v >> 40) & 0xFF);
203*b1cdbd2cSJim Jagielski 	buffer[3] = (sal_uInt8)((v >> 32) & 0xFF);
204*b1cdbd2cSJim Jagielski 	buffer[4] = (sal_uInt8)((v >> 24) & 0xFF);
205*b1cdbd2cSJim Jagielski 	buffer[5] = (sal_uInt8)((v >> 16) & 0xFF);
206*b1cdbd2cSJim Jagielski 	buffer[6] = (sal_uInt8)((v >> 8) & 0xFF);
207*b1cdbd2cSJim Jagielski 	buffer[7] = (sal_uInt8)((v >> 0) & 0xFF);
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski 	return sizeof(sal_Int64);
210*b1cdbd2cSJim Jagielski }
211*b1cdbd2cSJim Jagielski 
readINT64(const sal_uInt8 * buffer,sal_Int64 & v)212*b1cdbd2cSJim Jagielski inline sal_uInt32 readINT64(const sal_uInt8* buffer, sal_Int64& v)
213*b1cdbd2cSJim Jagielski {
214*b1cdbd2cSJim Jagielski 	v = (
215*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[0] << 56) |
216*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[1] << 48) |
217*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[2] << 40) |
218*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[3] << 32) |
219*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[4] << 24) |
220*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[5] << 16) |
221*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[6] << 8)  |
222*b1cdbd2cSJim Jagielski 			((sal_Int64)buffer[7] << 0)
223*b1cdbd2cSJim Jagielski 		);
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski 	return sizeof(sal_Int64);
226*b1cdbd2cSJim Jagielski }
227*b1cdbd2cSJim Jagielski 
writeUINT64(sal_uInt8 * buffer,sal_uInt64 v)228*b1cdbd2cSJim Jagielski inline sal_uInt32 writeUINT64(sal_uInt8* buffer, sal_uInt64 v)
229*b1cdbd2cSJim Jagielski {
230*b1cdbd2cSJim Jagielski 	buffer[0] = (sal_uInt8)((v >> 56) & 0xFF);
231*b1cdbd2cSJim Jagielski 	buffer[1] = (sal_uInt8)((v >> 48) & 0xFF);
232*b1cdbd2cSJim Jagielski 	buffer[2] = (sal_uInt8)((v >> 40) & 0xFF);
233*b1cdbd2cSJim Jagielski 	buffer[3] = (sal_uInt8)((v >> 32) & 0xFF);
234*b1cdbd2cSJim Jagielski 	buffer[4] = (sal_uInt8)((v >> 24) & 0xFF);
235*b1cdbd2cSJim Jagielski 	buffer[5] = (sal_uInt8)((v >> 16) & 0xFF);
236*b1cdbd2cSJim Jagielski 	buffer[6] = (sal_uInt8)((v >> 8) & 0xFF);
237*b1cdbd2cSJim Jagielski 	buffer[7] = (sal_uInt8)((v >> 0) & 0xFF);
238*b1cdbd2cSJim Jagielski 
239*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt64);
240*b1cdbd2cSJim Jagielski }
241*b1cdbd2cSJim Jagielski 
readUINT64(const sal_uInt8 * buffer,sal_uInt64 & v)242*b1cdbd2cSJim Jagielski inline sal_uInt32 readUINT64(const sal_uInt8* buffer, sal_uInt64& v)
243*b1cdbd2cSJim Jagielski {
244*b1cdbd2cSJim Jagielski 	v = (
245*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[0] << 56) |
246*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[1] << 48) |
247*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[2] << 40) |
248*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[3] << 32) |
249*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[4] << 24) |
250*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[5] << 16) |
251*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[6] << 8)  |
252*b1cdbd2cSJim Jagielski 			((sal_uInt64)buffer[7] << 0)
253*b1cdbd2cSJim Jagielski 		);
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski 	return sizeof(sal_uInt64);
256*b1cdbd2cSJim Jagielski }
257*b1cdbd2cSJim Jagielski 
writeUtf8(sal_uInt8 * buffer,const sal_Char * v)258*b1cdbd2cSJim Jagielski inline sal_uInt32 writeUtf8(sal_uInt8* buffer, const sal_Char* v)
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski 	sal_uInt32 size = strlen(v) + 1;
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski 	memcpy(buffer, v, size);
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski 	return (size);
265*b1cdbd2cSJim Jagielski }
266*b1cdbd2cSJim Jagielski 
readUtf8(const sal_uInt8 * buffer,sal_Char * v,sal_uInt32 maxSize)267*b1cdbd2cSJim Jagielski inline sal_uInt32 readUtf8(const sal_uInt8* buffer, sal_Char* v, sal_uInt32 maxSize)
268*b1cdbd2cSJim Jagielski {
269*b1cdbd2cSJim Jagielski 	sal_uInt32 size = SAL_MIN(strlen((const sal_Char*) buffer) + 1, maxSize);
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski 	memcpy(v, buffer, size);
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski 	if (size == maxSize) v[size - 1] = '\0';
274*b1cdbd2cSJim Jagielski 
275*b1cdbd2cSJim Jagielski 	return (size);
276*b1cdbd2cSJim Jagielski }
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski 
279*b1cdbd2cSJim Jagielski sal_uInt32 writeFloat(sal_uInt8* buffer, float v);
280*b1cdbd2cSJim Jagielski sal_uInt32 writeDouble(sal_uInt8* buffer, double v);
281*b1cdbd2cSJim Jagielski sal_uInt32 writeString(sal_uInt8* buffer, const sal_Unicode* v);
282*b1cdbd2cSJim Jagielski sal_uInt32 readString(const sal_uInt8* buffer, sal_Unicode* v, sal_uInt32 maxSize);
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski sal_uInt32 UINT16StringLen(const sal_uInt8* wstring);
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski #endif
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski 
292