improved wide character type detection a bit
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-10-04 10:42:52 +09:00
parent 1692e9ac2b
commit 50e8499925
2 changed files with 15 additions and 12 deletions

View File

@ -32,15 +32,15 @@
HAWK_BEGIN_NAMESPACE(HAWK) HAWK_BEGIN_NAMESPACE(HAWK)
///////////////////////////////// /////////////////////////////////
struct xtn_t struct sed_xtn_t
{ {
Sed* sed; Sed* sed;
}; };
#if defined(HAWK_HAVE_INLINE) #if defined(HAWK_HAVE_INLINE)
static HAWK_INLINE xtn_t* GET_XTN(hawk_sed_t* sed) { return (xtn_t*)((hawk_uint8_t*)hawk_sed_getxtn(sed) - HAWK_SIZEOF(xtn_t)); } static HAWK_INLINE sed_xtn_t* GET_XTN(hawk_sed_t* sed) { return (sed_xtn_t*)((hawk_uint8_t*)hawk_sed_getxtn(sed) - HAWK_SIZEOF(sed_xtn_t)); }
#else #else
#define GET_XTN(sed) ((xtn_t*)((hawk_uint8_t*)hawk_sed_getxtn(sed) - HAWK_SIZEOF(xtn_t))) #define GET_XTN(sed) ((sed_xtn_t*)((hawk_uint8_t*)hawk_sed_getxtn(sed) - HAWK_SIZEOF(sed_xtn_t)))
#endif #endif
Sed::Sed (Mmgr* mmgr): Mmged(mmgr), sed(HAWK_NULL), dflerrstr(HAWK_NULL) Sed::Sed (Mmgr* mmgr): Mmged(mmgr), sed(HAWK_NULL), dflerrstr(HAWK_NULL)
@ -63,12 +63,12 @@ void Sed::setCmgr (hawk_cmgr_t* cmgr)
int Sed::open () int Sed::open ()
{ {
this->sed = hawk_sed_open(this->getMmgr(), HAWK_SIZEOF(xtn_t), this->getCmgr(), &this->errinf); this->sed = hawk_sed_open(this->getMmgr(), HAWK_SIZEOF(sed_xtn_t), this->getCmgr(), &this->errinf);
if (HAWK_UNLIKELY(!this->sed)) return -1; if (HAWK_UNLIKELY(!this->sed)) return -1;
this->sed->_instsize += HAWK_SIZEOF(xtn_t); this->sed->_instsize += HAWK_SIZEOF(sed_xtn_t);
xtn_t* xtn = GET_XTN(this->sed); sed_xtn_t* xtn = GET_XTN(this->sed);
xtn->sed = this; xtn->sed = this;
this->dflerrstr = hawk_sed_geterrstr(this->sed); this->dflerrstr = hawk_sed_geterrstr(this->sed);
@ -293,7 +293,7 @@ void Sed::setConsoleLine (hawk_oow_t num)
hawk_ooi_t Sed::sin (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* arg, hawk_ooch_t* buf, hawk_oow_t len) hawk_ooi_t Sed::sin (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* arg, hawk_ooch_t* buf, hawk_oow_t len)
{ {
xtn_t* xtn = GET_XTN(s); sed_xtn_t* xtn = GET_XTN(s);
Stream::Data iodata (xtn->sed, Stream::READ, arg); Stream::Data iodata (xtn->sed, Stream::READ, arg);
@ -319,7 +319,7 @@ hawk_ooi_t Sed::sin (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* ar
hawk_ooi_t Sed::xin (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* arg, hawk_ooch_t* buf, hawk_oow_t len) hawk_ooi_t Sed::xin (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* arg, hawk_ooch_t* buf, hawk_oow_t len)
{ {
xtn_t* xtn = GET_XTN(s); sed_xtn_t* xtn = GET_XTN(s);
Stream::Data iodata (xtn->sed, Stream::READ, arg); Stream::Data iodata (xtn->sed, Stream::READ, arg);
@ -345,7 +345,7 @@ hawk_ooi_t Sed::xin (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* ar
hawk_ooi_t Sed::xout (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* arg, hawk_ooch_t* dat, hawk_oow_t len) hawk_ooi_t Sed::xout (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* arg, hawk_ooch_t* dat, hawk_oow_t len)
{ {
xtn_t* xtn = GET_XTN(s); sed_xtn_t* xtn = GET_XTN(s);
Stream::Data iodata (xtn->sed, Stream::WRITE, arg); Stream::Data iodata (xtn->sed, Stream::WRITE, arg);
@ -377,7 +377,7 @@ const hawk_ooch_t* Sed::getErrorString (hawk_errnum_t num) const
const hawk_ooch_t* Sed::xerrstr (hawk_sed_t* s, hawk_errnum_t num) const hawk_ooch_t* Sed::xerrstr (hawk_sed_t* s, hawk_errnum_t num)
{ {
xtn_t* xtn = GET_XTN(s); sed_xtn_t* xtn = GET_XTN(s);
return xtn->sed->getErrorString(num); return xtn->sed->getErrorString(num);
} }

View File

@ -527,13 +527,16 @@ typedef unsigned char hawk_bchu_t; /* unsigned version of hawk_bch_t f
// gcc/g++/clang/clang++: -fshort-wchar makes wchar_t to 2 bytes. // gcc/g++/clang/clang++: -fshort-wchar makes wchar_t to 2 bytes.
HAWK_STATIC_ASSERT (HAWK_WIDE_CHAR_SIZE == sizeof(hawk_uch_t)); HAWK_STATIC_ASSERT (HAWK_WIDE_CHAR_SIZE == sizeof(hawk_uch_t));
#elif defined(HAWK_WIDE_CHAR_SIZE) && (HAWK_WIDE_CHAR_SIZE == 4) && (HAWK_WIDE_CHAR_SIZE == HAWK_SIZEOF_WCHAR_T) && defined(__WCHAR_TYPE__) && defined(HAWK_PREFER_PREFIX_L)
typedef __WCHAR_TYPE__ hawk_uch_t;
typedef hawk_uint32_t hawk_uchu_t;
# define HAWK_SIZEOF_UCH_T 4
#elif defined(HAWK_WIDE_CHAR_SIZE) && (HAWK_WIDE_CHAR_SIZE == 4) && defined(__CHAR32_TYPE__) && defined(HAWK_HAVE_PREFIX_BIG_U) #elif defined(HAWK_WIDE_CHAR_SIZE) && (HAWK_WIDE_CHAR_SIZE == 4) && defined(__CHAR32_TYPE__) && defined(HAWK_HAVE_PREFIX_BIG_U)
typedef __CHAR32_TYPE__ hawk_uch_t; typedef __CHAR32_TYPE__ hawk_uch_t;
typedef hawk_uint32_t hawk_uchu_t; typedef hawk_uint32_t hawk_uchu_t;
# define HAWK_SIZEOF_UCH_T 4 # define HAWK_SIZEOF_UCH_T 4
# if !defined(HAWK_PREFER_PREFIX_L)
# define HAWK_USE_PREFIX_BIG_U # define HAWK_USE_PREFIX_BIG_U
# endif
#elif defined(HAWK_WIDE_CHAR_SIZE) && (HAWK_WIDE_CHAR_SIZE == 4) #elif defined(HAWK_WIDE_CHAR_SIZE) && (HAWK_WIDE_CHAR_SIZE == 4)
typedef hawk_uint32_t hawk_uch_t; typedef hawk_uint32_t hawk_uch_t;