added QSE_STR_CSTR()

This commit is contained in:
hyung-hwan 2011-05-19 21:33:28 +00:00
parent 6eebf4baa2
commit f0e64b56eb
2 changed files with 33 additions and 15 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: str.h 462 2011-05-18 14:36:40Z hyunghwan.chung $ * $Id: str.h 464 2011-05-19 03:33:28Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -31,19 +31,35 @@
* deal with a string pointer and length in a structure. * deal with a string pointer and length in a structure.
*/ */
#define QSE_MBS_XSTR(s) (&((s)->val)) /**< string pointer and length as a aggregate */ /** string pointer and length as a aggregate */
#define QSE_MBS_LEN(s) ((s)->val.len) /**< string length */ #define QSE_MBS_XSTR(s) (&((s)->val))
#define QSE_MBS_PTR(s) ((s)->val.ptr) /**< string buffer pointer */ /** constant string pointer and length as a aggregate */
#define QSE_MBS_CAPA(s) ((s)->capa) /**< string buffer capacity */ #define QSE_MBS_CSTR(s) ((qse_mcstr_t*)&((s)->val))
#define QSE_MBS_CHAR(s,idx) ((s)->val.ptr[idx]) /**< character at given position */ /** string length */
#define QSE_MBS_LASTCHAR(s) ((s)->val.ptr[(s)->val.len-1]) /**< last character. unsafe if length <= 0 */ #define QSE_MBS_LEN(s) ((s)->val.len)
/** string pointer */
#define QSE_MBS_PTR(s) ((s)->val.ptr)
/** string capacity */
#define QSE_MBS_CAPA(s) ((s)->capa)
/** character at the given position */
#define QSE_MBS_CHAR(s,idx) ((s)->val.ptr[idx])
/**< last character. unsafe if length <= 0 */
#define QSE_MBS_LASTCHAR(s) ((s)->val.ptr[(s)->val.len-1])
#define QSE_WCS_XSTR(s) (&((s)->val)) /**< string pointer and length as an aggregate*/ /** string pointer and length as a aggregate */
#define QSE_WCS_LEN(s) ((s)->val.len) /**< string buffer length */ #define QSE_WCS_XSTR(s) (&((s)->val))
#define QSE_WCS_PTR(s) ((s)->val.ptr) /**< string buffer pointer */ /** constant string pointer and length as a aggregate */
#define QSE_WCS_CAPA(s) ((s)->capa) /**< string buffer capacity */ #define QSE_WCS_CSTR(s) ((qse_wcstr_t*)&((s)->val))
#define QSE_WCS_CHAR(s,idx) ((s)->val.ptr[idx]) /**< character at given position */ /** string length */
#define QSE_WCS_LASTCHAR(s) ((s)->val.ptr[(s)->val.len-1]) /**< last character. unsafe if length <= 0 */ #define QSE_WCS_LEN(s) ((s)->val.len)
/** string pointer */
#define QSE_WCS_PTR(s) ((s)->val.ptr)
/** string capacity */
#define QSE_WCS_CAPA(s) ((s)->capa)
/** character at the given position */
#define QSE_WCS_CHAR(s,idx) ((s)->val.ptr[idx])
/**< last character. unsafe if length <= 0 */
#define QSE_WCS_LASTCHAR(s) ((s)->val.ptr[(s)->val.len-1])
typedef struct qse_mbs_t qse_mbs_t; typedef struct qse_mbs_t qse_mbs_t;
typedef struct qse_wcs_t qse_wcs_t; typedef struct qse_wcs_t qse_wcs_t;
@ -60,6 +76,7 @@ typedef qse_size_t (*qse_wcs_sizer_t) (
#ifdef QSE_CHAR_IS_MCHAR #ifdef QSE_CHAR_IS_MCHAR
# define QSE_STR_XSTR(s) ((qse_xstr_t*)QSE_MBS_XSTR(s)) # define QSE_STR_XSTR(s) ((qse_xstr_t*)QSE_MBS_XSTR(s))
# define QSE_STR_CSTR(s) ((qse_cstr_t*)QSE_MBS_XSTR(s))
# define QSE_STR_LEN(s) QSE_MBS_LEN(s) # define QSE_STR_LEN(s) QSE_MBS_LEN(s)
# define QSE_STR_PTR(s) QSE_MBS_PTR(s) # define QSE_STR_PTR(s) QSE_MBS_PTR(s)
# define QSE_STR_CAPA(s) QSE_MBS_CAPA(s) # define QSE_STR_CAPA(s) QSE_MBS_CAPA(s)
@ -69,6 +86,7 @@ typedef qse_size_t (*qse_wcs_sizer_t) (
# define qse_str_sizer_t qse_mbs_sizer_t # define qse_str_sizer_t qse_mbs_sizer_t
#else #else
# define QSE_STR_XSTR(s) ((qse_xstr_t*)QSE_WCS_XSTR(s)) # define QSE_STR_XSTR(s) ((qse_xstr_t*)QSE_WCS_XSTR(s))
# define QSE_STR_CSTR(s) ((qse_cstr_t*)QSE_WCS_XSTR(s))
# define QSE_STR_LEN(s) QSE_WCS_LEN(s) # define QSE_STR_LEN(s) QSE_WCS_LEN(s)
# define QSE_STR_PTR(s) QSE_WCS_PTR(s) # define QSE_STR_PTR(s) QSE_WCS_PTR(s)
# define QSE_STR_CAPA(s) QSE_WCS_CAPA(s) # define QSE_STR_CAPA(s) QSE_WCS_CAPA(s)

View File

@ -1,5 +1,5 @@
/* /*
* $Id: rio.c 462 2011-05-18 14:36:40Z hyunghwan.chung $ * $Id: rio.c 464 2011-05-19 03:33:28Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -231,7 +231,7 @@ static QSE_INLINE int match_long_rs (
ret = QSE_AWK_MATCHREX ( ret = QSE_AWK_MATCHREX (
run->awk, run->gbl.rs, run->awk, run->gbl.rs,
((run->gbl.ignorecase)? QSE_REX_IGNORECASE: 0), ((run->gbl.ignorecase)? QSE_REX_IGNORECASE: 0),
QSE_STR_XSTR(buf), QSE_STR_XSTR(buf), QSE_STR_CSTR(buf), QSE_STR_CSTR(buf),
&match, &errnum); &match, &errnum);
if (ret <= -1) if (ret <= -1)
{ {