enhanced win32 utf8 console hack in sio
This commit is contained in:
parent
b0bcf53b6f
commit
ada60acf67
@ -558,14 +558,13 @@ static void trace_exec (qse_sed_t* sed, qse_sed_exec_op_t op, const qse_sed_cmd_
|
|||||||
{
|
{
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
case QSE_SED_EXEC_READ:
|
case QSE_SED_EXEC_READ:
|
||||||
qse_fprintf (QSE_STDERR, QSE_T("reading...\n"));
|
/*qse_fprintf (QSE_STDERR, QSE_T("reading...\n"));*/
|
||||||
break;
|
break;
|
||||||
case QSE_SED_EXEC_WRITE:
|
case QSE_SED_EXEC_WRITE:
|
||||||
qse_fprintf (QSE_STDERR, QSE_T("wrting...\n"));
|
/*qse_fprintf (QSE_STDERR, QSE_T("wrting...\n"));*/
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
/* TODO: use function to get hold space and pattern space and print them */
|
/* TODO: use function to get hold space and pattern space and print them */
|
||||||
|
|
||||||
case QSE_SED_EXEC_MATCH:
|
case QSE_SED_EXEC_MATCH:
|
||||||
|
@ -1171,7 +1171,7 @@ private:
|
|||||||
|
|
||||||
int dispatch_function (Run* run, const cstr_t* name);
|
int dispatch_function (Run* run, const cstr_t* name);
|
||||||
|
|
||||||
static const char_t* xerrstr (awk_t* a, errnum_t num);
|
static const char_t* xerrstr (const awk_t* a, errnum_t num);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Awk (const Awk&);
|
Awk (const Awk&);
|
||||||
|
@ -999,7 +999,7 @@ typedef struct qse_awk_errinf_t qse_awk_errinf_t;
|
|||||||
* object with the qse_awk_seterrstr() function to customize an error string.
|
* object with the qse_awk_seterrstr() function to customize an error string.
|
||||||
*/
|
*/
|
||||||
typedef const qse_char_t* (*qse_awk_errstr_t) (
|
typedef const qse_char_t* (*qse_awk_errstr_t) (
|
||||||
qse_awk_t* awk, /**< awk */
|
const qse_awk_t* awk, /**< awk */
|
||||||
qse_awk_errnum_t num /**< error number */
|
qse_awk_errnum_t num /**< error number */
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1205,7 +1205,7 @@ int qse_awk_clear (
|
|||||||
* The qse_awk_geterrstr() gets an error string getter.
|
* The qse_awk_geterrstr() gets an error string getter.
|
||||||
*/
|
*/
|
||||||
qse_awk_errstr_t qse_awk_geterrstr (
|
qse_awk_errstr_t qse_awk_geterrstr (
|
||||||
qse_awk_t* awk /**< awk */
|
const qse_awk_t* awk /**< awk */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1243,7 +1243,7 @@ void qse_awk_seterrstr (
|
|||||||
* @return error number
|
* @return error number
|
||||||
*/
|
*/
|
||||||
qse_awk_errnum_t qse_awk_geterrnum (
|
qse_awk_errnum_t qse_awk_geterrnum (
|
||||||
qse_awk_t* awk /**< awk */
|
const qse_awk_t* awk /**< awk */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1251,7 +1251,7 @@ qse_awk_errnum_t qse_awk_geterrnum (
|
|||||||
* last error has occurred.
|
* last error has occurred.
|
||||||
*/
|
*/
|
||||||
const qse_awk_loc_t* qse_awk_geterrloc (
|
const qse_awk_loc_t* qse_awk_geterrloc (
|
||||||
qse_awk_t* awk /**< awk */
|
const qse_awk_t* awk /**< awk */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1261,7 +1261,7 @@ const qse_awk_loc_t* qse_awk_geterrloc (
|
|||||||
* @return error message
|
* @return error message
|
||||||
*/
|
*/
|
||||||
const qse_char_t* qse_awk_geterrmsg (
|
const qse_char_t* qse_awk_geterrmsg (
|
||||||
qse_awk_t* awk /**< awk */
|
const qse_awk_t* awk /**< awk */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1269,7 +1269,7 @@ const qse_char_t* qse_awk_geterrmsg (
|
|||||||
* pointed to by @a errinf from @a awk.
|
* pointed to by @a errinf from @a awk.
|
||||||
*/
|
*/
|
||||||
void qse_awk_geterrinf (
|
void qse_awk_geterrinf (
|
||||||
qse_awk_t* awk, /**< awk */
|
const qse_awk_t* awk, /**< awk */
|
||||||
qse_awk_errinf_t* errinf /**< error information buffer */
|
qse_awk_errinf_t* errinf /**< error information buffer */
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1300,7 +1300,7 @@ void qse_awk_seterrinf (
|
|||||||
* The qse_awk_geterror() function gets error information via parameters.
|
* The qse_awk_geterror() function gets error information via parameters.
|
||||||
*/
|
*/
|
||||||
void qse_awk_geterror (
|
void qse_awk_geterror (
|
||||||
qse_awk_t* awk, /**< awk */
|
const qse_awk_t* awk, /**< awk */
|
||||||
qse_awk_errnum_t* errnum, /**< error number */
|
qse_awk_errnum_t* errnum, /**< error number */
|
||||||
const qse_char_t** errmsg, /**< error message */
|
const qse_char_t** errmsg, /**< error message */
|
||||||
qse_awk_loc_t* errloc /**< error location */
|
qse_awk_loc_t* errloc /**< error location */
|
||||||
@ -1322,7 +1322,7 @@ void qse_awk_seterror (
|
|||||||
* @return 0 or a number ORed of #qse_awk_option_t enumerators.
|
* @return 0 or a number ORed of #qse_awk_option_t enumerators.
|
||||||
*/
|
*/
|
||||||
int qse_awk_getoption (
|
int qse_awk_getoption (
|
||||||
qse_awk_t* awk /**< awk */
|
const qse_awk_t* awk /**< awk */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1340,8 +1340,8 @@ void qse_awk_setoption (
|
|||||||
* @return maximum depth
|
* @return maximum depth
|
||||||
*/
|
*/
|
||||||
qse_size_t qse_awk_getmaxdepth (
|
qse_size_t qse_awk_getmaxdepth (
|
||||||
qse_awk_t* awk, /**< awk */
|
const qse_awk_t* awk, /**< awk */
|
||||||
qse_awk_depth_t type /**< operation type */
|
qse_awk_depth_t type /**< operation type */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1797,7 +1797,7 @@ qse_htb_t* qse_awk_rtx_getnvmap (
|
|||||||
* @return error number
|
* @return error number
|
||||||
*/
|
*/
|
||||||
qse_awk_errnum_t qse_awk_rtx_geterrnum (
|
qse_awk_errnum_t qse_awk_rtx_geterrnum (
|
||||||
qse_awk_rtx_t* rtx /**< runtime context */
|
const qse_awk_rtx_t* rtx /**< runtime context */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1806,7 +1806,7 @@ qse_awk_errnum_t qse_awk_rtx_geterrnum (
|
|||||||
* @return error location
|
* @return error location
|
||||||
*/
|
*/
|
||||||
const qse_awk_loc_t* qse_awk_rtx_geterrloc (
|
const qse_awk_loc_t* qse_awk_rtx_geterrloc (
|
||||||
qse_awk_rtx_t* rtx /**< runtime context */
|
const qse_awk_rtx_t* rtx /**< runtime context */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1815,7 +1815,7 @@ const qse_awk_loc_t* qse_awk_rtx_geterrloc (
|
|||||||
* @return error message
|
* @return error message
|
||||||
*/
|
*/
|
||||||
const qse_char_t* qse_awk_rtx_geterrmsg (
|
const qse_char_t* qse_awk_rtx_geterrmsg (
|
||||||
qse_awk_rtx_t* rtx /**< runtime context */
|
const qse_awk_rtx_t* rtx /**< runtime context */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1823,8 +1823,8 @@ const qse_char_t* qse_awk_rtx_geterrmsg (
|
|||||||
* pointed to by @a errinf from a runtime context @a rtx.
|
* pointed to by @a errinf from a runtime context @a rtx.
|
||||||
*/
|
*/
|
||||||
void qse_awk_rtx_geterrinf (
|
void qse_awk_rtx_geterrinf (
|
||||||
qse_awk_rtx_t* rtx, /**< runtime context */
|
const qse_awk_rtx_t* rtx, /**< runtime context */
|
||||||
qse_awk_errinf_t* errinf /**< error information */
|
qse_awk_errinf_t* errinf /**< error information */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1834,10 +1834,10 @@ void qse_awk_rtx_geterrinf (
|
|||||||
* @a errmsg; the error line into memory pointed to by @a errlin.
|
* @a errmsg; the error line into memory pointed to by @a errlin.
|
||||||
*/
|
*/
|
||||||
void qse_awk_rtx_geterror (
|
void qse_awk_rtx_geterror (
|
||||||
qse_awk_rtx_t* rtx, /**< runtime context */
|
const qse_awk_rtx_t* rtx, /**< runtime context */
|
||||||
qse_awk_errnum_t* errnum, /**< error number */
|
qse_awk_errnum_t* errnum, /**< error number */
|
||||||
const qse_char_t** errmsg, /**< error message */
|
const qse_char_t** errmsg, /**< error message */
|
||||||
qse_awk_loc_t* errloc /**< error location */
|
qse_awk_loc_t* errloc /**< error location */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -210,15 +210,19 @@ void qse_fio_fini (
|
|||||||
qse_fio_t* fio
|
qse_fio_t* fio
|
||||||
);
|
);
|
||||||
|
|
||||||
|
qse_fio_errnum_t qse_fio_geterrnum (
|
||||||
|
const qse_fio_t* fio
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The qse_fio_gethandle() function returns the native file handle.
|
* The qse_fio_gethandle() function returns the native file handle.
|
||||||
*/
|
*/
|
||||||
qse_fio_hnd_t qse_fio_gethandle (
|
qse_fio_hnd_t qse_fio_gethandle (
|
||||||
qse_fio_t* fio
|
const qse_fio_t* fio
|
||||||
);
|
);
|
||||||
|
|
||||||
qse_ubi_t qse_fio_gethandleasubi (
|
qse_ubi_t qse_fio_gethandleasubi (
|
||||||
qse_fio_t* fio
|
const qse_fio_t* fio
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -121,11 +121,11 @@ typedef void (*qse_htb_freeer_t) (
|
|||||||
* integer otherwise.
|
* integer otherwise.
|
||||||
*/
|
*/
|
||||||
typedef int (*qse_htb_comper_t) (
|
typedef int (*qse_htb_comper_t) (
|
||||||
qse_htb_t* htb, /**< hash table */
|
const qse_htb_t* htb, /**< hash table */
|
||||||
const void* kptr1, /**< key pointer */
|
const void* kptr1, /**< key pointer */
|
||||||
qse_size_t klen1, /**< key length */
|
qse_size_t klen1, /**< key length */
|
||||||
const void* kptr2, /**< key pointer */
|
const void* kptr2, /**< key pointer */
|
||||||
qse_size_t klen2 /**< key length */
|
qse_size_t klen2 /**< key length */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -154,9 +154,9 @@ typedef qse_size_t (*qse_htb_sizer_t) (
|
|||||||
* The qse_htb_hasher_t type defines a key hash function
|
* The qse_htb_hasher_t type defines a key hash function
|
||||||
*/
|
*/
|
||||||
typedef qse_size_t (*qse_htb_hasher_t) (
|
typedef qse_size_t (*qse_htb_hasher_t) (
|
||||||
qse_htb_t* htb, /**< hash table */
|
const qse_htb_t* htb, /**< hash table */
|
||||||
const void* kptr, /**< key pointer */
|
const void* kptr, /**< key pointer */
|
||||||
qse_size_t klen /**< key length in bytes */
|
qse_size_t klen /**< key length in bytes */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -361,7 +361,7 @@ void qse_htb_fini (
|
|||||||
* The qse_htb_getmancbs() function gets manipulation callback function set.
|
* The qse_htb_getmancbs() function gets manipulation callback function set.
|
||||||
*/
|
*/
|
||||||
const qse_htb_mancbs_t* qse_htb_getmancbs (
|
const qse_htb_mancbs_t* qse_htb_getmancbs (
|
||||||
qse_htb_t* htb /**< hash table */
|
const qse_htb_t* htb /**< hash table */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -377,7 +377,7 @@ void qse_htb_setmancbs (
|
|||||||
* The qse_htb_getsize() function gets the number of pairs in hash table.
|
* The qse_htb_getsize() function gets the number of pairs in hash table.
|
||||||
*/
|
*/
|
||||||
qse_size_t qse_htb_getsize (
|
qse_size_t qse_htb_getsize (
|
||||||
qse_htb_t* htb
|
const qse_htb_t* htb
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -385,7 +385,7 @@ qse_size_t qse_htb_getsize (
|
|||||||
* in a hash bucket.
|
* in a hash bucket.
|
||||||
*/
|
*/
|
||||||
qse_size_t qse_htb_getcapa (
|
qse_size_t qse_htb_getcapa (
|
||||||
qse_htb_t* htb /**< hash table */
|
const qse_htb_t* htb /**< hash table */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -396,9 +396,9 @@ qse_size_t qse_htb_getcapa (
|
|||||||
* or #QSE_NULL if no match is found.
|
* or #QSE_NULL if no match is found.
|
||||||
*/
|
*/
|
||||||
qse_htb_pair_t* qse_htb_search (
|
qse_htb_pair_t* qse_htb_search (
|
||||||
qse_htb_t* htb, /**< hash table */
|
const qse_htb_t* htb, /**< hash table */
|
||||||
const void* kptr, /**< key pointer */
|
const void* kptr, /**< key pointer */
|
||||||
qse_size_t klen /**< key length */
|
qse_size_t klen /**< key length */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -632,20 +632,20 @@ void qse_htb_freepair (
|
|||||||
* The qse_htb_dflhash() function is a default hash function.
|
* The qse_htb_dflhash() function is a default hash function.
|
||||||
*/
|
*/
|
||||||
qse_size_t qse_htb_dflhash (
|
qse_size_t qse_htb_dflhash (
|
||||||
qse_htb_t* htb,
|
const qse_htb_t* htb,
|
||||||
const void* kptr,
|
const void* kptr,
|
||||||
qse_size_t klen
|
qse_size_t klen
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The qse_htb_dflcomp() function is default comparator.
|
* The qse_htb_dflcomp() function is default comparator.
|
||||||
*/
|
*/
|
||||||
int qse_htb_dflcomp (
|
int qse_htb_dflcomp (
|
||||||
qse_htb_t* htb,
|
const qse_htb_t* htb,
|
||||||
const void* kptr1,
|
const void* kptr1,
|
||||||
qse_size_t klen1,
|
qse_size_t klen1,
|
||||||
const void* kptr2,
|
const void* kptr2,
|
||||||
qse_size_t klen2
|
qse_size_t klen2
|
||||||
);
|
);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Id$
|
* $Id$
|
||||||
*
|
*
|
||||||
@ -25,7 +24,7 @@
|
|||||||
#include <qse/types.h>
|
#include <qse/types.h>
|
||||||
#include <qse/macros.h>
|
#include <qse/macros.h>
|
||||||
|
|
||||||
typedef struct qse_ipad_t qse_ipad_t;
|
typedef struct qse_ipad_t qse_ipad_t;
|
||||||
typedef struct qse_ipad4_t qse_ipad4_t;
|
typedef struct qse_ipad4_t qse_ipad4_t;
|
||||||
typedef struct qse_ipad6_t qse_ipad6_t;
|
typedef struct qse_ipad6_t qse_ipad6_t;
|
||||||
|
|
||||||
@ -44,14 +43,14 @@ struct qse_ipad_t
|
|||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
QSE_IPAD_IP4,
|
QSE_IPAD_V4,
|
||||||
QSE_IPAD_IP6
|
QSE_IPAD_V6
|
||||||
} type;
|
} type;
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
qse_ipad4_t ip4;
|
qse_ipad4_t v4;
|
||||||
qse_ipad4_t ip6;
|
qse_ipad6_t v6;
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -59,6 +58,38 @@ struct qse_ipad_t
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int qse_mbstoipad4 (
|
||||||
|
const qse_mchar_t* mbs,
|
||||||
|
qse_ipad4_t* ipad
|
||||||
|
);
|
||||||
|
|
||||||
|
int qse_mbsntoipad4 (
|
||||||
|
const qse_mchar_t* mbs,
|
||||||
|
qse_size_t len
|
||||||
|
);
|
||||||
|
|
||||||
|
int qse_ipad4tombs (
|
||||||
|
const qse_ipad4_t* ipad,
|
||||||
|
qse_mchar_t* mbs,
|
||||||
|
qse_size_t len
|
||||||
|
);
|
||||||
|
|
||||||
|
int qse_wcstoipad4 (
|
||||||
|
const qse_wchar_t* wcs,
|
||||||
|
qse_ipad4_t* ipad
|
||||||
|
);
|
||||||
|
|
||||||
|
int qse_wcstoipad4 (
|
||||||
|
const qse_wchar_t* wcs,
|
||||||
|
qse_ipad4_t* ipad
|
||||||
|
);
|
||||||
|
|
||||||
|
int qse_ipad4towcs (
|
||||||
|
const qse_ipad4_t* ipad,
|
||||||
|
qse_wchar_t* wcs,
|
||||||
|
qse_size_t len
|
||||||
|
);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -263,12 +263,21 @@ void qse_pio_fini (
|
|||||||
qse_pio_t* pio /**< pio object */
|
qse_pio_t* pio /**< pio object */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The qse_pio_geterrnum() function returns the number of the last error
|
||||||
|
* occurred.
|
||||||
|
* @return error number
|
||||||
|
*/
|
||||||
|
qse_pio_errnum_t qse_pio_geterrnum (
|
||||||
|
const qse_pio_t* pio /**< pio object */
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The qse_pio_getoption() function gets the current option.
|
* The qse_pio_getoption() function gets the current option.
|
||||||
* @return option number OR'ed of #qse_pio_option_t enumerators
|
* @return option number OR'ed of #qse_pio_option_t enumerators
|
||||||
*/
|
*/
|
||||||
int qse_pio_getoption (
|
int qse_pio_getoption (
|
||||||
qse_pio_t* pio /**< pio object */
|
const qse_pio_t* pio /**< pio object */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -280,15 +289,6 @@ void qse_pio_setoption (
|
|||||||
enumerators */
|
enumerators */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* The qse_pio_geterrnum() function returns the number of the last error
|
|
||||||
* occurred.
|
|
||||||
* @return error number
|
|
||||||
*/
|
|
||||||
qse_pio_errnum_t qse_pio_geterrnum (
|
|
||||||
qse_pio_t* pio /**< pio object */
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The qse_pio_getcmgr() function returns the current character manager.
|
* The qse_pio_getcmgr() function returns the current character manager.
|
||||||
* It returns #QSE_NULL is @a pio is not opened with #QSE_PIO_TEXT.
|
* It returns #QSE_NULL is @a pio is not opened with #QSE_PIO_TEXT.
|
||||||
@ -313,8 +313,8 @@ void qse_pio_setcmgr (
|
|||||||
* @return pipe handle
|
* @return pipe handle
|
||||||
*/
|
*/
|
||||||
qse_pio_hnd_t qse_pio_gethandle (
|
qse_pio_hnd_t qse_pio_gethandle (
|
||||||
qse_pio_t* pio, /**< pio object */
|
const qse_pio_t* pio, /**< pio object */
|
||||||
qse_pio_hid_t hid /**< handle ID */
|
qse_pio_hid_t hid /**< handle ID */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -323,8 +323,8 @@ qse_pio_hnd_t qse_pio_gethandle (
|
|||||||
* @return pipe handle
|
* @return pipe handle
|
||||||
*/
|
*/
|
||||||
qse_ubi_t qse_pio_gethandleasubi (
|
qse_ubi_t qse_pio_gethandleasubi (
|
||||||
qse_pio_t* pio, /**< pio object */
|
const qse_pio_t* pio, /**< pio object */
|
||||||
qse_pio_hid_t hid /**< handle ID */
|
qse_pio_hid_t hid /**< handle ID */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -332,7 +332,7 @@ qse_ubi_t qse_pio_gethandleasubi (
|
|||||||
* @return process handle
|
* @return process handle
|
||||||
*/
|
*/
|
||||||
qse_pio_pid_t qse_pio_getchild (
|
qse_pio_pid_t qse_pio_getchild (
|
||||||
qse_pio_t* pio /**< pio object */
|
const qse_pio_t* pio /**< pio object */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -116,11 +116,11 @@ typedef void (*qse_rbt_freeer_t) (
|
|||||||
* key is greater than the second key, -1 otherwise.
|
* key is greater than the second key, -1 otherwise.
|
||||||
*/
|
*/
|
||||||
typedef int (*qse_rbt_comper_t) (
|
typedef int (*qse_rbt_comper_t) (
|
||||||
qse_rbt_t* rbt, /**< red-black tree */
|
const qse_rbt_t* rbt, /**< red-black tree */
|
||||||
const void* kptr1, /**< key pointer */
|
const void* kptr1, /**< key pointer */
|
||||||
qse_size_t klen1, /**< key length */
|
qse_size_t klen1, /**< key length */
|
||||||
const void* kptr2, /**< key pointer */
|
const void* kptr2, /**< key pointer */
|
||||||
qse_size_t klen2 /**< key length */
|
qse_size_t klen2 /**< key length */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -319,7 +319,7 @@ void qse_rbt_fini (
|
|||||||
* The qse_rbt_getmancbs() function gets manipulation callback function set.
|
* The qse_rbt_getmancbs() function gets manipulation callback function set.
|
||||||
*/
|
*/
|
||||||
const qse_rbt_mancbs_t* qse_rbt_getmancbs (
|
const qse_rbt_mancbs_t* qse_rbt_getmancbs (
|
||||||
qse_rbt_t* rbt /**< red-black tree */
|
const qse_rbt_t* rbt /**< red-black tree */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -335,7 +335,7 @@ void qse_rbt_setmancbs (
|
|||||||
* The qse_rbt_getsize() function gets the number of pairs in red-black tree.
|
* The qse_rbt_getsize() function gets the number of pairs in red-black tree.
|
||||||
*/
|
*/
|
||||||
qse_size_t qse_rbt_getsize (
|
qse_size_t qse_rbt_getsize (
|
||||||
qse_rbt_t* rbt /**< red-black tree */
|
const qse_rbt_t* rbt /**< red-black tree */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -346,9 +346,9 @@ qse_size_t qse_rbt_getsize (
|
|||||||
* or QSE_NULL if no match is found.
|
* or QSE_NULL if no match is found.
|
||||||
*/
|
*/
|
||||||
qse_rbt_pair_t* qse_rbt_search (
|
qse_rbt_pair_t* qse_rbt_search (
|
||||||
qse_rbt_t* rbt, /**< red-black tree */
|
const qse_rbt_t* rbt, /**< red-black tree */
|
||||||
const void* kptr, /**< key pointer */
|
const void* kptr, /**< key pointer */
|
||||||
qse_size_t klen /**< the size of the key */
|
qse_size_t klen /**< the size of the key */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -574,11 +574,11 @@ void qse_rbt_freepair (
|
|||||||
* The qse_rbt_dflcomp() function defines the default key comparator.
|
* The qse_rbt_dflcomp() function defines the default key comparator.
|
||||||
*/
|
*/
|
||||||
int qse_rbt_dflcomp (
|
int qse_rbt_dflcomp (
|
||||||
qse_rbt_t* rbt,
|
const qse_rbt_t* rbt,
|
||||||
const void* kptr1,
|
const void* kptr1,
|
||||||
qse_size_t klen1,
|
qse_size_t klen1,
|
||||||
const void* kptr2,
|
const void* kptr2,
|
||||||
qse_size_t klen2
|
qse_size_t klen2
|
||||||
);
|
);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -238,7 +238,7 @@ qse_rex_node_t* qse_rex_yield (
|
|||||||
* The qse_rex_getoption() function returns the current options.
|
* The qse_rex_getoption() function returns the current options.
|
||||||
*/
|
*/
|
||||||
int qse_rex_getoption (
|
int qse_rex_getoption (
|
||||||
qse_rex_t* rex /**< regular expression processor */
|
const qse_rex_t* rex /**< regular expression processor */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -250,11 +250,11 @@ void qse_rex_setoption (
|
|||||||
);
|
);
|
||||||
|
|
||||||
qse_rex_errnum_t qse_rex_geterrnum (
|
qse_rex_errnum_t qse_rex_geterrnum (
|
||||||
qse_rex_t* rex
|
const qse_rex_t* rex
|
||||||
);
|
);
|
||||||
|
|
||||||
const qse_char_t* qse_rex_geterrmsg (
|
const qse_char_t* qse_rex_geterrmsg (
|
||||||
qse_rex_t* rex
|
const qse_rex_t* rex
|
||||||
);
|
);
|
||||||
|
|
||||||
qse_rex_node_t* qse_rex_comp (
|
qse_rex_node_t* qse_rex_comp (
|
||||||
|
@ -197,7 +197,7 @@ void qse_sio_fini (
|
|||||||
);
|
);
|
||||||
|
|
||||||
qse_sio_errnum_t qse_sio_geterrnum (
|
qse_sio_errnum_t qse_sio_geterrnum (
|
||||||
qse_sio_t* sio
|
const qse_sio_t* sio
|
||||||
);
|
);
|
||||||
|
|
||||||
qse_cmgr_t* qse_sio_getcmgr (
|
qse_cmgr_t* qse_sio_getcmgr (
|
||||||
@ -210,11 +210,11 @@ void qse_sio_setcmgr (
|
|||||||
);
|
);
|
||||||
|
|
||||||
qse_sio_hnd_t qse_sio_gethandle (
|
qse_sio_hnd_t qse_sio_gethandle (
|
||||||
qse_sio_t* sio
|
const qse_sio_t* sio
|
||||||
);
|
);
|
||||||
|
|
||||||
qse_ubi_t qse_sio_gethandleasubi (
|
qse_ubi_t qse_sio_gethandleasubi (
|
||||||
qse_sio_t* sio
|
const qse_sio_t* sio
|
||||||
);
|
);
|
||||||
|
|
||||||
qse_ssize_t qse_sio_flush (
|
qse_ssize_t qse_sio_flush (
|
||||||
|
@ -169,7 +169,7 @@ int qse_tio_fini (
|
|||||||
* The qse_tio_geterrnum() function returns the current error code.
|
* The qse_tio_geterrnum() function returns the current error code.
|
||||||
*/
|
*/
|
||||||
qse_tio_errnum_t qse_tio_geterrnum (
|
qse_tio_errnum_t qse_tio_geterrnum (
|
||||||
qse_tio_t* tio
|
const qse_tio_t* tio
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -316,7 +316,7 @@ private:
|
|||||||
sed_t* s, io_cmd_t cmd, io_arg_t* arg, char_t* buf, size_t len);
|
sed_t* s, io_cmd_t cmd, io_arg_t* arg, char_t* buf, size_t len);
|
||||||
static ssize_t xout (
|
static ssize_t xout (
|
||||||
sed_t* s, io_cmd_t cmd, io_arg_t* arg, char_t* dat, size_t len);
|
sed_t* s, io_cmd_t cmd, io_arg_t* arg, char_t* dat, size_t len);
|
||||||
static const char_t* xerrstr (sed_t* s, errnum_t num);
|
static const char_t* xerrstr (const sed_t* s, errnum_t num);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Sed (const Sed&);
|
Sed (const Sed&);
|
||||||
|
@ -234,7 +234,7 @@ typedef enum qse_sed_errnum_t qse_sed_errnum_t;
|
|||||||
* editor with the qse_sed_seterrstr() function to customize an error string.
|
* editor with the qse_sed_seterrstr() function to customize an error string.
|
||||||
*/
|
*/
|
||||||
typedef const qse_char_t* (*qse_sed_errstr_t) (
|
typedef const qse_char_t* (*qse_sed_errstr_t) (
|
||||||
qse_sed_t* sed, /**< stream editor */
|
const qse_sed_t* sed, /**< stream editor */
|
||||||
qse_sed_errnum_t num /**< an error number */
|
qse_sed_errnum_t num /**< an error number */
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -355,7 +355,7 @@ void qse_sed_close (
|
|||||||
* @return 0 or a number OR'ed of #qse_sed_option_t values
|
* @return 0 or a number OR'ed of #qse_sed_option_t values
|
||||||
*/
|
*/
|
||||||
int qse_sed_getoption (
|
int qse_sed_getoption (
|
||||||
qse_sed_t* sed /**< stream editor */
|
const qse_sed_t* sed /**< stream editor */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -370,7 +370,7 @@ void qse_sed_setoption (
|
|||||||
* The qse_sed_geterrstr() gets an error string getter.
|
* The qse_sed_geterrstr() gets an error string getter.
|
||||||
*/
|
*/
|
||||||
qse_sed_errstr_t qse_sed_geterrstr (
|
qse_sed_errstr_t qse_sed_geterrstr (
|
||||||
qse_sed_t* sed /**< stream editor */
|
const qse_sed_t* sed /**< stream editor */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -407,7 +407,7 @@ void qse_sed_seterrstr (
|
|||||||
* @return the number of the last error
|
* @return the number of the last error
|
||||||
*/
|
*/
|
||||||
qse_sed_errnum_t qse_sed_geterrnum (
|
qse_sed_errnum_t qse_sed_geterrnum (
|
||||||
qse_sed_t* sed /**< stream editor */
|
const qse_sed_t* sed /**< stream editor */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -416,7 +416,7 @@ qse_sed_errnum_t qse_sed_geterrnum (
|
|||||||
* @return error location
|
* @return error location
|
||||||
*/
|
*/
|
||||||
const qse_sed_loc_t* qse_sed_geterrloc (
|
const qse_sed_loc_t* qse_sed_geterrloc (
|
||||||
qse_sed_t* sed /**< stream editor */
|
const qse_sed_t* sed /**< stream editor */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -424,7 +424,7 @@ const qse_sed_loc_t* qse_sed_geterrloc (
|
|||||||
* @return a pointer to an error message
|
* @return a pointer to an error message
|
||||||
*/
|
*/
|
||||||
const qse_char_t* qse_sed_geterrmsg (
|
const qse_char_t* qse_sed_geterrmsg (
|
||||||
qse_sed_t* sed /**< stream editor */
|
const qse_sed_t* sed /**< stream editor */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -433,7 +433,7 @@ const qse_char_t* qse_sed_geterrmsg (
|
|||||||
* to by each parameter.
|
* to by each parameter.
|
||||||
*/
|
*/
|
||||||
void qse_sed_geterror (
|
void qse_sed_geterror (
|
||||||
qse_sed_t* sed, /**< stream editor */
|
const qse_sed_t* sed, /**< stream editor */
|
||||||
qse_sed_errnum_t* errnum, /**< error number */
|
qse_sed_errnum_t* errnum, /**< error number */
|
||||||
const qse_char_t** errmsg, /**< error message */
|
const qse_char_t** errmsg, /**< error message */
|
||||||
qse_sed_loc_t* errloc /**< error location */
|
qse_sed_loc_t* errloc /**< error location */
|
||||||
|
@ -979,7 +979,7 @@ const Awk::char_t* Awk::getErrorString (errnum_t num) const
|
|||||||
return dflerrstr (awk, num);
|
return dflerrstr (awk, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Awk::char_t* Awk::xerrstr (awk_t* a, errnum_t num)
|
const Awk::char_t* Awk::xerrstr (const awk_t* a, errnum_t num)
|
||||||
{
|
{
|
||||||
Awk* awk = *(Awk**)QSE_XTN(a);
|
Awk* awk = *(Awk**)QSE_XTN(a);
|
||||||
return awk->getErrorString (num);
|
return awk->getErrorString (num);
|
||||||
|
@ -376,7 +376,7 @@ qse_awk_prm_t* qse_awk_getprm (qse_awk_t* awk)
|
|||||||
return &awk->prm;
|
return &awk->prm;
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_awk_getoption (qse_awk_t* awk)
|
int qse_awk_getoption (const qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
return awk->option;
|
return awk->option;
|
||||||
}
|
}
|
||||||
@ -391,7 +391,7 @@ void qse_awk_stopall (qse_awk_t* awk)
|
|||||||
awk->stopall = QSE_TRUE;
|
awk->stopall = QSE_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_size_t qse_awk_getmaxdepth (qse_awk_t* awk, qse_awk_depth_t type)
|
qse_size_t qse_awk_getmaxdepth (const qse_awk_t* awk, qse_awk_depth_t type)
|
||||||
{
|
{
|
||||||
return (type == QSE_AWK_DEPTH_BLOCK_PARSE)? awk->parse.depth.max.block:
|
return (type == QSE_AWK_DEPTH_BLOCK_PARSE)? awk->parse.depth.max.block:
|
||||||
(type == QSE_AWK_DEPTH_BLOCK_RUN)? awk->run.depth.max.block:
|
(type == QSE_AWK_DEPTH_BLOCK_RUN)? awk->run.depth.max.block:
|
||||||
|
@ -154,7 +154,7 @@ const qse_char_t* qse_awk_dflerrstr (qse_awk_t* awk, qse_awk_errnum_t errnum)
|
|||||||
errstr[errnum]: QSE_T("unknown error");
|
errstr[errnum]: QSE_T("unknown error");
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_awk_errstr_t qse_awk_geterrstr (qse_awk_t* awk)
|
qse_awk_errstr_t qse_awk_geterrstr (const qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
return awk->errstr;
|
return awk->errstr;
|
||||||
}
|
}
|
||||||
@ -164,23 +164,23 @@ void qse_awk_seterrstr (qse_awk_t* awk, qse_awk_errstr_t errstr)
|
|||||||
awk->errstr = errstr;
|
awk->errstr = errstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_awk_errnum_t qse_awk_geterrnum (qse_awk_t* awk)
|
qse_awk_errnum_t qse_awk_geterrnum (const qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
return awk->errinf.num;
|
return awk->errinf.num;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_awk_loc_t* qse_awk_geterrloc (qse_awk_t* awk)
|
const qse_awk_loc_t* qse_awk_geterrloc (const qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
return &awk->errinf.loc;
|
return &awk->errinf.loc;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_char_t* qse_awk_geterrmsg (qse_awk_t* awk)
|
const qse_char_t* qse_awk_geterrmsg (const qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
return (awk->errinf.msg[0] == QSE_T('\0'))?
|
return (awk->errinf.msg[0] == QSE_T('\0'))?
|
||||||
qse_awk_geterrstr(awk)(awk,awk->errinf.num): awk->errinf.msg;
|
qse_awk_geterrstr(awk)(awk,awk->errinf.num): awk->errinf.msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_geterrinf (qse_awk_t* awk, qse_awk_errinf_t* errinf)
|
void qse_awk_geterrinf (const qse_awk_t* awk, qse_awk_errinf_t* errinf)
|
||||||
{
|
{
|
||||||
QSE_MEMCPY (errinf, &awk->errinf, QSE_SIZEOF(*errinf));
|
QSE_MEMCPY (errinf, &awk->errinf, QSE_SIZEOF(*errinf));
|
||||||
if (errinf->msg[0] == QSE_T('\0'))
|
if (errinf->msg[0] == QSE_T('\0'))
|
||||||
@ -191,7 +191,7 @@ void qse_awk_geterrinf (qse_awk_t* awk, qse_awk_errinf_t* errinf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_geterror (
|
void qse_awk_geterror (
|
||||||
qse_awk_t* awk, qse_awk_errnum_t* errnum,
|
const qse_awk_t* awk, qse_awk_errnum_t* errnum,
|
||||||
const qse_char_t** errmsg, qse_awk_loc_t* errloc)
|
const qse_char_t** errmsg, qse_awk_loc_t* errloc)
|
||||||
{
|
{
|
||||||
if (errnum != QSE_NULL) *errnum = awk->errinf.num;
|
if (errnum != QSE_NULL) *errnum = awk->errinf.num;
|
||||||
@ -234,23 +234,23 @@ void qse_awk_seterror (
|
|||||||
if (errloc != QSE_NULL) awk->errinf.loc = *errloc;
|
if (errloc != QSE_NULL) awk->errinf.loc = *errloc;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_awk_errnum_t qse_awk_rtx_geterrnum (qse_awk_rtx_t* rtx)
|
qse_awk_errnum_t qse_awk_rtx_geterrnum (const qse_awk_rtx_t* rtx)
|
||||||
{
|
{
|
||||||
return rtx->errinf.num;
|
return rtx->errinf.num;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_awk_loc_t* qse_awk_rtx_geterrloc (qse_awk_rtx_t* rtx)
|
const qse_awk_loc_t* qse_awk_rtx_geterrloc (const qse_awk_rtx_t* rtx)
|
||||||
{
|
{
|
||||||
return &rtx->errinf.loc;
|
return &rtx->errinf.loc;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_char_t* qse_awk_rtx_geterrmsg (qse_awk_rtx_t* rtx)
|
const qse_char_t* qse_awk_rtx_geterrmsg (const qse_awk_rtx_t* rtx)
|
||||||
{
|
{
|
||||||
return (rtx->errinf.msg[0] == QSE_T('\0')) ?
|
return (rtx->errinf.msg[0] == QSE_T('\0')) ?
|
||||||
qse_awk_geterrstr(rtx->awk)(rtx->awk,rtx->errinf.num): rtx->errinf.msg;
|
qse_awk_geterrstr(rtx->awk)(rtx->awk,rtx->errinf.num): rtx->errinf.msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_rtx_geterrinf (qse_awk_rtx_t* rtx, qse_awk_errinf_t* errinf)
|
void qse_awk_rtx_geterrinf (const qse_awk_rtx_t* rtx, qse_awk_errinf_t* errinf)
|
||||||
{
|
{
|
||||||
QSE_MEMCPY (errinf, &rtx->errinf, QSE_SIZEOF(*errinf));
|
QSE_MEMCPY (errinf, &rtx->errinf, QSE_SIZEOF(*errinf));
|
||||||
if (errinf->msg[0] == QSE_T('\0'))
|
if (errinf->msg[0] == QSE_T('\0'))
|
||||||
@ -261,7 +261,7 @@ void qse_awk_rtx_geterrinf (qse_awk_rtx_t* rtx, qse_awk_errinf_t* errinf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_rtx_geterror (
|
void qse_awk_rtx_geterror (
|
||||||
qse_awk_rtx_t* rtx, qse_awk_errnum_t* errnum,
|
const qse_awk_rtx_t* rtx, qse_awk_errnum_t* errnum,
|
||||||
const qse_char_t** errmsg, qse_awk_loc_t* errloc)
|
const qse_char_t** errmsg, qse_awk_loc_t* errloc)
|
||||||
{
|
{
|
||||||
if (errnum != QSE_NULL) *errnum = rtx->errinf.num;
|
if (errnum != QSE_NULL) *errnum = rtx->errinf.num;
|
||||||
|
@ -449,11 +449,13 @@ static qse_ssize_t sf_in_open (
|
|||||||
xtn->s.in.u.str.ptr = xtn->s.in.x->u.str.ptr;
|
xtn->s.in.u.str.ptr = xtn->s.in.x->u.str.ptr;
|
||||||
xtn->s.in.u.str.end = xtn->s.in.x->u.str.ptr + xtn->s.in.x->u.str.len;
|
xtn->s.in.u.str.end = xtn->s.in.x->u.str.ptr + xtn->s.in.x->u.str.len;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* this should never happen */
|
||||||
|
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* this should never happen */
|
|
||||||
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -522,6 +524,10 @@ static qse_ssize_t sf_in_close (
|
|||||||
case QSE_AWK_PARSESTD_STR:
|
case QSE_AWK_PARSESTD_STR:
|
||||||
/* nothing to close */
|
/* nothing to close */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* nothing to close */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -574,10 +580,13 @@ static qse_ssize_t sf_in_read (
|
|||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* this should never happen */
|
||||||
|
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -613,10 +622,10 @@ static qse_ssize_t sf_in (
|
|||||||
case QSE_AWK_SIO_READ:
|
case QSE_AWK_SIO_READ:
|
||||||
return sf_in_read (awk, arg, data, size, xtn);
|
return sf_in_read (awk, arg, data, size, xtn);
|
||||||
|
|
||||||
|
default:
|
||||||
|
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static qse_ssize_t sf_out (
|
static qse_ssize_t sf_out (
|
||||||
|
@ -737,12 +737,17 @@ void qse_fio_fini (qse_fio_t* fio)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_fio_hnd_t qse_fio_gethandle (qse_fio_t* fio)
|
qse_fio_errnum_t qse_fio_geterrnum (const qse_fio_t* fio)
|
||||||
|
{
|
||||||
|
return fio->errnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
qse_fio_hnd_t qse_fio_gethandle (const qse_fio_t* fio)
|
||||||
{
|
{
|
||||||
return fio->handle;
|
return fio->handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_ubi_t qse_fio_gethandleasubi (qse_fio_t* fio)
|
qse_ubi_t qse_fio_gethandleasubi (const qse_fio_t* fio)
|
||||||
{
|
{
|
||||||
qse_ubi_t handle;
|
qse_ubi_t handle;
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ void qse_htb_fini (htb_t* htb)
|
|||||||
QSE_MMGR_FREE (htb->mmgr, htb->bucket);
|
QSE_MMGR_FREE (htb->mmgr, htb->bucket);
|
||||||
}
|
}
|
||||||
|
|
||||||
const mancbs_t* qse_htb_getmancbs (htb_t* htb)
|
const mancbs_t* qse_htb_getmancbs (const htb_t* htb)
|
||||||
{
|
{
|
||||||
return htb->mancbs;
|
return htb->mancbs;
|
||||||
}
|
}
|
||||||
@ -333,17 +333,17 @@ void qse_htb_setmancbs (htb_t* htb, const mancbs_t* mancbs)
|
|||||||
htb->mancbs = mancbs;
|
htb->mancbs = mancbs;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t qse_htb_getsize (htb_t* htb)
|
size_t qse_htb_getsize (const htb_t* htb)
|
||||||
{
|
{
|
||||||
return htb->size;
|
return htb->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t qse_htb_getcapa (htb_t* htb)
|
size_t qse_htb_getcapa (const htb_t* htb)
|
||||||
{
|
{
|
||||||
return htb->capa;
|
return htb->capa;
|
||||||
}
|
}
|
||||||
|
|
||||||
pair_t* qse_htb_search (htb_t* htb, const void* kptr, size_t klen)
|
pair_t* qse_htb_search (const htb_t* htb, const void* kptr, size_t klen)
|
||||||
{
|
{
|
||||||
pair_t* pair;
|
pair_t* pair;
|
||||||
size_t hc;
|
size_t hc;
|
||||||
@ -709,7 +709,8 @@ pair_t* qse_htb_getnextpair (htb_t* htb, pair_t* pair, size_t* buckno)
|
|||||||
return QSE_NULL;
|
return QSE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t qse_htb_dflhash (htb_t* htb, const void* kptr, size_t klen)
|
size_t qse_htb_dflhash (
|
||||||
|
const htb_t* htb, const void* kptr, size_t klen)
|
||||||
{
|
{
|
||||||
/*size_t h = 2166136261;*/
|
/*size_t h = 2166136261;*/
|
||||||
/*size_t h = 0;*/
|
/*size_t h = 0;*/
|
||||||
@ -727,7 +728,8 @@ size_t qse_htb_dflhash (htb_t* htb, const void* kptr, size_t klen)
|
|||||||
return h ;
|
return h ;
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_htb_dflcomp (htb_t* htb,
|
int qse_htb_dflcomp (
|
||||||
|
const htb_t* htb,
|
||||||
const void* kptr1, size_t klen1,
|
const void* kptr1, size_t klen1,
|
||||||
const void* kptr2, size_t klen2)
|
const void* kptr2, size_t klen2)
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <qse/cmn/ipad.h>
|
#include <qse/cmn/ipad.h>
|
||||||
|
#include <qse/cmn/hton.h>
|
||||||
|
#include <qse/cmn/str.h>
|
||||||
|
#include "mem.h"
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
const qse_ipad4_t qse_ipad4_any =
|
const qse_ipad4_t qse_ipad4_any =
|
||||||
@ -64,7 +67,6 @@ const qse_ipad6_t qse_ipad6_loopback =
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
int qse_strtoipad4 (const qse_char_t* str, qse_ipad4_t* ipad)
|
int qse_strtoipad4 (const qse_char_t* str, qse_ipad4_t* ipad)
|
||||||
{
|
{
|
||||||
qse_char_t c;
|
qse_char_t c;
|
||||||
@ -218,7 +220,7 @@ int qse_strtoipad6 (const qse_char_t* src, qse_ipad6_t* ipad)
|
|||||||
int saw_xdigit;
|
int saw_xdigit;
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
|
|
||||||
qse_memset (&tmp, 0, QSE_SIZEOF(tmp));
|
QSE_MEMSET (&tmp, 0, QSE_SIZEOF(tmp));
|
||||||
tp = &tmp.value[0];
|
tp = &tmp.value[0];
|
||||||
endp = &tmp.value[QSE_COUNTOF(tmp.value)];
|
endp = &tmp.value[QSE_COUNTOF(tmp.value)];
|
||||||
colonp = QSE_NULL;
|
colonp = QSE_NULL;
|
||||||
@ -347,7 +349,7 @@ int qse_strxtoipad6 (const qse_char_t* src, qse_size_t len, qse_ipad6_t* ipad)
|
|||||||
|
|
||||||
src_end = src + len;
|
src_end = src + len;
|
||||||
|
|
||||||
qse_memset (&tmp, 0, QSE_SIZEOF(tmp));
|
QSE_MEMSET (&tmp, 0, QSE_SIZEOF(tmp));
|
||||||
tp = &tmp.value[0];
|
tp = &tmp.value[0];
|
||||||
endp = &tmp.value[QSE_COUNTOF(tmp.value)];
|
endp = &tmp.value[QSE_COUNTOF(tmp.value)];
|
||||||
colonp = QSE_NULL;
|
colonp = QSE_NULL;
|
||||||
@ -472,7 +474,7 @@ qse_size_t qse_ipad6tostrx (
|
|||||||
* Copy the input (bytewise) array into a wordwise array.
|
* Copy the input (bytewise) array into a wordwise array.
|
||||||
* Find the longest run of 0x00's in src[] for :: shorthanding.
|
* Find the longest run of 0x00's in src[] for :: shorthanding.
|
||||||
*/
|
*/
|
||||||
qse_memset (words, 0, QSE_SIZEOF(words));
|
QSE_MEMSET (words, 0, QSE_SIZEOF(words));
|
||||||
for (i = 0; i < QSE_SIZEOF(ipad->value); i++)
|
for (i = 0; i < QSE_SIZEOF(ipad->value); i++)
|
||||||
words[i / 2] |= (ipad->value[i] << ((1 - (i % 2)) << 3));
|
words[i / 2] |= (ipad->value[i] << ((1 - (i % 2)) << 3));
|
||||||
best.base = -1;
|
best.base = -1;
|
||||||
@ -529,7 +531,7 @@ qse_size_t qse_ipad6tostrx (
|
|||||||
(best.len == 6 || (best.len == 5 && words[5] == 0xffff)))
|
(best.len == 6 || (best.len == 5 && words[5] == 0xffff)))
|
||||||
{
|
{
|
||||||
qse_ipad4_t ipad4;
|
qse_ipad4_t ipad4;
|
||||||
qse_memcpy (&ipad4.value, ipad->value+12, QSE_SIZEOF(ipad4.value));
|
QSE_MEMCPY (&ipad4.value, ipad->value+12, QSE_SIZEOF(ipad4.value));
|
||||||
tp += qse_ipad4tostrx (&ipad4, tp, QSE_SIZEOF(tmp) - (tp - tmp));
|
tp += qse_ipad4tostrx (&ipad4, tp, QSE_SIZEOF(tmp) - (tp - tmp));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -547,6 +549,7 @@ qse_size_t qse_ipad6tostrx (
|
|||||||
#undef IP6ADDR_NWORDS
|
#undef IP6ADDR_NWORDS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
int qse_strtoipad (const qse_char_t* str, qse_ipad_t* ipad)
|
int qse_strtoipad (const qse_char_t* str, qse_ipad_t* ipad)
|
||||||
{
|
{
|
||||||
if (qse_strtoipad4 (str, &ipad->u.ip4) <= -1)
|
if (qse_strtoipad4 (str, &ipad->u.ip4) <= -1)
|
||||||
|
@ -1734,7 +1734,12 @@ void qse_pio_fini (qse_pio_t* pio)
|
|||||||
qse_pio_wait (pio);
|
qse_pio_wait (pio);
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_pio_getoption (qse_pio_t* pio)
|
qse_pio_errnum_t qse_pio_geterrnum (const qse_pio_t* pio)
|
||||||
|
{
|
||||||
|
return pio->errnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
int qse_pio_getoption (const qse_pio_t* pio)
|
||||||
{
|
{
|
||||||
return pio->option;
|
return pio->option;
|
||||||
}
|
}
|
||||||
@ -1744,11 +1749,6 @@ void qse_pio_setoption (qse_pio_t* pio, int opt)
|
|||||||
pio->option = opt;
|
pio->option = opt;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_pio_errnum_t qse_pio_geterrnum (qse_pio_t* pio)
|
|
||||||
{
|
|
||||||
return pio->errnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
qse_cmgr_t* qse_pio_getcmgr (qse_pio_t* pio, qse_pio_hid_t hid)
|
qse_cmgr_t* qse_pio_getcmgr (qse_pio_t* pio, qse_pio_hid_t hid)
|
||||||
{
|
{
|
||||||
return pio->pin[hid].tio?
|
return pio->pin[hid].tio?
|
||||||
@ -1760,12 +1760,12 @@ void qse_pio_setcmgr (qse_pio_t* pio, qse_pio_hid_t hid, qse_cmgr_t* cmgr)
|
|||||||
if (pio->pin[hid].tio) qse_tio_setcmgr (pio->pin[hid].tio, cmgr);
|
if (pio->pin[hid].tio) qse_tio_setcmgr (pio->pin[hid].tio, cmgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_pio_hnd_t qse_pio_gethandle (qse_pio_t* pio, qse_pio_hid_t hid)
|
qse_pio_hnd_t qse_pio_gethandle (const qse_pio_t* pio, qse_pio_hid_t hid)
|
||||||
{
|
{
|
||||||
return pio->pin[hid].handle;
|
return pio->pin[hid].handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_ubi_t qse_pio_gethandleasubi (qse_pio_t* pio, qse_pio_hid_t hid)
|
qse_ubi_t qse_pio_gethandleasubi (const qse_pio_t* pio, qse_pio_hid_t hid)
|
||||||
{
|
{
|
||||||
qse_ubi_t handle;
|
qse_ubi_t handle;
|
||||||
|
|
||||||
@ -1782,7 +1782,7 @@ qse_ubi_t qse_pio_gethandleasubi (qse_pio_t* pio, qse_pio_hid_t hid)
|
|||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_pio_pid_t qse_pio_getchild (qse_pio_t* pio)
|
qse_pio_pid_t qse_pio_getchild (const qse_pio_t* pio)
|
||||||
{
|
{
|
||||||
return pio->child;
|
return pio->child;
|
||||||
}
|
}
|
||||||
|
@ -248,7 +248,7 @@ void qse_rbt_fini (rbt_t* rbt)
|
|||||||
qse_rbt_clear (rbt);
|
qse_rbt_clear (rbt);
|
||||||
}
|
}
|
||||||
|
|
||||||
const mancbs_t* qse_rbt_getmancbs (rbt_t* rbt)
|
const mancbs_t* qse_rbt_getmancbs (const rbt_t* rbt)
|
||||||
{
|
{
|
||||||
return rbt->mancbs;
|
return rbt->mancbs;
|
||||||
}
|
}
|
||||||
@ -259,12 +259,12 @@ void qse_rbt_setmancbs (rbt_t* rbt, const mancbs_t* mancbs)
|
|||||||
rbt->mancbs = mancbs;
|
rbt->mancbs = mancbs;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t qse_rbt_getsize (rbt_t* rbt)
|
size_t qse_rbt_getsize (const rbt_t* rbt)
|
||||||
{
|
{
|
||||||
return rbt->size;
|
return rbt->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
pair_t* qse_rbt_search (rbt_t* rbt, const void* kptr, size_t klen)
|
pair_t* qse_rbt_search (const rbt_t* rbt, const void* kptr, size_t klen)
|
||||||
{
|
{
|
||||||
pair_t* pair = rbt->root;
|
pair_t* pair = rbt->root;
|
||||||
|
|
||||||
@ -972,7 +972,7 @@ void qse_rbt_rwalk (rbt_t* rbt, walker_t walker, void* ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int qse_rbt_dflcomp (
|
int qse_rbt_dflcomp (
|
||||||
qse_rbt_t* rbt,
|
const qse_rbt_t* rbt,
|
||||||
const void* kptr1, size_t klen1,
|
const void* kptr1, size_t klen1,
|
||||||
const void* kptr2, size_t klen2)
|
const void* kptr2, size_t klen2)
|
||||||
{
|
{
|
||||||
|
@ -200,7 +200,7 @@ qse_rex_node_t* qse_rex_yield (qse_rex_t* rex)
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_rex_getoption (qse_rex_t* rex)
|
int qse_rex_getoption (const qse_rex_t* rex)
|
||||||
{
|
{
|
||||||
return rex->option;
|
return rex->option;
|
||||||
}
|
}
|
||||||
@ -210,12 +210,12 @@ void qse_rex_setoption (qse_rex_t* rex, int opts)
|
|||||||
rex->option = opts;
|
rex->option = opts;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_rex_errnum_t qse_rex_geterrnum (qse_rex_t* rex)
|
qse_rex_errnum_t qse_rex_geterrnum (const qse_rex_t* rex)
|
||||||
{
|
{
|
||||||
return rex->errnum;
|
return rex->errnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_char_t* qse_rex_geterrmsg (qse_rex_t* rex)
|
const qse_char_t* qse_rex_geterrmsg (const qse_rex_t* rex)
|
||||||
{
|
{
|
||||||
static const qse_char_t* errstr[] =
|
static const qse_char_t* errstr[] =
|
||||||
{
|
{
|
||||||
|
@ -31,6 +31,14 @@
|
|||||||
# include "syscall.h"
|
# include "syscall.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* internal status codes */
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
STATUS_UTF8_CONSOLE = (1 << 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static qse_ssize_t file_input (
|
static qse_ssize_t file_input (
|
||||||
qse_tio_t* tio, qse_tio_cmd_t cmd, void* buf, qse_size_t size);
|
qse_tio_t* tio, qse_tio_cmd_t cmd, void* buf, qse_size_t size);
|
||||||
static qse_ssize_t file_output (
|
static qse_ssize_t file_output (
|
||||||
@ -113,14 +121,19 @@ qse_sio_t* qse_sio_openstd (
|
|||||||
qse_fio_hnd_t hnd;
|
qse_fio_hnd_t hnd;
|
||||||
|
|
||||||
if (qse_getstdfiohandle (std, &hnd) <= -1) return QSE_NULL;
|
if (qse_getstdfiohandle (std, &hnd) <= -1) return QSE_NULL;
|
||||||
|
|
||||||
sio = qse_sio_open (mmgr, xtnsize,
|
sio = qse_sio_open (mmgr, xtnsize,
|
||||||
(const qse_char_t*)&hnd, flags | QSE_SIO_HANDLE | QSE_SIO_NOCLOSE);
|
(const qse_char_t*)&hnd, flags | QSE_SIO_HANDLE | QSE_SIO_NOCLOSE);
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
if (sio)
|
if (sio)
|
||||||
{
|
{
|
||||||
QSE_ASSERT (std >= 0 && std < QSE_TYPE_MAX(int));
|
DWORD mode;
|
||||||
sio->status = std + 1;
|
if (GetConsoleMode (sio->u.file.handle, &mode) == TRUE &&
|
||||||
|
GetConsoleOutputCP() == CP_UTF8)
|
||||||
|
{
|
||||||
|
sio->status |= STATUS_UTF8_CONSOLE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -190,14 +203,19 @@ int qse_sio_initstd (
|
|||||||
qse_fio_hnd_t hnd;
|
qse_fio_hnd_t hnd;
|
||||||
|
|
||||||
if (qse_getstdfiohandle (std, &hnd) <= -1) return -1;
|
if (qse_getstdfiohandle (std, &hnd) <= -1) return -1;
|
||||||
|
|
||||||
n = qse_sio_init (sio, mmgr,
|
n = qse_sio_init (sio, mmgr,
|
||||||
(const qse_char_t*)&hnd, flags | QSE_SIO_HANDLE | QSE_SIO_NOCLOSE);
|
(const qse_char_t*)&hnd, flags | QSE_SIO_HANDLE | QSE_SIO_NOCLOSE);
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
if (n >= 0)
|
if (n >= 0)
|
||||||
{
|
{
|
||||||
QSE_ASSERT (std >= 0 && std < QSE_TYPE_MAX(int));
|
DWORD mode;
|
||||||
sio->status = std + 1;
|
if (GetConsoleMode (sio->u.file.handle, &mode) == TRUE &&
|
||||||
|
GetConsoleOutputCP() == CP_UTF8)
|
||||||
|
{
|
||||||
|
sio->status |= STATUS_UTF8_CONSOLE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -212,6 +230,11 @@ void qse_sio_fini (qse_sio_t* sio)
|
|||||||
qse_fio_fini (&sio->u.file);
|
qse_fio_fini (&sio->u.file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qse_sio_errnum_t qse_sio_geterrnum (const qse_sio_t* sio)
|
||||||
|
{
|
||||||
|
return sio->errnum;
|
||||||
|
}
|
||||||
|
|
||||||
qse_cmgr_t* qse_sio_getcmgr (qse_sio_t* sio)
|
qse_cmgr_t* qse_sio_getcmgr (qse_sio_t* sio)
|
||||||
{
|
{
|
||||||
return qse_tio_getcmgr (&sio->tio.io);
|
return qse_tio_getcmgr (&sio->tio.io);
|
||||||
@ -222,18 +245,13 @@ void qse_sio_setcmgr (qse_sio_t* sio, qse_cmgr_t* cmgr)
|
|||||||
qse_tio_setcmgr (&sio->tio.io, cmgr);
|
qse_tio_setcmgr (&sio->tio.io, cmgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_sio_errnum_t qse_sio_geterrnum (qse_sio_t* sio)
|
qse_sio_hnd_t qse_sio_gethandle (const qse_sio_t* sio)
|
||||||
{
|
|
||||||
return sio->errnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
qse_sio_hnd_t qse_sio_gethandle (qse_sio_t* sio)
|
|
||||||
{
|
{
|
||||||
/*return qse_fio_gethandle (&sio->u.file);*/
|
/*return qse_fio_gethandle (&sio->u.file);*/
|
||||||
return QSE_FIO_HANDLE(&sio->u.file);
|
return QSE_FIO_HANDLE(&sio->u.file);
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_ubi_t qse_sio_gethandleasubi (qse_sio_t* sio)
|
qse_ubi_t qse_sio_gethandleasubi (const qse_sio_t* sio)
|
||||||
{
|
{
|
||||||
return qse_fio_gethandleasubi (&sio->u.file);
|
return qse_fio_gethandleasubi (&sio->u.file);
|
||||||
}
|
}
|
||||||
@ -390,7 +408,7 @@ qse_ssize_t qse_sio_putmbs (qse_sio_t* sio, const qse_mchar_t* str)
|
|||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
/* Using WriteConsoleA() didn't help at all.
|
/* Using WriteConsoleA() didn't help at all.
|
||||||
* so I don't implement any hack here */
|
* so I don't implement any hacks here */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sio->errnum = QSE_SIO_ENOERR;
|
sio->errnum = QSE_SIO_ENOERR;
|
||||||
@ -408,7 +426,7 @@ qse_ssize_t qse_sio_putmbsn (
|
|||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
/* Using WriteConsoleA() didn't help at all.
|
/* Using WriteConsoleA() didn't help at all.
|
||||||
* so I don't implement any hack here */
|
* so I don't implement any hacks here */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sio->errnum = QSE_SIO_ENOERR;
|
sio->errnum = QSE_SIO_ENOERR;
|
||||||
@ -425,37 +443,31 @@ qse_ssize_t qse_sio_putwcs (qse_sio_t* sio, const qse_wchar_t* str)
|
|||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
/* DAMN UGLY: See comment in qse_sio_putwcsn() */
|
/* DAMN UGLY: See comment in qse_sio_putwcsn() */
|
||||||
if (sio->status)
|
if (sio->status & STATUS_UTF8_CONSOLE)
|
||||||
{
|
{
|
||||||
DWORD mode;
|
DWORD count, left;
|
||||||
|
const qse_wchar_t* cur;
|
||||||
|
|
||||||
if (GetConsoleMode (sio->u.file.handle, &mode) == TRUE &&
|
if (qse_sio_flush (sio) <= -1) return -1; /* can't do buffering */
|
||||||
GetConsoleOutputCP() == CP_UTF8)
|
|
||||||
|
for (cur = str, left = qse_wcslen(str); left > 0; cur += count, left -= count)
|
||||||
{
|
{
|
||||||
DWORD count, left;
|
if (WriteConsoleW (
|
||||||
const qse_wchar_t* cur;
|
sio->u.file.handle, cur, left,
|
||||||
|
&count, QSE_NULL) == FALSE)
|
||||||
if (qse_sio_flush (sio) <= -1) return -1; /* can't do buffering */
|
|
||||||
|
|
||||||
for (cur = str, left = qse_wcslen(str); left > 0; cur += count, left -= count)
|
|
||||||
{
|
{
|
||||||
if (WriteConsoleW (
|
sio->errnum = QSE_SIO_ESYSERR;
|
||||||
sio->u.file.handle, cur, left,
|
return -1;
|
||||||
&count, QSE_NULL) == FALSE)
|
}
|
||||||
{
|
if (count == 0) break;
|
||||||
sio->errnum = QSE_SIO_ESYSERR;
|
|
||||||
return -1;
|
if (count > left)
|
||||||
}
|
{
|
||||||
if (count == 0) break;
|
sio->errnum = QSE_SIO_ESYSERR;
|
||||||
|
return -1;
|
||||||
if (count > left)
|
|
||||||
{
|
|
||||||
sio->errnum = QSE_SIO_ESYSERR;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return cur - str;
|
|
||||||
}
|
}
|
||||||
|
return cur - str;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -484,45 +496,39 @@ qse_ssize_t qse_sio_putwcsn (
|
|||||||
* Note that the multibyte functions qse_sio_putmbs() and
|
* Note that the multibyte functions qse_sio_putmbs() and
|
||||||
* qse_sio_putmbsn() doesn't handle this. So you may still suffer.
|
* qse_sio_putmbsn() doesn't handle this. So you may still suffer.
|
||||||
*/
|
*/
|
||||||
if (sio->status)
|
if (sio->status & STATUS_UTF8_CONSOLE)
|
||||||
{
|
{
|
||||||
DWORD mode;
|
DWORD count, left;
|
||||||
|
const qse_wchar_t* cur;
|
||||||
|
|
||||||
if (GetConsoleMode (sio->u.file.handle, &mode) == TRUE &&
|
if (qse_sio_flush (sio) <= -1) return -1; /* can't do buffering */
|
||||||
GetConsoleOutputCP() == CP_UTF8)
|
|
||||||
|
for (cur = str, left = size; left > 0; cur += count, left -= count)
|
||||||
{
|
{
|
||||||
DWORD count, left;
|
if (WriteConsoleW (
|
||||||
const qse_wchar_t* cur;
|
sio->u.file.handle, cur, left,
|
||||||
|
&count, QSE_NULL) == FALSE)
|
||||||
if (qse_sio_flush (sio) <= -1) return -1; /* can't do buffering */
|
|
||||||
|
|
||||||
for (cur = str, left = size; left > 0; cur += count, left -= count)
|
|
||||||
{
|
{
|
||||||
if (WriteConsoleW (
|
sio->errnum = QSE_SIO_ESYSERR;
|
||||||
sio->u.file.handle, cur, left,
|
return -1;
|
||||||
&count, QSE_NULL) == FALSE)
|
}
|
||||||
{
|
if (count == 0) break;
|
||||||
sio->errnum = QSE_SIO_ESYSERR;
|
|
||||||
return -1;
|
/* Note:
|
||||||
}
|
* WriteConsoleW() in unicosw.dll on win 9x/me returns
|
||||||
if (count == 0) break;
|
* the number of bytes via 'count'. If a double byte
|
||||||
|
* string is given, 'count' can be greater than 'left'.
|
||||||
/* Note:
|
* this case is a miserable failure. however, i don't
|
||||||
* WriteConsoleW() in unicosw.dll on win 9x/me returns
|
* think there is CP_UTF8 codepage for console on win9x/me.
|
||||||
* the number of bytes via 'count'. If a double byte
|
* so let me make this function fail if that ever happens.
|
||||||
* string is given, 'count' can be greater than 'left'.
|
*/
|
||||||
* this case is a miserable failure. however, i don't
|
if (count > left)
|
||||||
* think there is CP_UTF8 codepage for console on win9x/me.
|
{
|
||||||
* so let me make this function fail if that ever happens.
|
sio->errnum = QSE_SIO_ESYSERR;
|
||||||
*/
|
return -1;
|
||||||
if (count > left)
|
|
||||||
{
|
|
||||||
sio->errnum = QSE_SIO_ESYSERR;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return cur - str;
|
|
||||||
}
|
}
|
||||||
|
return cur - str;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -87,7 +87,7 @@ int qse_tio_fini (qse_tio_t* tio)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_tio_errnum_t qse_tio_geterrnum (qse_tio_t* tio)
|
qse_tio_errnum_t qse_tio_geterrnum (const qse_tio_t* tio)
|
||||||
{
|
{
|
||||||
return tio->errnum;
|
return tio->errnum;
|
||||||
}
|
}
|
||||||
|
@ -239,7 +239,7 @@ const Sed::char_t* Sed::getErrorString (errnum_t num) const
|
|||||||
return dflerrstr (sed, num);
|
return dflerrstr (sed, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Sed::char_t* Sed::xerrstr (sed_t* s, errnum_t num)
|
const Sed::char_t* Sed::xerrstr (const sed_t* s, errnum_t num)
|
||||||
{
|
{
|
||||||
Sed* sed = *(Sed**)QSE_XTN(s);
|
Sed* sed = *(Sed**)QSE_XTN(s);
|
||||||
try
|
try
|
||||||
|
@ -65,7 +65,7 @@ const qse_char_t* qse_sed_dflerrstr (qse_sed_t* sed, qse_sed_errnum_t errnum)
|
|||||||
errstr[errnum]: QSE_T("unknown error");
|
errstr[errnum]: QSE_T("unknown error");
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_sed_errstr_t qse_sed_geterrstr (qse_sed_t* sed)
|
qse_sed_errstr_t qse_sed_geterrstr (const qse_sed_t* sed)
|
||||||
{
|
{
|
||||||
return sed->errstr;
|
return sed->errstr;
|
||||||
}
|
}
|
||||||
@ -75,24 +75,24 @@ void qse_sed_seterrstr (qse_sed_t* sed, qse_sed_errstr_t errstr)
|
|||||||
sed->errstr = errstr;
|
sed->errstr = errstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_sed_errnum_t qse_sed_geterrnum (qse_sed_t* sed)
|
qse_sed_errnum_t qse_sed_geterrnum (const qse_sed_t* sed)
|
||||||
{
|
{
|
||||||
return sed->errnum;
|
return sed->errnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_sed_loc_t* qse_sed_geterrloc (qse_sed_t* sed)
|
const qse_sed_loc_t* qse_sed_geterrloc (const qse_sed_t* sed)
|
||||||
{
|
{
|
||||||
return &sed->errloc;
|
return &sed->errloc;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_char_t* qse_sed_geterrmsg (qse_sed_t* sed)
|
const qse_char_t* qse_sed_geterrmsg (const qse_sed_t* sed)
|
||||||
{
|
{
|
||||||
return (sed->errmsg[0] == QSE_T('\0'))?
|
return (sed->errmsg[0] == QSE_T('\0'))?
|
||||||
qse_sed_geterrstr(sed)(sed,sed->errnum): sed->errmsg;
|
qse_sed_geterrstr(sed)(sed,sed->errnum): sed->errmsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_sed_geterror (
|
void qse_sed_geterror (
|
||||||
qse_sed_t* sed, qse_sed_errnum_t* errnum,
|
const qse_sed_t* sed, qse_sed_errnum_t* errnum,
|
||||||
const qse_char_t** errmsg, qse_sed_loc_t* errloc)
|
const qse_char_t** errmsg, qse_sed_loc_t* errloc)
|
||||||
{
|
{
|
||||||
if (errnum != QSE_NULL) *errnum = sed->errnum;
|
if (errnum != QSE_NULL) *errnum = sed->errnum;
|
||||||
|
@ -137,13 +137,13 @@ void qse_sed_setoption (qse_sed_t* sed, int option)
|
|||||||
sed->option = option;
|
sed->option = option;
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_sed_getoption (qse_sed_t* sed)
|
int qse_sed_getoption (const qse_sed_t* sed)
|
||||||
{
|
{
|
||||||
return sed->option;
|
return sed->option;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(USE_REX)
|
#if defined(USE_REX)
|
||||||
qse_size_t qse_sed_getmaxdepth (qse_sed_t* sed, qse_sed_depth_t id)
|
qse_size_t qse_sed_getmaxdepth (const qse_sed_t* sed, qse_sed_depth_t id)
|
||||||
{
|
{
|
||||||
return (id & QSE_SED_DEPTH_REX_BUILD)? sed->depth.rex.build:
|
return (id & QSE_SED_DEPTH_REX_BUILD)? sed->depth.rex.build:
|
||||||
(id & QSE_SED_DEPTH_REX_MATCH)? sed->depth.rex.match: 0;
|
(id & QSE_SED_DEPTH_REX_MATCH)? sed->depth.rex.match: 0;
|
||||||
|
@ -243,8 +243,8 @@ const qse_char_t* qse_sed_dflerrstr (
|
|||||||
* The qse_sed_getmaxdepth() gets the maximum processing depth.
|
* The qse_sed_getmaxdepth() gets the maximum processing depth.
|
||||||
*/
|
*/
|
||||||
qse_size_t qse_sed_getmaxdepth (
|
qse_size_t qse_sed_getmaxdepth (
|
||||||
qse_sed_t* sed, /**< stream editor */
|
const qse_sed_t* sed, /**< stream editor */
|
||||||
qse_sed_depth_t id /**< one of qse_sed_depth_t values */
|
qse_sed_depth_t id /**< one of qse_sed_depth_t values */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -208,6 +208,10 @@ static void close_main_stream (
|
|||||||
* i close this in qse_awk_execstd()
|
* i close this in qse_awk_execstd()
|
||||||
*/
|
*/
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* do nothing */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -827,7 +831,7 @@ int qse_sed_compstdstr (qse_sed_t* sed, const qse_char_t* script)
|
|||||||
qse_sed_iostd_t in[2];
|
qse_sed_iostd_t in[2];
|
||||||
|
|
||||||
in[0].type = QSE_SED_IOSTD_STR;
|
in[0].type = QSE_SED_IOSTD_STR;
|
||||||
in[0].u.str.ptr = script;
|
in[0].u.str.ptr = (qse_char_t*)script;
|
||||||
in[0].u.str.len = qse_strlen(script);
|
in[0].u.str.len = qse_strlen(script);
|
||||||
in[1].type = QSE_SED_IOSTD_NULL;
|
in[1].type = QSE_SED_IOSTD_NULL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user