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)
 |