blob: 61485618baedf5e9f8e85cdbf9238b0a932bf029 [file] [log] [blame]
/*
*******************************************************************************
*
* Copyright (C) 2009-2012, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*/
#ifndef _ICUGLUE_H
#define _ICUGLUE_H
/* Get utypes.h from whatever ICU we are under */
#include <unicode/utypes.h>
#define GLUE_SYM_V(x, v) glue ## x ## v
/**
* how to parse a version string.
* old: 3_6_X, 3_8_X, 4_4_X, 4_8_X
* new: 49_X, 50_X, 51_X, ...
*
* example use:
* char *str = "50_0_0", str1="49_1_2",str2="4_8_1_1";
* if(IS_OLD_VERSION(str)) {
* maj = str[OLD_VERSTR_MAJ];
* min = str[OLD_VERSTR_MIN];
* } else {
* maj = str[NEW_VERSTR_MAJ];
* min = str[NEW_VERSTR_MIN];
* }
*/
#define IS_OLD_VERSTR(x) ((x[0]<'4') || ((x[0]=='4') && (x[2]<'9') && (x[2]>='0')))
#define OLD_VERSTR_MAJ 0
#define OLD_VERSTR_MIN 2
#define NEW_VERSTR_MAJ 0
#define NEW_VERSTR_MIN 1
/**
* copy version into dst[0] and dst[1]
* does not modify dst ptr
*/
#define CPY_VERSTR(dst,ver) if(IS_OLD_VERSTR(ver)) \
{ \
(dst)[0]=ver[OLD_VERSTR_MAJ]; \
(dst)[1]=ver[OLD_VERSTR_MIN]; \
} else { \
(dst)[0]=ver[NEW_VERSTR_MAJ]; \
(dst)[1]=ver[NEW_VERSTR_MIN]; \
}
/**
* compare a verstr to a string
* @param str a 2 char string such as "50", "44", "49"
* @param ver a verstr such as "50_0_2", "4_8_1_1", etc
* @return true or false
*/
#define CMP_VERSTR(str,ver) \
( (IS_OLD_VERSTR(ver)) ? \
( \
(str)[0]==ver[OLD_VERSTR_MAJ] && \
(str)[1]==ver[OLD_VERSTR_MIN] \
):( \
(str)[0]==ver[NEW_VERSTR_MAJ]&& \
(str)[1]==ver[NEW_VERSTR_MIN] \
) \
)
#endif