265 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			265 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
|     Copyright (c) 2006-2020 Chung, Hyung-Hwan. All rights reserved.
 | |
| 
 | |
|     Redistribution and use in source and binary forms, with or without
 | |
|     modification, are permitted provided that the following conditions
 | |
|     are met:
 | |
|     1. Redistributions of source code must retain the above copyright
 | |
|        notice, this list of conditions and the following disclaimer.
 | |
|     2. Redistributions in binary form must reproduce the above copyright
 | |
|        notice, this list of conditions and the following disclaimer in the
 | |
|        documentation and/or other materials provided with the distribution.
 | |
| 
 | |
|     THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
 | |
|     IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 | |
|     OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 | |
|     IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 | |
|     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 | |
|     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | |
|     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | |
|     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
|     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 | |
|     THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|  */
 | |
| 
 | |
| /* 
 | |
|  * Do NOT edit utl-str.c. Edit utl-str.c.m4 instead.
 | |
|  * 
 | |
|  * Generate utl-str.c with m4
 | |
|  *   $ m4 utl-str.c.m4 > utl-str.c  
 | |
|  */
 | |
| 
 | |
| #include "hawk-prv.h"
 | |
| #include <hawk-chr.h>
 | |
| 
 | |
| static int match_uch_class (const hawk_uch_t* pp, hawk_uch_t sc, int* matched)
 | |
| {
 | |
| 	if (hawk_comp_ucstr_bcstr_limited(pp, "[:upper:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_upper(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:lower:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_lower(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:alpha:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_alpha(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:digit:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_digit(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:xdigit:]", 10, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_xdigit(sc);
 | |
| 		return 10;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:alnum:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_alnum(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:space:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_space(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:print:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_print(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:graph:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_graph(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:cntrl:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_cntrl(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_ucstr_bcstr_limited(pp, "[:punct:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_uch_punct(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static int match_bch_class (const hawk_bch_t* pp, hawk_bch_t sc, int* matched)
 | |
| {
 | |
| 	if (hawk_comp_bcstr_limited(pp, "[:upper:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_upper(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:lower:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_lower(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:alpha:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_alpha(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:digit:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_digit(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:xdigit:]", 10, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_xdigit(sc);
 | |
| 		return 10;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:alnum:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_alnum(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:space:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_space(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:print:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_print(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:graph:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_graph(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:cntrl:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_cntrl(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 	else if (hawk_comp_bcstr_limited(pp, "[:punct:]", 9, 0) == 0) 
 | |
| 	{
 | |
| 		*matched = hawk_is_bch_punct(sc);
 | |
| 		return 9;
 | |
| 	}
 | |
| 
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| dnl
 | |
| dnl ---------------------------------------------------------------------------
 | |
| include(`utl-str.m4')dnl
 | |
| dnl ---------------------------------------------------------------------------
 | |
| dnl --
 | |
| fn_comp_chars(hawk_comp_uchars, hawk_uch_t, hawk_uchu_t, hawk_to_uch_lower)
 | |
| fn_comp_chars(hawk_comp_bchars, hawk_bch_t, hawk_bchu_t, hawk_to_bch_lower)
 | |
| dnl --
 | |
| fn_comp_cstr(hawk_comp_ucstr, hawk_uch_t, hawk_uchu_t, hawk_to_uch_lower)
 | |
| fn_comp_cstr(hawk_comp_bcstr, hawk_bch_t, hawk_bchu_t, hawk_to_bch_lower)
 | |
| dnl --
 | |
| fn_comp_cstr_limited(hawk_comp_ucstr_limited, hawk_uch_t, hawk_uchu_t, hawk_to_uch_lower)
 | |
| fn_comp_cstr_limited(hawk_comp_bcstr_limited, hawk_bch_t, hawk_bchu_t, hawk_to_bch_lower)
 | |
| dnl --
 | |
| fn_comp_chars_cstr(hawk_comp_uchars_ucstr, hawk_uch_t, hawk_uchu_t, hawk_to_uch_lower)
 | |
| fn_comp_chars_cstr(hawk_comp_bchars_bcstr, hawk_bch_t, hawk_bchu_t, hawk_to_bch_lower)
 | |
| dnl --
 | |
| fn_concat_chars_to_cstr(hawk_concat_uchars_to_ucstr, hawk_uch_t, hawk_count_ucstr)
 | |
| fn_concat_chars_to_cstr(hawk_concat_bchars_to_bcstr, hawk_bch_t, hawk_count_bcstr)
 | |
| dnl --
 | |
| fn_concat_cstr(hawk_concat_ucstr, hawk_uch_t, hawk_count_ucstr)
 | |
| fn_concat_cstr(hawk_concat_bcstr, hawk_bch_t, hawk_count_bcstr)
 | |
| dnl --
 | |
| fn_copy_chars(hawk_copy_uchars, hawk_uch_t)
 | |
| fn_copy_chars(hawk_copy_bchars, hawk_bch_t)
 | |
| dnl --
 | |
| fn_copy_chars_to_cstr(hawk_copy_uchars_to_ucstr, hawk_uch_t)
 | |
| fn_copy_chars_to_cstr(hawk_copy_bchars_to_bcstr, hawk_bch_t)
 | |
| dnl --
 | |
| fn_copy_chars_to_cstr_unlimited(hawk_copy_uchars_to_ucstr_unlimited, hawk_uch_t)
 | |
| fn_copy_chars_to_cstr_unlimited(hawk_copy_bchars_to_bcstr_unlimited, hawk_bch_t)
 | |
| dnl --
 | |
| fn_copy_cstr_to_chars(hawk_copy_ucstr_to_uchars, hawk_uch_t)
 | |
| fn_copy_cstr_to_chars(hawk_copy_bcstr_to_bchars, hawk_bch_t)
 | |
| dnl --
 | |
| fn_copy_cstr(hawk_copy_ucstr, hawk_uch_t)
 | |
| fn_copy_cstr(hawk_copy_bcstr, hawk_bch_t)
 | |
| dnl --
 | |
| fn_copy_cstr_unlimited(hawk_copy_ucstr_unlimited, hawk_uch_t)
 | |
| fn_copy_cstr_unlimited(hawk_copy_bcstr_unlimited, hawk_bch_t)
 | |
| dnl --
 | |
| fn_copy_fmt_cstrs_to_cstr(hawk_copy_fmt_ucstrs_to_ucstr, hawk_uch_t)
 | |
| fn_copy_fmt_cstrs_to_cstr(hawk_copy_fmt_bcstrs_to_bcstr, hawk_bch_t)
 | |
| dnl --
 | |
| fn_copy_fmt_cses_to_cstr(hawk_copy_fmt_ucses_to_ucstr, hawk_uch_t, hawk_ucs_t)
 | |
| fn_copy_fmt_cses_to_cstr(hawk_copy_fmt_bcses_to_bcstr, hawk_bch_t, hawk_bcs_t)
 | |
| dnl --
 | |
| fn_count_cstr(hawk_count_ucstr, hawk_uch_t)
 | |
| fn_count_cstr(hawk_count_bcstr, hawk_bch_t)
 | |
| dnl --
 | |
| fn_count_cstr_limited(hawk_count_ucstr_limited, hawk_uch_t)
 | |
| fn_count_cstr_limited(hawk_count_bcstr_limited, hawk_bch_t)
 | |
| dnl --
 | |
| fn_equal_chars(hawk_equal_uchars, hawk_uch_t)
 | |
| fn_equal_chars(hawk_equal_bchars, hawk_bch_t)
 | |
| dnl --
 | |
| fn_fill_chars(hawk_fill_uchars, hawk_uch_t)
 | |
| fn_fill_chars(hawk_fill_bchars, hawk_bch_t)
 | |
| dnl --
 | |
| fn_find_char_in_chars(hawk_find_uchar_in_uchars, hawk_uch_t)
 | |
| fn_find_char_in_chars(hawk_find_bchar_in_bchars, hawk_bch_t)
 | |
| dnl --
 | |
| fn_rfind_char_in_chars(hawk_rfind_uchar_in_uchars, hawk_uch_t)
 | |
| fn_rfind_char_in_chars(hawk_rfind_bchar_in_bchars, hawk_bch_t)
 | |
| dnl --
 | |
| fn_find_char_in_cstr(hawk_find_uchar_in_ucstr, hawk_uch_t)
 | |
| fn_find_char_in_cstr(hawk_find_bchar_in_bcstr, hawk_bch_t)
 | |
| dnl --
 | |
| fn_rfind_char_in_cstr(hawk_rfind_uchar_in_ucstr, hawk_uch_t)
 | |
| fn_rfind_char_in_cstr(hawk_rfind_bchar_in_bcstr, hawk_bch_t)
 | |
| dnl --
 | |
| fn_find_chars_in_chars(hawk_find_uchars_in_uchars, hawk_uch_t, hawk_to_uch_lower)
 | |
| fn_find_chars_in_chars(hawk_find_bchars_in_bchars, hawk_bch_t, hawk_to_bch_lower)
 | |
| dnl --
 | |
| fn_rfind_chars_in_chars(hawk_rfind_uchars_in_uchars, hawk_uch_t, hawk_to_uch_lower)
 | |
| fn_rfind_chars_in_chars(hawk_rfind_bchars_in_bchars, hawk_bch_t, hawk_to_bch_lower)
 | |
| dnl --
 | |
| fn_compact_chars(hawk_compact_uchars, hawk_uch_t, hawk_is_uch_space)
 | |
| fn_compact_chars(hawk_compact_bchars, hawk_bch_t, hawk_is_bch_space)
 | |
| dnl --
 | |
| fn_rotate_chars(hawk_rotate_uchars, hawk_uch_t)
 | |
| fn_rotate_chars(hawk_rotate_bchars, hawk_bch_t)
 | |
| dnl --
 | |
| fn_trim_chars(hawk_trim_uchars, hawk_uch_t, hawk_is_uch_space, HAWK_TRIM_UCHARS)
 | |
| fn_trim_chars(hawk_trim_bchars, hawk_bch_t, hawk_is_bch_space, HAWK_TRIM_BCHARS)
 | |
| dnl --
 | |
| fn_split_cstr(hawk_split_ucstr, hawk_uch_t, hawk_is_uch_space, hawk_copy_ucstr_unlimited)
 | |
| fn_split_cstr(hawk_split_bcstr, hawk_bch_t, hawk_is_bch_space, hawk_copy_bcstr_unlimited)
 | |
| dnl --
 | |
| fn_tokenize_chars(hawk_tokenize_uchars, hawk_uch_t, hawk_ucs_t, hawk_is_uch_space, hawk_to_uch_lower)
 | |
| fn_tokenize_chars(hawk_tokenize_bchars, hawk_bch_t, hawk_bcs_t, hawk_is_bch_space, hawk_to_bch_lower)
 | |
| dnl --
 | |
| fn_byte_to_cstr(hawk_byte_to_ucstr, hawk_uch_t, HAWK_BYTE_TO_UCSTR)
 | |
| fn_byte_to_cstr(hawk_byte_to_bcstr, hawk_bch_t, HAWK_BYTE_TO_BCSTR)
 | |
| dnl --
 | |
| fn_int_to_cstr(hawk_int_to_ucstr, hawk_uch_t, hawk_int_t, hawk_count_ucstr)
 | |
| fn_int_to_cstr(hawk_int_to_bcstr, hawk_bch_t, hawk_int_t, hawk_count_bcstr)
 | |
| fn_int_to_cstr(hawk_uint_to_ucstr, hawk_uch_t, hawk_uint_t, hawk_count_ucstr)
 | |
| fn_int_to_cstr(hawk_uint_to_bcstr, hawk_bch_t, hawk_uint_t, hawk_count_bcstr)
 | |
| dnl --
 | |
| fn_chars_to_int(hawk_uchars_to_int, hawk_uch_t, hawk_int_t, hawk_is_uch_space, HAWK_UCHARS_TO_INTMAX)
 | |
| fn_chars_to_int(hawk_bchars_to_int, hawk_bch_t, hawk_int_t, hawk_is_bch_space, HAWK_BCHARS_TO_INTMAX)
 | |
| dnl --
 | |
| fn_chars_to_uint(hawk_uchars_to_uint, hawk_uch_t, hawk_uint_t, hawk_is_uch_space, HAWK_UCHARS_TO_UINTMAX)
 | |
| fn_chars_to_uint(hawk_bchars_to_uint, hawk_bch_t, hawk_uint_t, hawk_is_bch_space, HAWK_BCHARS_TO_UINTMAX)
 | |
| dnl --
 | |
| fn_fnmat(hawk_fnmat_uchars_i, hawk_uch_t, hawk_to_uch_lower, match_uch_class)
 | |
| fn_fnmat(hawk_fnmat_bchars_i, hawk_bch_t, hawk_to_bch_lower, match_bch_class)
 |