| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2020-04-16 03:42:30 +00:00
										 |  |  |     Copyright (c) 2006-2020 Chung, Hyung-Hwan. All rights reserved. | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _HAWK_ECS_H_
 | 
					
						
							|  |  |  | #define _HAWK_ECS_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <hawk-cmn.h>
 | 
					
						
							|  |  |  | #include <stdarg.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** string pointer and length as a aggregate */ | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | #define HAWK_BECS_BCS(s)      (&((s)->val))
 | 
					
						
							|  |  |  | #define HAWK_BECS_CS(s)       (&((s)->val))
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | /** string length */ | 
					
						
							|  |  |  | #define HAWK_BECS_LEN(s)      ((s)->val.len)
 | 
					
						
							|  |  |  | /** string pointer */ | 
					
						
							|  |  |  | #define HAWK_BECS_PTR(s)      ((s)->val.ptr)
 | 
					
						
							|  |  |  | /** pointer to a particular position */ | 
					
						
							|  |  |  | #define HAWK_BECS_CPTR(s,idx) (&(s)->val.ptr[idx])
 | 
					
						
							|  |  |  | /** string capacity */ | 
					
						
							|  |  |  | #define HAWK_BECS_CAPA(s)     ((s)->capa)
 | 
					
						
							|  |  |  | /** character at the given position */ | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | #define HAWK_BECS_CHAR(s,idx) ((s)->val.ptr[idx])
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | /**< last character. unsafe if length <= 0 */ | 
					
						
							|  |  |  | #define HAWK_BECS_LASTCHAR(s) ((s)->val.ptr[(s)->val.len-1])
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** string pointer and length as a aggregate */ | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | #define HAWK_UECS_UCS(s)      (&((s)->val))
 | 
					
						
							|  |  |  | #define HAWK_UECS_CS(s)       (&((s)->val))
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | /** string length */ | 
					
						
							|  |  |  | #define HAWK_UECS_LEN(s)      ((s)->val.len)
 | 
					
						
							|  |  |  | /** string pointer */ | 
					
						
							|  |  |  | #define HAWK_UECS_PTR(s)      ((s)->val.ptr)
 | 
					
						
							|  |  |  | /** pointer to a particular position */ | 
					
						
							|  |  |  | #define HAWK_UECS_CPTR(s,idx) (&(s)->val.ptr[idx])
 | 
					
						
							|  |  |  | /** string capacity */ | 
					
						
							|  |  |  | #define HAWK_UECS_CAPA(s)     ((s)->capa)
 | 
					
						
							|  |  |  | /** character at the given position */ | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | #define HAWK_UECS_CHAR(s,idx) ((s)->val.ptr[idx])
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | /**< last character. unsafe if length <= 0 */ | 
					
						
							|  |  |  | #define HAWK_UECS_LASTCHAR(s) ((s)->val.ptr[(s)->val.len-1])
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct hawk_becs_t hawk_becs_t; | 
					
						
							|  |  |  | typedef struct hawk_uecs_t hawk_uecs_t; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef hawk_oow_t (*hawk_becs_sizer_t) ( | 
					
						
							|  |  |  | 	hawk_becs_t* data, | 
					
						
							|  |  |  | 	hawk_oow_t   hint | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef hawk_oow_t (*hawk_uecs_sizer_t) ( | 
					
						
							|  |  |  | 	hawk_uecs_t* data, | 
					
						
							|  |  |  | 	hawk_oow_t   hint | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(HAWK_OOCH_IS_UCH)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_OOCS(s)     HAWK_UECS_UCS(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_LEN(s)      HAWK_UECS_LEN(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_PTR(s)      HAWK_UECS_PTR(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_CPTR(s,idx) HAWK_UECS_CPTR(s,idx)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_CAPA(s)     HAWK_UECS_CAPA(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_CHAR(s,idx) HAWK_UECS_CHAR(s,idx)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_LASTCHAR(s) HAWK_UECS_LASTCHAR(s)
 | 
					
						
							|  |  |  | #	define hawk_ooecs_t           hawk_uecs_t
 | 
					
						
							|  |  |  | #	define hawk_ooecs_sizer_t     hawk_uecs_sizer_t
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_OOCS(s)     HAWK_BECS_BCS(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_LEN(s)      HAWK_BECS_LEN(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_PTR(s)      HAWK_BECS_PTR(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_CPTR(s,idx) HAWK_BECS_CPTR(s,idx)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_CAPA(s)     HAWK_BECS_CAPA(s)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_CHAR(s,idx) HAWK_BECS_CHAR(s,idx)
 | 
					
						
							|  |  |  | #	define HAWK_OOECS_LASTCHAR(s) HAWK_BECS_LASTCHAR(s)
 | 
					
						
							|  |  |  | #	define hawk_ooecs_t           hawk_becs_t
 | 
					
						
							|  |  |  | #	define hawk_ooecs_sizer_t     hawk_becs_sizer_t
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_t type defines a dynamically resizable multi-byte string. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct hawk_becs_t | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-12-14 06:11:30 +00:00
										 |  |  | 	hawk_gem_t*       gem; | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	hawk_becs_sizer_t sizer; /**< buffer resizer function */ | 
					
						
							|  |  |  | 	hawk_bcs_t        val;   /**< buffer/string pointer and lengh */ | 
					
						
							|  |  |  | 	hawk_oow_t        capa;  /**< buffer capacity */ | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_t type defines a dynamically resizable wide-character string. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct hawk_uecs_t | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-12-14 06:11:30 +00:00
										 |  |  | 	hawk_gem_t*       gem; | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	hawk_uecs_sizer_t sizer; /**< buffer resizer function */ | 
					
						
							|  |  |  | 	hawk_ucs_t        val;   /**< buffer/string pointer and lengh */ | 
					
						
							|  |  |  | 	hawk_oow_t        capa;  /**< buffer capacity */ | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(__cplusplus)
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_open() function creates a dynamically resizable multibyte string. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT hawk_becs_t* hawk_becs_open ( | 
					
						
							| 
									
										
										
										
											2019-12-14 06:11:30 +00:00
										 |  |  | 	hawk_gem_t* gem, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	hawk_oow_t  xtnsize, | 
					
						
							|  |  |  | 	hawk_oow_t  capa | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_becs_close ( | 
					
						
							|  |  |  | 	hawk_becs_t* becs | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_init() function initializes a dynamically resizable string | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  |  * If the parameter capa is 0, it doesn't allocate the internal buffer | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  |  * in advance and always succeeds. | 
					
						
							|  |  |  |  * \return 0 on success, -1 on failure. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT int hawk_becs_init ( | 
					
						
							|  |  |  | 	hawk_becs_t*  becs, | 
					
						
							| 
									
										
										
										
											2019-12-14 06:11:30 +00:00
										 |  |  | 	hawk_gem_t*   gem, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	hawk_oow_t    capa | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_fini() function finalizes a dynamically resizable string. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_becs_fini ( | 
					
						
							|  |  |  | 	hawk_becs_t* becs | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE void* hawk_becs_getxtn (hawk_becs_t* becs) { return (void*)(becs + 1); } | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-13 06:15:03 +00:00
										 |  |  | #define hawk_becs_getxtn(becs) ((void*)((hawk_becs_t*)(becs) + 1))
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_yield() function assigns the buffer to an variable of the | 
					
						
							|  |  |  |  * #hawk_bcs_t type and recreate a new buffer of the \a new_capa capacity. | 
					
						
							|  |  |  |  * The function fails if it fails to allocate a new buffer. | 
					
						
							|  |  |  |  * \return 0 on success, and -1 on failure. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT int hawk_becs_yield ( | 
					
						
							|  |  |  | 	hawk_becs_t*  becs,    /**< string */ | 
					
						
							|  |  |  | 	hawk_bcs_t*   buf,    /**< buffer pointer */ | 
					
						
							|  |  |  | 	hawk_oow_t    newcapa /**< new capacity */ | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_bch_t* hawk_becs_yieldptr ( | 
					
						
							|  |  |  | 	hawk_becs_t*   becs,    /**< string */ | 
					
						
							|  |  |  | 	hawk_oow_t     newcapa /**< new capacity */ | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_getsizer() function gets the sizer. | 
					
						
							|  |  |  |  * \return sizer function set or HAWK_NULL if no sizer is set. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE hawk_becs_sizer_t hawk_becs_getsizer (hawk_becs_t* becs) { return becs->sizer; } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_becs_getsizer(becs) ((becs)->sizer)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_setsizer() function specify a new sizer for a dynamic string. | 
					
						
							|  |  |  |  * With no sizer specified, the dynamic string doubles the current buffer | 
					
						
							|  |  |  |  * when it needs to increase its size. The sizer function is passed a dynamic | 
					
						
							|  |  |  |  * string and the minimum capacity required to hold data after resizing. | 
					
						
							|  |  |  |  * The string is truncated if the sizer function returns a smaller number | 
					
						
							|  |  |  |  * than the hint passed. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE void hawk_becs_setsizer (hawk_becs_t* becs, hawk_becs_sizer_t sizer) { becs->sizer = sizer; } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_becs_setsizer(becs,sizerfn) ((becs)->sizer = (sizerfn))
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_getcapa() function returns the current capacity. | 
					
						
							|  |  |  |  * You may use HAWK_STR_CAPA(str) macro for performance sake. | 
					
						
							|  |  |  |  * \return current capacity in number of characters. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE hawk_oow_t hawk_becs_getcapa (hawk_becs_t* becs) { return HAWK_BECS_CAPA(becs); } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_becs_getcapa(becs) HAWK_BECS_CAPA(becs)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_setcapa() function sets the new capacity. If the new capacity | 
					
						
							|  |  |  |  * is smaller than the old, the overflowing characters are removed from | 
					
						
							|  |  |  |  * from the buffer. | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  |  * \return (hawk_oow_t)-1 on failure, new capacity on success | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_setcapa ( | 
					
						
							|  |  |  | 	hawk_becs_t* becs, | 
					
						
							|  |  |  | 	hawk_oow_t   capa | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_getlen() function return the string length. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE hawk_oow_t hawk_becs_getlen (hawk_becs_t* becs) { return HAWK_BECS_LEN(becs); } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_becs_getlen(becs) HAWK_BECS_LEN(becs)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_setlen() function changes the string length. | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  |  * \return (hawk_oow_t)-1 on failure, new length on success | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_setlen ( | 
					
						
							|  |  |  | 	hawk_becs_t* becs, | 
					
						
							|  |  |  | 	hawk_oow_t   len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_clear() funtion deletes all characters in a string and sets | 
					
						
							|  |  |  |  * the length to 0. It doesn't resize the internal buffer. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_becs_clear ( | 
					
						
							|  |  |  | 	hawk_becs_t* becs | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_becs_swap() function exchanges the pointers to a buffer between | 
					
						
							|  |  |  |  * two strings. It updates the length and the capacity accordingly. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_becs_swap ( | 
					
						
							|  |  |  | 	hawk_becs_t* becs1, | 
					
						
							|  |  |  | 	hawk_becs_t* becs2 | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_cpy ( | 
					
						
							|  |  |  | 	hawk_becs_t*      becs, | 
					
						
							|  |  |  | 	const hawk_bch_t* s | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_ncpy ( | 
					
						
							|  |  |  | 	hawk_becs_t*       becs, | 
					
						
							|  |  |  | 	const hawk_bch_t*  s, | 
					
						
							|  |  |  | 	hawk_oow_t         len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_cat ( | 
					
						
							|  |  |  | 	hawk_becs_t*      becs, | 
					
						
							|  |  |  | 	const hawk_bch_t* s | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_ncat ( | 
					
						
							|  |  |  | 	hawk_becs_t*      becs, | 
					
						
							|  |  |  | 	const hawk_bch_t* s, | 
					
						
							|  |  |  | 	hawk_oow_t        len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_nrcat ( | 
					
						
							|  |  |  | 	hawk_becs_t*      becs, | 
					
						
							|  |  |  | 	const hawk_bch_t* s, | 
					
						
							|  |  |  | 	hawk_oow_t        len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_ccat ( | 
					
						
							|  |  |  | 	hawk_becs_t*  becs, | 
					
						
							|  |  |  | 	hawk_bch_t    c | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_nccat ( | 
					
						
							|  |  |  | 	hawk_becs_t*  becs, | 
					
						
							|  |  |  | 	hawk_bch_t    c, | 
					
						
							|  |  |  | 	hawk_oow_t    len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_del ( | 
					
						
							|  |  |  | 	hawk_becs_t* becs, | 
					
						
							|  |  |  | 	hawk_oow_t   index, | 
					
						
							|  |  |  | 	hawk_oow_t   size | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_amend ( | 
					
						
							|  |  |  | 	hawk_becs_t*      becs, | 
					
						
							|  |  |  | 	hawk_oow_t        index, | 
					
						
							|  |  |  | 	hawk_oow_t        size, | 
					
						
							|  |  |  | 	const hawk_bch_t* repl | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_vfcat ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_becs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_bch_t*  fmt, | 
					
						
							|  |  |  | 	va_list            ap | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_fcat ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_becs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_bch_t*  fmt, | 
					
						
							|  |  |  | 	... | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_vfmt ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_becs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_bch_t*  fmt, | 
					
						
							|  |  |  | 	va_list            ap | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_fmt ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_becs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_bch_t*  fmt, | 
					
						
							|  |  |  | 	... | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-03 21:53:33 +09:00
										 |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_compact ( | 
					
						
							|  |  |  | 	hawk_becs_t*       str | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_trim ( | 
					
						
							|  |  |  | 	hawk_becs_t*       str, | 
					
						
							|  |  |  | 	int                flags | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | /* ------------------------------------------------------------------------ */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_open() function creates a dynamically resizable multibyte string. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT hawk_uecs_t* hawk_uecs_open ( | 
					
						
							| 
									
										
										
										
											2019-12-14 06:11:30 +00:00
										 |  |  | 	hawk_gem_t* gem, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	hawk_oow_t  xtnsize, | 
					
						
							|  |  |  | 	hawk_oow_t  capa | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_uecs_close ( | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_init() function initializes a dynamically resizable string | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  |  * If the parameter capa is 0, it doesn't allocate the internal buffer | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  |  * in advance and always succeeds. | 
					
						
							|  |  |  |  * \return 0 on success, -1 on failure. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT int hawk_uecs_init ( | 
					
						
							|  |  |  | 	hawk_uecs_t*  uecs, | 
					
						
							| 
									
										
										
										
											2019-12-14 06:11:30 +00:00
										 |  |  | 	hawk_gem_t*   gem, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	hawk_oow_t    capa | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_fini() function finalizes a dynamically resizable string. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_uecs_fini ( | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE void* hawk_uecs_getxtn (hawk_uecs_t* uecs) { return (void*)(uecs + 1); } | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2020-04-13 06:15:03 +00:00
										 |  |  | #define hawk_uecs_getxtn(uecs) ((void*)((hawk_uecs_t*)(uecs) + 1))
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_yield() function assigns the buffer to an variable of the | 
					
						
							|  |  |  |  * #hawk_ucs_t type and recreate a new buffer of the \a new_capa capacity. | 
					
						
							|  |  |  |  * The function fails if it fails to allocate a new buffer. | 
					
						
							|  |  |  |  * \return 0 on success, and -1 on failure. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT int hawk_uecs_yield ( | 
					
						
							|  |  |  | 	hawk_uecs_t*   uecs,    /**< string */ | 
					
						
							|  |  |  | 	hawk_ucs_t*    buf,    /**< buffer pointer */ | 
					
						
							|  |  |  | 	hawk_oow_t     newcapa /**< new capacity */ | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_uch_t* hawk_uecs_yieldptr ( | 
					
						
							|  |  |  | 	hawk_uecs_t*   uecs,    /**< string */ | 
					
						
							|  |  |  | 	hawk_oow_t     newcapa /**< new capacity */ | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_getsizer() function gets the sizer. | 
					
						
							|  |  |  |  * \return sizer function set or HAWK_NULL if no sizer is set. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE hawk_uecs_sizer_t hawk_uecs_getsizer (hawk_uecs_t* uecs) { return uecs->sizer; } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_uecs_getsizer(uecs) ((uecs)->sizer)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_setsizer() function specify a new sizer for a dynamic string. | 
					
						
							|  |  |  |  * With no sizer specified, the dynamic string doubles the current buffer | 
					
						
							|  |  |  |  * when it needs to increase its size. The sizer function is passed a dynamic | 
					
						
							|  |  |  |  * string and the minimum capacity required to hold data after resizing. | 
					
						
							|  |  |  |  * The string is truncated if the sizer function returns a smaller number | 
					
						
							|  |  |  |  * than the hint passed. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE void hawk_uecs_setsizer (hawk_uecs_t* uecs, hawk_uecs_sizer_t sizer) { uecs->sizer = sizer; } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_uecs_setsizer(uecs,sizerfn) ((uecs)->sizer = (sizerfn))
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_getcapa() function returns the current capacity. | 
					
						
							|  |  |  |  * You may use HAWK_STR_CAPA(str) macro for performance sake. | 
					
						
							|  |  |  |  * \return current capacity in number of characters. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE hawk_oow_t hawk_uecs_getcapa (hawk_uecs_t* uecs) { return HAWK_UECS_CAPA(uecs); } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_uecs_getcapa(uecs) HAWK_UECS_CAPA(uecs)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_setcapa() function sets the new capacity. If the new capacity | 
					
						
							|  |  |  |  * is smaller than the old, the overflowing characters are removed from | 
					
						
							|  |  |  |  * from the buffer. | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  |  * \return (hawk_oow_t)-1 on failure, new capacity on success | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_setcapa ( | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs, | 
					
						
							|  |  |  | 	hawk_oow_t   capa | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_getlen() function return the string length. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(HAWK_HAVE_INLINE)
 | 
					
						
							|  |  |  | static HAWK_INLINE hawk_oow_t hawk_uecs_getlen (hawk_uecs_t* uecs) { return HAWK_UECS_LEN(uecs); } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_uecs_getlen(uecs) HAWK_UECS_LEN(uecs)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_setlen() function changes the string length. | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  |  * \return (hawk_oow_t)-1 on failure, new length on success | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_setlen ( | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs, | 
					
						
							|  |  |  | 	hawk_oow_t   len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_clear() funtion deletes all characters in a string and sets | 
					
						
							|  |  |  |  * the length to 0. It doesn't resize the internal buffer. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_uecs_clear ( | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * The hawk_uecs_swap() function exchanges the pointers to a buffer between | 
					
						
							|  |  |  |  * two strings. It updates the length and the capacity accordingly. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | HAWK_EXPORT void hawk_uecs_swap ( | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs1, | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs2 | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_cpy ( | 
					
						
							|  |  |  | 	hawk_uecs_t*      uecs, | 
					
						
							|  |  |  | 	const hawk_uch_t* s | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_ncpy ( | 
					
						
							|  |  |  | 	hawk_uecs_t*      uecs, | 
					
						
							|  |  |  | 	const hawk_uch_t* s, | 
					
						
							|  |  |  | 	hawk_oow_t        len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_cat ( | 
					
						
							|  |  |  | 	hawk_uecs_t*      uecs, | 
					
						
							|  |  |  | 	const hawk_uch_t* s | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_ncat ( | 
					
						
							|  |  |  | 	hawk_uecs_t*      uecs, | 
					
						
							|  |  |  | 	const hawk_uch_t* s, | 
					
						
							|  |  |  | 	hawk_oow_t        len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_nrcat ( | 
					
						
							|  |  |  | 	hawk_uecs_t*      uecs, | 
					
						
							|  |  |  | 	const hawk_uch_t* s, | 
					
						
							|  |  |  | 	hawk_oow_t        len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_ccat ( | 
					
						
							|  |  |  | 	hawk_uecs_t*  uecs, | 
					
						
							|  |  |  | 	hawk_uch_t    c | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_nccat ( | 
					
						
							|  |  |  | 	hawk_uecs_t*  uecs, | 
					
						
							|  |  |  | 	hawk_uch_t    c, | 
					
						
							|  |  |  | 	hawk_oow_t    len | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_del ( | 
					
						
							|  |  |  | 	hawk_uecs_t* uecs, | 
					
						
							|  |  |  | 	hawk_oow_t   index, | 
					
						
							|  |  |  | 	hawk_oow_t   size | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_amend ( | 
					
						
							|  |  |  | 	hawk_uecs_t*       uecs, | 
					
						
							|  |  |  | 	hawk_oow_t         index, | 
					
						
							|  |  |  | 	hawk_oow_t         size, | 
					
						
							|  |  |  | 	const hawk_uch_t*  repl | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_vfcat ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_uecs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_uch_t*  fmt, | 
					
						
							|  |  |  | 	va_list            ap | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_fcat ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_uecs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_uch_t*  fmt, | 
					
						
							|  |  |  | 	... | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_vfmt ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_uecs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_uch_t*  fmt, | 
					
						
							|  |  |  | 	va_list            ap | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_fmt ( | 
					
						
							| 
									
										
										
										
											2024-05-02 22:47:30 +09:00
										 |  |  | 	hawk_uecs_t*       str, | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | 	const hawk_uch_t*  fmt, | 
					
						
							|  |  |  | 	... | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-03 21:53:33 +09:00
										 |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_compact ( | 
					
						
							|  |  |  | 	hawk_uecs_t*       str | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_trim ( | 
					
						
							|  |  |  | 	hawk_uecs_t*       str, | 
					
						
							|  |  |  | 	int                flags | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | #if defined(HAWK_OOCH_IS_UCH)
 | 
					
						
							|  |  |  | #	define hawk_ooecs_open hawk_uecs_open
 | 
					
						
							|  |  |  | #	define hawk_ooecs_close hawk_uecs_close
 | 
					
						
							|  |  |  | #	define hawk_ooecs_init hawk_uecs_init
 | 
					
						
							|  |  |  | #	define hawk_ooecs_fini hawk_uecs_fini
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getxtn hawk_uecs_getxtn
 | 
					
						
							|  |  |  | #	define hawk_ooecs_yield hawk_uecs_yield
 | 
					
						
							|  |  |  | #	define hawk_ooecs_yieldptr hawk_uecs_yieldptr
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getsizer hawk_uecs_getsizer
 | 
					
						
							|  |  |  | #	define hawk_ooecs_setsizer hawk_uecs_setsizer
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getcapa hawk_uecs_getcapa
 | 
					
						
							|  |  |  | #	define hawk_ooecs_setcapa hawk_uecs_setcapa
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getlen hawk_uecs_getlen
 | 
					
						
							|  |  |  | #	define hawk_ooecs_setlen hawk_uecs_setlen
 | 
					
						
							|  |  |  | #	define hawk_ooecs_clear hawk_uecs_clear
 | 
					
						
							|  |  |  | #	define hawk_ooecs_swap hawk_uecs_swap
 | 
					
						
							|  |  |  | #	define hawk_ooecs_cpy hawk_uecs_cpy
 | 
					
						
							|  |  |  | #	define hawk_ooecs_ncpy hawk_uecs_ncpy
 | 
					
						
							|  |  |  | #	define hawk_ooecs_cat hawk_uecs_cat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_ncat hawk_uecs_ncat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_nrcat hawk_uecs_nrcat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_ccat hawk_uecs_ccat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_nccat hawk_uecs_nccat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_del hawk_uecs_del
 | 
					
						
							|  |  |  | #	define hawk_ooecs_amend hawk_uecs_amend
 | 
					
						
							|  |  |  | #	define hawk_ooecs_vfcat hawk_uecs_vfcat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_fcat hawk_uecs_fcat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_vfmt hawk_uecs_vfmt
 | 
					
						
							|  |  |  | #	define hawk_ooecs_fmt hawk_uecs_fmt
 | 
					
						
							| 
									
										
										
										
											2025-06-03 21:53:33 +09:00
										 |  |  | #	define hawk_ooecs_compact hawk_uecs_compact
 | 
					
						
							|  |  |  | #	define hawk_ooecs_trim hawk_uecs_trim
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | #else
 | 
					
						
							|  |  |  | #	define hawk_ooecs_open hawk_becs_open
 | 
					
						
							|  |  |  | #	define hawk_ooecs_close hawk_becs_close
 | 
					
						
							|  |  |  | #	define hawk_ooecs_init hawk_becs_init
 | 
					
						
							|  |  |  | #	define hawk_ooecs_fini hawk_becs_fini
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getxtn hawk_becs_getxtn
 | 
					
						
							|  |  |  | #	define hawk_ooecs_yield hawk_becs_yield
 | 
					
						
							|  |  |  | #	define hawk_ooecs_yieldptr hawk_becs_yieldptr
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getsizer hawk_becs_getsizer
 | 
					
						
							|  |  |  | #	define hawk_ooecs_setsizer hawk_becs_setsizer
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getcapa hawk_becs_getcapa
 | 
					
						
							|  |  |  | #	define hawk_ooecs_setcapa hawk_becs_setcapa
 | 
					
						
							|  |  |  | #	define hawk_ooecs_getlen hawk_becs_getlen
 | 
					
						
							|  |  |  | #	define hawk_ooecs_setlen hawk_becs_setlen
 | 
					
						
							|  |  |  | #	define hawk_ooecs_clear hawk_becs_clear
 | 
					
						
							|  |  |  | #	define hawk_ooecs_swap hawk_becs_swap
 | 
					
						
							|  |  |  | #	define hawk_ooecs_cpy hawk_becs_cpy
 | 
					
						
							|  |  |  | #	define hawk_ooecs_ncpy hawk_becs_ncpy
 | 
					
						
							|  |  |  | #	define hawk_ooecs_cat hawk_becs_cat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_ncat hawk_becs_ncat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_nrcat hawk_becs_nrcat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_ccat hawk_becs_ccat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_nccat hawk_becs_nccat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_del hawk_becs_del
 | 
					
						
							| 
									
										
										
										
											2020-04-30 15:56:15 +00:00
										 |  |  | #	define hawk_ooecs_amend hawk_becs_amend
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | #	define hawk_ooecs_vfcat hawk_becs_vfcat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_fcat hawk_becs_fcat
 | 
					
						
							|  |  |  | #	define hawk_ooecs_vfmt hawk_becs_vfmt
 | 
					
						
							|  |  |  | #	define hawk_ooecs_fmt hawk_becs_fmt
 | 
					
						
							| 
									
										
										
										
											2025-06-03 21:53:33 +09:00
										 |  |  | #	define hawk_ooecs_compact hawk_becs_compact
 | 
					
						
							|  |  |  | #	define hawk_ooecs_trim hawk_becs_trim
 | 
					
						
							| 
									
										
										
										
											2019-12-13 04:29:58 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_becs_ncatuchars ( | 
					
						
							|  |  |  | 	hawk_becs_t*       str, | 
					
						
							|  |  |  | 	const hawk_uch_t*  s, | 
					
						
							|  |  |  | 	hawk_oow_t         len, | 
					
						
							|  |  |  | 	hawk_cmgr_t*       cmgr | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HAWK_EXPORT hawk_oow_t hawk_uecs_ncatbchars ( | 
					
						
							|  |  |  | 	hawk_uecs_t*       str, | 
					
						
							|  |  |  | 	const hawk_bch_t*  s, | 
					
						
							|  |  |  | 	hawk_oow_t         len, | 
					
						
							|  |  |  | 	hawk_cmgr_t*       cmgr, | 
					
						
							|  |  |  | 	int                all | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(__cplusplus)
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |