65 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*  $Id$
 | ||
|  | 
 | ||
|  |     Part of the SWI-Prolog Semweb package | ||
|  | 
 | ||
|  |     Author:        Jan Wielemaker | ||
|  |     E-mail:        wielemak@science.uva.nl | ||
|  |     WWW:           http://www.swi-prolog.org
 | ||
|  |     Copyright (C): 2006, University of Amsterdam | ||
|  | 
 | ||
|  |     This program is free software; you can redistribute it and/or | ||
|  |     modify it under the terms of the GNU General Public License | ||
|  |     as published by the Free Software Foundation; either version 2 | ||
|  |     of the License, or (at your option) any later version. | ||
|  | 
 | ||
|  |     This program is distributed in the hope that it will be useful, | ||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||
|  |     GNU General Public License for more details. | ||
|  | 
 | ||
|  |     You should have received a copy of the GNU Lesser General Public | ||
|  |     License along with this library; if not, write to the Free Software | ||
|  |     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||
|  | */ | ||
|  | 
 | ||
|  | #ifndef ATOM_H_INCLUDED
 | ||
|  | #define ATOM_H_INCLUDED
 | ||
|  | 
 | ||
|  | #define MAX_LIKE_CHOICES	100	/* max *'s in like pattern */
 | ||
|  | 
 | ||
|  | #define STR_MATCH_CASE		0x0	/* Default: perfect match */
 | ||
|  | #define STR_MATCH_PLAIN		0x1	/* Same, also match qualifier */
 | ||
|  | #define	STR_MATCH_EXACT		0x2	/* case-insensitive */
 | ||
|  | #define	STR_MATCH_SUBSTRING	0x3	/* substring */
 | ||
|  | #define	STR_MATCH_WORD		0x4	/* whole word */
 | ||
|  | #define	STR_MATCH_PREFIX	0x5	/* prefix */
 | ||
|  | #define STR_MATCH_LIKE		0x6	/* SeRQL *like* match */
 | ||
|  | 					/* MAX: 0x7 (3 bits in triple) */ | ||
|  | 
 | ||
|  | typedef unsigned char charA; | ||
|  | typedef wchar_t       charW; | ||
|  | 
 | ||
|  | typedef struct text | ||
|  | { const charA *a; | ||
|  |   const charW *w; | ||
|  |   size_t length; | ||
|  | } text; | ||
|  | 
 | ||
|  | 
 | ||
|  | typedef struct atom_info | ||
|  | { atom_t	handle; | ||
|  |   text		text; | ||
|  |   int		resolved; | ||
|  |   int		rc;			/* TRUE if text atom */ | ||
|  | } atom_info; | ||
|  | 
 | ||
|  | 
 | ||
|  | int	cmp_atoms(atom_t a1, atom_t a2); | ||
|  | int	cmp_atom_info(atom_info *a1, atom_t a2); | ||
|  | atom_t	first_atom(atom_t a, int match); | ||
|  | int	match_atoms(int how, atom_t search, atom_t label); | ||
|  | unsigned int atom_hash_case(atom_t a); | ||
|  | int	atom_lang_matches(atom_t lang, atom_t pattern); | ||
|  | 
 | ||
|  | #endif /*ATOM_H_INCLUDED*/
 |