added str::value().
This commit is contained in:
parent
45b2bc5e57
commit
ffe3bd3207
@ -262,6 +262,31 @@ static int fnc_isxdigit (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi)
|
|||||||
return is_class (rtx, QSE_CTYPE_XDIGIT);
|
return is_class (rtx, QSE_CTYPE_XDIGIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int fnc_value (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi)
|
||||||
|
{
|
||||||
|
/* return the numeric value for the first character */
|
||||||
|
qse_xstr_t path;
|
||||||
|
qse_awk_val_t* retv;
|
||||||
|
qse_awk_val_t* a0;
|
||||||
|
|
||||||
|
a0 = qse_awk_rtx_getarg(rtx, 0);
|
||||||
|
|
||||||
|
path.ptr = qse_awk_rtx_getvalstr (rtx, a0, &path.len);
|
||||||
|
if (path.ptr && path.len >= 1)
|
||||||
|
{
|
||||||
|
#if defined(QSE_CHAR_IS_MCHAR)
|
||||||
|
/* typecasting in case qse_mchar_t is signed */
|
||||||
|
retv = qse_awk_rtx_makeintval (rtx, (unsigned char)path.ptr[0]);
|
||||||
|
#else
|
||||||
|
retv = qse_awk_rtx_makeintval (rtx, path.ptr[0]);
|
||||||
|
#endif
|
||||||
|
qse_awk_rtx_freevalstr (rtx, a0, path.ptr);
|
||||||
|
if (retv) qse_awk_rtx_setretval (rtx, retv);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct fnctab_t fnctab_t;
|
typedef struct fnctab_t fnctab_t;
|
||||||
struct fnctab_t
|
struct fnctab_t
|
||||||
{
|
{
|
||||||
@ -289,7 +314,8 @@ static fnctab_t fnctab[] =
|
|||||||
{ QSE_T("normspace"), { { 1, 1, QSE_NULL }, fnc_normspace, 0 } },
|
{ QSE_T("normspace"), { { 1, 1, QSE_NULL }, fnc_normspace, 0 } },
|
||||||
{ QSE_T("rindex"), { { 2, 3, QSE_NULL }, fnc_rindex, 0 } },
|
{ QSE_T("rindex"), { { 2, 3, QSE_NULL }, fnc_rindex, 0 } },
|
||||||
{ QSE_T("rtrim"), { { 1, 1, QSE_NULL }, fnc_rtrim, 0 } },
|
{ QSE_T("rtrim"), { { 1, 1, QSE_NULL }, fnc_rtrim, 0 } },
|
||||||
{ QSE_T("trim"), { { 1, 1, QSE_NULL }, fnc_trim, 0 } }
|
{ QSE_T("trim"), { { 1, 1, QSE_NULL }, fnc_trim, 0 } },
|
||||||
|
{ QSE_T("value"), { { 1, 1, QSE_NULL }, fnc_value, 0 } }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int query (qse_awk_mod_t* mod, qse_awk_t* awk, const qse_char_t* name, qse_awk_mod_sym_t* sym)
|
static int query (qse_awk_mod_t* mod, qse_awk_t* awk, const qse_char_t* name, qse_awk_mod_sym_t* sym)
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
#elif defined(__DOS__)
|
#elif defined(__DOS__)
|
||||||
# include <dos.h>
|
# include <dos.h>
|
||||||
# include <errno.h>
|
# include <errno.h>
|
||||||
|
#elif defined(macintosh)
|
||||||
|
# include <Files.h>
|
||||||
#else
|
#else
|
||||||
# include "syscall.h"
|
# include "syscall.h"
|
||||||
#endif
|
#endif
|
||||||
@ -155,6 +157,21 @@ static int path_exists (glob_t* g, const qse_char_t* name)
|
|||||||
(errno == ENOENT)? 0: -1;
|
(errno == ENOENT)? 0: -1;
|
||||||
/* ------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#elif defined(macintosh)
|
||||||
|
HFileInfo fpb;
|
||||||
|
const qse_mchar_t* mptr;
|
||||||
|
|
||||||
|
#if defined(QSE_CHAR_IS_MCHAR)
|
||||||
|
mptr = name;
|
||||||
|
#else
|
||||||
|
mptr = wcs_to_mbuf (g, name, &g->mbuf);
|
||||||
|
if (mptr == QSE_NULL) return -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QSE_MEMSET (&fpb, 0, QSE_SIZEOF(fpb));
|
||||||
|
fpb.ioNamePtr = (unsigned char*)mptr;
|
||||||
|
|
||||||
|
return (PBGetCatInfoSync ((CInfoPBRec*)&fpb) == noErr)? 1: 0;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/* ------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------- */
|
||||||
|
@ -28,6 +28,9 @@
|
|||||||
# define HAVE_MBRLEN
|
# define HAVE_MBRLEN
|
||||||
# define HAVE_MBRTOWC
|
# define HAVE_MBRTOWC
|
||||||
# define HAVE_WCRTOMB
|
# define HAVE_WCRTOMB
|
||||||
|
# elif defined(macintosh) && defined(__MWERKS__)
|
||||||
|
# define HAVE_WCHAR_H
|
||||||
|
# define HAVE_STDLIB_H
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -92,8 +95,10 @@ qse_size_t qse_slwcrtoslmb (
|
|||||||
}
|
}
|
||||||
|
|
||||||
return n; /* number of bytes written to the buffer */
|
return n; /* number of bytes written to the buffer */
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error #### NOT SUPPORTED ####
|
/* not supported */
|
||||||
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,8 +173,10 @@ qse_size_t qse_slmbrtoslwc (
|
|||||||
if (n == (size_t)-1) return 0; /* invalid sequence */
|
if (n == (size_t)-1) return 0; /* invalid sequence */
|
||||||
if (n == (size_t)-2) return mbl + 1; /* incomplete sequence */
|
if (n == (size_t)-2) return mbl + 1; /* incomplete sequence */
|
||||||
return (qse_size_t)n;
|
return (qse_size_t)n;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error #### NOT SUPPORTED ####
|
/* not supported */
|
||||||
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,7 +254,8 @@ qse_size_t qse_slmbrlen (
|
|||||||
return (qse_size_t)n;
|
return (qse_size_t)n;
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#error #### NOT SUPPORTED ####
|
/* not supported */
|
||||||
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,9 +291,10 @@ qse_size_t qse_slmblenmax (void)
|
|||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
/* Windows doesn't handle utf8 properly even when your code page
|
/* Windows doesn't handle utf8 properly even when your code page
|
||||||
* is CP_UTF8(65001). you should use functions in utf8.c for utf8
|
* is CP_UTF8(65001). you should use functions in utf8.c for utf8
|
||||||
* handleing on windows. 2 is the maximum for DBCS encodings. */
|
* handling on windows. 2 is the maximum for DBCS encodings. */
|
||||||
return 2;
|
return 2;
|
||||||
#else
|
#else
|
||||||
return MB_CUR_MAX;
|
return MB_CUR_MAX;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +152,15 @@ int qse_gettime (qse_ntime_t* t)
|
|||||||
t->nsec = QSE_MSEC_TO_NSEC(dt.hsecond * 10);
|
t->nsec = QSE_MSEC_TO_NSEC(dt.hsecond * 10);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
#elif defined(macintosh)
|
||||||
|
unsigned long tv;
|
||||||
|
|
||||||
|
GetDateTime (&tv);
|
||||||
|
|
||||||
|
t->sec = tv;
|
||||||
|
tv->nsec = 0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
#else
|
#else
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int n;
|
int n;
|
||||||
|
Loading…
Reference in New Issue
Block a user