sample.c
1 #include <stdio.h>
2 #include <time.h>
3
4 #include "tinyda.h"
5
6
7
8 int EnumCall( const char *key, void *rec, void *arg )
9 {
10
11 if ( *( int * )rec )
12 {
13 printf( "%d\t%s\n", *( int * )rec, key );
14 return *( int * )rec;
15 }
16
17 return DA_OK;
18 }
19
20 int main( int argc, char *argv[] )
21 {
22 int i, ret;
23 int *val, idx;
24 DAStat stat;
25 hDASet set;
26 hDADic dic;
27 clock_t cl;
28 const char *s, *start, *input = "motor";
29
30
31 if ( ( ret = DASet_Open( &set ) ) != DA_OK )
32 fprintf( stderr, "DASet_Open(): %d\n", ret );
33
34
35 cl = clock();
36 for ( i = 1; i < argc; i++ )
37 {
38 ret = DASet_Load( set, argv[i], "\t\r\n", sizeof( int ) );
39 if ( ret != DA_OK )
40 fprintf( stderr, "DADic_Load(): %s: %d\n", argv[i], ret );
41 }
42 cl = clock() - cl;
43 printf( "Load: %.3f sec\n", 1.0 * cl / CLOCKS_PER_SEC );
44
45
46
47
48
49
50
51
52
53
54 cl = clock();
55 if ( ( ret = DADic_Build( &dic, set, sizeof( int ) ) ) != DA_OK )
56 fprintf( stderr, "DADic_Build(): %d\n", ret );
57 cl = clock() - cl;
58 printf( "Build: %.3f sec\n", 1.0 * cl / CLOCKS_PER_SEC );
59
60
61 if ( ( ret = DASet_Close( set ) ) != DA_OK )
62 fprintf( stderr, "DASet_Close(): %d\n", ret );
63
64
65 if ( ( ret = DADic_Status( dic, &stat ) ) != DA_OK )
66 fprintf( stderr, "DADic_Stat(): %d\n", ret );
67 printf( "Size: 4 * %d + %d = %d\n", stat.nbc, stat.ntail, stat.size );
68 printf( "Key: %d\n", stat.nkey );
69 printf( "Max-len: %d\n", stat.maxlen );
70 printf( "Boundary: %d\n", stat.boundary );
71
72
73 if ( ( val = DADic_Search( dic, "pen" ) ) == NULL )
74 fprintf( stderr, "DADic_Search(): Not found\n" );
75 else
76 *val = 100;
77
78
79 if ( ( ret = DADic_Save( dic, "test.dic" ) ) != DA_OK )
80 fprintf( stderr, "DADic_Save(): %d\n", ret );
81 if ( ( ret = DADic_Close( dic ) ) != DA_OK )
82 fprintf( stderr, "DADic_Close(): %d\n", ret );
83 if ( ( ret = DADic_Open( &dic, "test.dic" ) ) != DA_OK )
84 fprintf( stderr, "DADic_Open(): %d\n", ret );
85
86
87 idx = 0;
88 start = s = input;
89 while ( ( val = DADic_Prefix( dic, &s, &idx ) ) != NULL )
90 printf( "DADic_Prefix(): [%.*s]%s: %d\n", s - start, start, s, *val );
91
92
93 idx = 0;
94 start = s = input;
95 while ( ( val = DADic_Infix( dic, &start, &s, &idx ) ) != NULL )
96 printf( "DADic_Infix(): %.*s[%.*s]%s: %d\n",
97 start - input, input, s - start, start, s, *val );
98
99
100 cl = clock();
101 if ( ( ret = DADic_Enum( dic, NULL, EnumCall ) ) != DA_OK )
102 fprintf( stderr, "DADic_Enum(): %d\n", ret );
103 cl = clock() - cl;
104 printf( "Enum: %.3f sec\n", 1.0 * cl / CLOCKS_PER_SEC );
105
106
107 if ( ( ret = DADic_Close( dic ) ) != DA_OK )
108 fprintf( stderr, "DADic_Close(): %d\n", ret );
109
110 return 0;
111 }