added qse_substbasenamedup()/qse_substwcsbasenamedup()/qse_substmbsbasenamedup().

enhanced $INCLUDE handling in raddic
This commit is contained in:
2017-12-14 04:08:10 +00:00
parent 61483e294a
commit 1f56b6cf93
5 changed files with 269 additions and 184 deletions

View File

@ -132,8 +132,14 @@ QSE_EXPORT const qse_mchar_t* qse_mbsbasename (
const qse_mchar_t* path
);
QSE_EXPORT qse_mchar_t* qse_substmbsbasenamedup (
const qse_mchar_t* path,
const qse_mchar_t* file,
qse_mmgr_t* mmgr
);
/**
* The qse_mbspathroot() function returns the core part of \a path
* The qse_mbspathcore() function returns the core part of \a path
* excluding a special prefix.
*/
QSE_EXPORT qse_mchar_t* qse_mbspathcore (
@ -230,8 +236,14 @@ QSE_EXPORT const qse_wchar_t* qse_wcsbasename (
const qse_wchar_t* path
);
QSE_EXPORT qse_wchar_t* qse_substwcsbasenamedup (
const qse_wchar_t* path,
const qse_wchar_t* file,
qse_mmgr_t* mmgr
);
/**
* The qse_wcspathroot() function returns the core part of \a path
* The qse_wcspathcore() function returns the core part of \a path
* excluding a special prefix.
*/
QSE_EXPORT qse_wchar_t* qse_wcspathcore (
@ -286,23 +298,25 @@ QSE_EXPORT qse_wchar_t* qse_mergewcspathdup (
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_isabspath(p) qse_ismbsabspath(p)
# define qse_isdrivepath(p) qse_ismbsdrivepath(p)
# define qse_isdriveabspath(p) qse_ismbsdriveabspath(p)
# define qse_isdrivecurpath(p) qse_ismbsdrivecurpath(p)
# define qse_basename(path) qse_mbsbasename(path)
# define qse_pathcore(p) qse_mbspathcore(p)
# define qse_canonpath(p,c,f) qse_canonmbspath(p,c,f)
# define qse_mergepathdup(d,f,m) qse_mergembspathdup(d,f,m)
# define qse_isabspath(p) qse_ismbsabspath(p)
# define qse_isdrivepath(p) qse_ismbsdrivepath(p)
# define qse_isdriveabspath(p) qse_ismbsdriveabspath(p)
# define qse_isdrivecurpath(p) qse_ismbsdrivecurpath(p)
# define qse_basename(path) qse_mbsbasename(path)
# define qse_pathcore(p) qse_mbspathcore(p)
# define qse_canonpath(p,c,f) qse_canonmbspath(p,c,f)
# define qse_mergepathdup(d,f,m) qse_mergembspathdup(d,f,m)
# define qse_substbasenamedup(d,f,m) qse_substmbsbasenamedup(d,f,m)
#else
# define qse_isabspath(p) qse_iswcsabspath(p)
# define qse_isdrivepath(p) qse_iswcsdrivepath(p)
# define qse_isdriveabspath(p) qse_iswcsdriveabspath(p)
# define qse_isdrivecurpath(p) qse_iswcsdrivecurpath(p)
# define qse_basename(path) qse_wcsbasename(path)
# define qse_pathcore(p) qse_getpathcore(p)
# define qse_canonpath(p,c,f) qse_canonwcspath(p,c,f)
# define qse_mergepathdup(d,f,m) qse_mergewcspathdup(d,f,m)
# define qse_isabspath(p) qse_iswcsabspath(p)
# define qse_isdrivepath(p) qse_iswcsdrivepath(p)
# define qse_isdriveabspath(p) qse_iswcsdriveabspath(p)
# define qse_isdrivecurpath(p) qse_iswcsdrivecurpath(p)
# define qse_basename(path) qse_wcsbasename(path)
# define qse_pathcore(p) qse_wcspathcore(p)
# define qse_canonpath(p,c,f) qse_canonwcspath(p,c,f)
# define qse_mergepathdup(d,f,m) qse_mergewcspathdup(d,f,m)
# define qse_substbasenamedup(d,f,m) qse_substwcsbasenamedup(d,f,m)
#endif
#if defined(__cplusplus)

View File

@ -38,7 +38,8 @@ typedef enum qse_raddic_opt_t qse_raddic_opt_t;
enum qse_raddic_trait_t
{
QSE_RADDIC_ALLOW_CONST_WITHOUT_ATTR = (1 << 0)
QSE_RADDIC_ALLOW_CONST_WITHOUT_ATTR = (1 << 0),
QSE_RADDIC_ALLOW_DUPLICATE_CONST = (1 << 1)
};
typedef enum qse_raddic_trait_t qse_raddic_trait_t;
@ -57,6 +58,8 @@ enum qse_raddic_errnum_t
};
typedef enum qse_raddic_errnum_t qse_raddic_errnum_t;
#if 0
#define QSE_RADDIC_ATTR_TYPE_STRING 0
#define QSE_RADDIC_ATTR_TYPE_INTEGER 1
#define QSE_RADDIC_ATTR_TYPE_IPADDR 2
@ -72,6 +75,60 @@ typedef enum qse_raddic_errnum_t qse_raddic_errnum_t;
#define QSE_RADDIC_ATTR_TYPE_SIGNED 12
#define QSE_RADDIC_ATTR_TYPE_COMBO_IP 13
#define QSE_RADDIC_ATTR_TYPE_TLV 14
#endif
enum qse_raddic_attr_type_t
{
QSE_RADDIC_ATTR_TYPE_INVALID = 0,
QSE_RADDIC_ATTR_TYPE_STRING,
QSE_RADDIC_ATTR_TYPE_OCTETS,
QSE_RADDIC_ATTR_TYPE_IPV4_ADDR,
QSE_RADDIC_ATTR_TYPE_IPV4_PREFIX,
QSE_RADDIC_ATTR_TYPE_IPV6_ADDR,
QSE_RADDIC_ATTR_TYPE_IPV6_PREFIX,
QSE_RADDIC_ATTR_TYPE_IFID,
QSE_RADDIC_ATTR_TYPE_COMBO_IP_ADDR,
QSE_RADDIC_ATTR_TYPE_COMBO_IP_PREFIX,
QSE_RADDIC_ATTR_TYPE_ETHERNET,
QSE_RADDIC_ATTR_TYPE_BOOL,
QSE_RADDIC_ATTR_TYPE_UINT8,
QSE_RADDIC_ATTR_TYPE_UINT16,
QSE_RADDIC_ATTR_TYPE_UINT32,
QSE_RADDIC_ATTR_TYPE_UINT64,
QSE_RADDIC_ATTR_TYPE_INT8,
QSE_RADDIC_ATTR_TYPE_INT16,
QSE_RADDIC_ATTR_TYPE_INT32,
QSE_RADDIC_ATTR_TYPE_INT64,
QSE_RADDIC_ATTR_TYPE_FLOAT32,
QSE_RADDIC_ATTR_TYPE_FLOAT64,
QSE_RADDIC_ATTR_TYPE_TIMEVAL,
QSE_RADDIC_ATTR_TYPE_DATE,
QSE_RADDIC_ATTR_TYPE_DATE_MILLISECONDS,
QSE_RADDIC_ATTR_TYPE_DATE_MICROSECONDS,
QSE_RADDIC_ATTR_TYPE_DATE_NANOSECONDS,
QSE_RADDIC_ATTR_TYPE_ABINARY,
QSE_RADDIC_ATTR_TYPE_SIZE,
QSE_RADDIC_ATTR_TYPE_TLV,
QSE_RADDIC_ATTR_TYPE_STRUCT,
QSE_RADDIC_ATTR_TYPE_EXTENDED,
QSE_RADDIC_ATTR_TYPE_LONG_EXTENDED,
QSE_RADDIC_ATTR_TYPE_VSA,
QSE_RADDIC_ATTR_TYPE_EVS,
QSE_RADDIC_ATTR_TYPE_VENDOR
};
typedef enum qse_raddic_attr_type_t qse_raddic_attr_type_t;
struct qse_raddic_attr_flags_t
{