1 /******************************************************************************
2 *
3 * Copyright (C) 2009, The Gentee Group. All rights reserved.
4 * This file is part of the Gentee open source project - http://www.gentee.com.
5 *
6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
8 * ACCEPTANCE OF THE AGREEMENT.
9 *
10 * Author: Alexey Krivonogov ( gentee )
11 *
12 ******************************************************************************/
13
14 #ifndef _MATCH_
15 #define _MATCH_
16
17 #include "../gea.h"
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif // __cplusplus
22
23 //--------------------------------------------------------------------------
24
25 typedef struct
26 {
27 pdword hash2; // Смещения последних совпадений длины 2
28
29 pdword hash[3]; // Хэш-цепочка совпадений длины
30 pdword next[3]; // Цепочки вхождений от первого к последнему
31 dword top[3]; // Текущая вершина 0 == match->next
32 dword hsize[3]; // Размер хэш-таблицы
33 dword size[3]; // Размер окна
34 dword limit[3]; // Глубина поиска в хэш-цепочке
35 dword count; // Количество хэш-таблиц
36 pbyte start; // Начало
37 pbyte end; // Конец
38 } smatch, * psmatch;
39
40 //--------------------------------------------------------------------------
41
42 dword STDCALL match_new( psmatch match, pbyte start, pbyte end, dword level );
43 void STDCALL match_destroy( psmatch match );
44 dword STACKAPI match_find( psmatch match, pbyte input, pdword retoff );
45 dword STACKAPI match_update( psmatch match, pbyte input );
46
47 //--------------------------------------------------------------------------
48
49 #ifdef __cplusplus
50 }
51 #endif // __cplusplus
52
53 #endif // _MATCH_
54
55