| /* |
| ******************************************************************************* |
| * |
| * 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 |