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