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*/
 |