added qse_nwad_t and related functions

This commit is contained in:
2012-02-27 15:44:57 +00:00
parent ee8609daf4
commit 8b95a1d26c
11 changed files with 1180 additions and 237 deletions

View File

@ -188,17 +188,13 @@ qse_wcint_t qse_towctype (
int qse_getwctypebyname (
const qse_wchar_t* name,
qse_wctype_t* id
qse_wctype_t* id
);
int qse_getwctypebyxname (
const qse_wchar_t* name,
qse_size_t len,
qse_wctype_t* id
);
qse_wctype_t qse_getwctype (
const qse_wchar_t* name
qse_wctype_t* id
);
int qse_getmctypebyname (
@ -209,25 +205,19 @@ int qse_getmctypebyname (
int qse_getmctypebyxname (
const qse_mchar_t* name,
qse_size_t len,
qse_mctype_t* id
qse_mctype_t* id
);
qse_mctype_t qse_getmctype (
const qse_mchar_t* name
);
#ifdef QSE_CHAR_IS_MCHAR
# define qse_isctype(c,type) qse_ismctype(c,type)
# define qse_toctype(c,type) qse_ismctype(c,type)
# define qse_getctypebyname(name,id) qse_getmctypebyname(name,id)
# define qse_getctypebyxname(name,len,id) qse_getmctypebyxname(name,len,id)
# define qse_getctype(name) qse_getmctype(name)
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_isctype(c,type) qse_ismctype(c,type)
# define qse_toctype(c,type) qse_ismctype(c,type)
# define qse_strtoctype(name,id) qse_mbstoctype(name,id)
# define qse_strntoctype(name,len,id) qse_mbsntoctype(name,len,id)
#else
# define qse_isctype(c,type) qse_iswctype(c,type)
# define qse_toctype(c,type) qse_towctype(c,type)
# define qse_getctypebyname(name,id) qse_getwctypebyname(name,id)
# define qse_getctypebyxname(name,len,id) qse_getwctypebyxname(name,len,id)
# define qse_getctype(name) qse_getwctype(name)
# define qse_isctype(c,type) qse_iswctype(c,type)
# define qse_toctype(c,type) qse_towctype(c,type)
# define qse_strtoctype(name,id) qse_wcstoctype(name,id)
# define qse_strntoctype(name,len,id) qse_wcsntoctype(name,len,id)
#endif
#ifdef __cplusplus

View File

@ -102,6 +102,50 @@ qse_size_t qse_ipad4towcs (
# define qse_ipad4tostr(ipad,ptr,len) qse_ipad4towcs(ipad,ptr,len)
#endif
int qse_mbstoipad6 (
const qse_mchar_t* mbs,
qse_ipad6_t* ipad
);
int qse_mbsntoipad6 (
const qse_mchar_t* mbs,
qse_size_t len,
qse_ipad6_t* ipad
);
int qse_wcstoipad6 (
const qse_wchar_t* wcs,
qse_ipad6_t* ipad
);
int qse_wcsntoipad6 (
const qse_wchar_t* wcs,
qse_size_t len,
qse_ipad6_t* ipad
);
qse_size_t qse_ipad6tombs (
const qse_ipad6_t* ipad,
qse_mchar_t* mbs,
qse_size_t len
);
qse_size_t qse_ipad6towcs (
const qse_ipad6_t* ipad,
qse_wchar_t* wcs,
qse_size_t len
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strtoipad6(ptr,ipad) qse_mbstoipad6(ptr,ipad)
# define qse_strntoipad6(ptr,len,ipad) qse_mbsntoipad6(ptr,len,ipad)
# define qse_ipad6tostr(ipad,ptr,len) qse_ipad6tombs(ipad,ptr,len)
#else
# define qse_strtoipad6(ptr,ipad) qse_wcstoipad6(ptr,ipad)
# define qse_strntoipad6(ptr,len,ipad) qse_wcsntoipad6(ptr,len,ipad)
# define qse_ipad6tostr(ipad,ptr,len) qse_ipad6towcs(ipad,ptr,len)
#endif
#ifdef __cplusplus
}
#endif

View File

@ -25,28 +25,83 @@
#include <qse/macros.h>
#include <qse/cmn/ipad.h>
typedef struct qse_nwad_t qse_nwad_t;
struct qse_nwad_t
{
enum
{
QSE_NWAD_IP4,
QSE_NWAD_IP6
QSE_NWAD_IN4,
QSE_NWAD_IN6
} type;
union
{
struct
{
qse_ipad4_t addr;
qse_uint16_t port;
} ip4;
qse_ipad4_t addr;
} in4;
struct
{
qse_ipad6_t addr;
qse_uint16_t port;
} ip6;
qse_ipad6_t addr;
qse_uint32_t scope;
} in6;
} u;
};
#ifdef __cplusplus
extern "C" {
#endif
int qse_mbstonwad (
const qse_mchar_t* mbs,
qse_nwad_t* nwad
);
int qse_mbsntonwad (
const qse_mchar_t* mbs,
qse_size_t len,
qse_nwad_t* nwad
);
int qse_wcstonwad (
const qse_wchar_t* wcs,
qse_nwad_t* nwad
);
int qse_wcsntonwad (
const qse_wchar_t* wcs,
qse_size_t len,
qse_nwad_t* nwad
);
qse_size_t qse_nwadtombs (
const qse_nwad_t* nwad,
qse_mchar_t* mbs,
qse_size_t len
);
qse_size_t qse_nwadtowcs (
const qse_nwad_t* nwad,
qse_wchar_t* wcs,
qse_size_t len
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strtonwad(ptr,nwad) qse_mbstonwad(ptr,nwad)
# define qse_strntonwad(ptr,len,nwad) qse_mbsntonwad(ptr,len,nwad)
# define qse_nwadtostr(nwad,ptr,len) qse_nwadtombs(nwad,ptr,len)
#else
# define qse_strtonwad(ptr,nwad) qse_wcstonwad(ptr,nwad)
# define qse_strntonwad(ptr,len,nwad) qse_wcsntonwad(ptr,len,nwad)
# define qse_nwadtostr(nwad,ptr,len) qse_nwadtowcs(nwad,ptr,len)
#endif
#ifdef __cplusplus
}
#endif
#endif