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