]> git.saurik.com Git - apple/icu.git/blame - icuSources/samples/udata/reader.c
ICU-64232.0.1.tar.gz
[apple/icu.git] / icuSources / samples / udata / reader.c
CommitLineData
b75a7d8f 1/*
f3c0d7a5
A
2 *******************************************************************************
3 *
4 * © 2016 and later: Unicode, Inc. and others.
5 * License & terms of use: http://www.unicode.org/copyright.html#License
6 *
7 *******************************************************************************
374ca955
A
8 *******************************************************************************
9 *
729e4ab9 10 * Copyright (C) 1999-2009, International Business Machines
374ca955
A
11 * Corporation and others. All Rights Reserved.
12 *
13 *******************************************************************************
14 * file name: reader.c
f3c0d7a5 15 * encoding: UTF-8
374ca955
A
16 * tab size: 8 (not used)
17 * indentation:4
18 *
19 * created on: 2000sep5
20 * created by: Vladimir Weinstein
21 */
b75a7d8f
A
22
23/*******************************************************************************
24 * Derived from Madhu Katragadda gentest
25 *******************************************************************************/
26
27
28#include <string.h>
29#include <stdio.h>
30#include <stdlib.h>
31#ifdef WIN32
32#include <direct.h>
33#else
34#include <unistd.h>
35#endif
36#include "unicode/utypes.h"
374ca955 37#include "unicode/putil.h"
b75a7d8f
A
38#include "unicode/udata.h"
39
729e4ab9 40#define DATA_NAME "mypkg_example"
b75a7d8f
A
41#define DATA_TYPE "dat"
42
43/* UDataInfo cf. udata.h */
44static const UDataInfo dataInfo={
45 sizeof(UDataInfo),
46 0,
47
48 U_IS_BIG_ENDIAN,
49 U_CHARSET_FAMILY,
50 sizeof(UChar),
51 0,
52
53 0x4D, 0x79, 0x44, 0x74, /* dataFormat="MyDt" */
54 1, 0, 0, 0, /* formatVersion */
55 1, 0, 0, 0 /* dataVersion */
56};
57
58static UBool
59isAcceptable(void *context,
60 const char *type, const char *name,
61 const UDataInfo *pInfo){
62
63 if( pInfo->size>=20 &&
64 pInfo->isBigEndian==U_IS_BIG_ENDIAN &&
65 pInfo->charsetFamily==U_CHARSET_FAMILY &&
66 pInfo->dataFormat[0]==0x4D && /* dataFormat="MyDt" */
67 pInfo->dataFormat[1]==0x79 &&
68 pInfo->dataFormat[2]==0x44 &&
69 pInfo->dataFormat[3]==0x74 &&
70 pInfo->formatVersion[0]==1 &&
71 pInfo->dataVersion[0]==1 ) {
72 return TRUE;
73 } else {
74 return FALSE;
75 }
76
77
78}
79
80extern int
81main(int argc, const char *argv[]) {
82 UDataMemory *result = NULL;
83 UErrorCode status=U_ZERO_ERROR;
84
85 uint16_t intValue = 0;
86
87 char *string = NULL;
88 uint16_t *intPointer = NULL;
89
90 const void *dataMemory = NULL;
91 char curPathBuffer[1024];
92
93#ifdef WIN32
94 char *currdir = _getcwd(NULL, 0);
95#else
96 char *currdir = getcwd(NULL, 0);
97#endif
98
729e4ab9 99 /* need to put "current/dir" as path */
b75a7d8f 100 strcpy(curPathBuffer, currdir);
b75a7d8f
A
101
102 result=udata_openChoice(curPathBuffer, DATA_TYPE, DATA_NAME, isAcceptable, NULL, &status);
103
104 if(currdir != NULL) {
105 free(currdir);
106 }
107
108 if(U_FAILURE(status)){
109 printf("Failed to open data file example.dat in %s with error number %d\n", curPathBuffer, status);
110 return -1;
111 }
112
113 dataMemory = udata_getMemory(result);
114
115 intPointer = (uint16_t *)dataMemory;
116
117 printf("Read value %d from data file\n", *intPointer);
118
119 string = (char *) (intPointer+1);
120
121 printf("Read string %s from data file\n", string);
122
123 if(U_SUCCESS(status)){
124 udata_close(result);
125 }
126
127 return 0;
128}
129
130
131
132
133
134
135