X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Finternal.h;h=71020db6db4dde1a7fd08e67649a313e7473c248;hb=f2834223388500696694f941b9dbc8200e8e795a;hp=9a67711e3aa4e2d6ad21990416edfa6c7b340b8c;hpb=e53b74c5a18e0225bdf4254413fb360fb05aad4d;p=m17n%2Fm17n-lib.git diff --git a/src/internal.h b/src/internal.h index 9a67711..71020db 100644 --- a/src/internal.h +++ b/src/internal.h @@ -1,5 +1,5 @@ /* internal.h -- common header file for the internal CORE and SHELL APIs. - Copyright (C) 2003, 2004 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H15PRO112 @@ -17,7 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with the m17n library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 02111-1307, USA. */ #ifndef _M17N_INTERNAL_H_ @@ -35,6 +35,13 @@ extern int m17n__gui_initialized; extern int mdebug_hook (); +#if ENABLE_NLS +#include +#define _(String) dgettext ("m17n-lib", String) +#else +#define _(String) (String) +#endif + /** Return with code RET while setting merror_code to ERR. */ #define MERROR(err, ret) \ @@ -66,6 +73,8 @@ extern int mdebug_hook (); exit (err); \ } while (0) +#define MFAILP(cond) ((cond) ? 0 : mdebug_hook ()) + #define M_CHECK_CHAR(c, ret) \ if ((c) < 0 || (c) > MCHAR_MAX) \ MERROR (MERROR_CHAR, (ret)); \ @@ -108,6 +117,9 @@ extern int mdebug_hook (); MEMORY_FULL (err); \ } while (0) +#define MTABLE_CALLOC_SAFE(p, size) \ + ((p) = (void *) calloc (sizeof (*(p)), (size))) + /** The macro MTABLE_REALLOC () changes the size of memory block pointed to by P to a size suitable for an array of SIZE objects. @@ -153,6 +165,8 @@ extern int mdebug_hook (); #define MSTRUCT_CALLOC(p, err) MTABLE_CALLOC ((p), 1, (err)) +#define MSTRUCT_CALLOC_SAFE(p) MTABLE_CALLOC_SAFE ((p), 1) + #define USE_SAFE_ALLOCA \ int sa_must_free = 0, sa_size = 0 @@ -401,21 +415,21 @@ struct _M17NObjectArray extern void mdebug__add_object_array (M17NObjectArray *array, char *name); #define M17N_OBJECT_ADD_ARRAY(array, name) \ - if (mdebug__flag & MDEBUG_FINI) \ + if (mdebug__flags[MDEBUG_FINI]) \ mdebug__add_object_array (&array, name); \ else extern void mdebug__register_object (M17NObjectArray *array, void *object); #define M17N_OBJECT_REGISTER(array, object) \ - if (mdebug__flag & MDEBUG_FINI) \ + if (mdebug__flags[MDEBUG_FINI]) \ mdebug__register_object (&array, object); \ else extern void mdebug__unregister_object (M17NObjectArray *array, void *object); #define M17N_OBJECT_UNREGISTER(array, object) \ - if (mdebug__flag & MDEBUG_FINI) \ + if (mdebug__flags[MDEBUG_FINI]) \ mdebug__unregister_object (&array, object); \ else @@ -434,8 +448,8 @@ struct MText { M17NObject control; - enum MTextFormat format : 16; - enum MTextCoverage coverage : 16; + unsigned format : 16; + unsigned coverage : 16; /**en Number of characters in the M-text */ /**ja M-text Ãæ¤Îʸ»ú¿ô */ @@ -526,85 +540,90 @@ struct MText -enum MDebugMaskBit +enum MDebugFlag { - MDEBUG_INIT = 0x01, - MDEBUG_FINI = 0x02, - MDEBUG_CHARSET = 0x04, - MDEBUG_CODING = 0x08, - MDEBUG_DATABASE = 0x10, - MDEBUG_FONT = 0x0100, - MDEBUG_FONT_FLT = 0x0200, - MDEBUG_FONT_OTF = 0x0400, - MDEBUG_INPUT = 0x0800, - MDEBUG_MAX + MDEBUG_INIT, + MDEBUG_FINI, + MDEBUG_CHARSET, + MDEBUG_CODING, + MDEBUG_DATABASE, + MDEBUG_FONT, + MDEBUG_FLT, + MDEBUG_FONTSET, + MDEBUG_INPUT, + MDEBUG_ALL, + MDEBUG_MAX = MDEBUG_ALL }; -extern int mdebug__flag; +extern int mdebug__flags[MDEBUG_MAX]; +extern FILE *mdebug__output; extern void mdebug__push_time (); extern void mdebug__pop_time (); extern void mdebug__print_time (); -#define MDEBUG_PRINT(msg) \ - do { \ - if (mdebug__flag & mdebug_mask) \ - fprintf (stderr, (msg)); \ - } while (0) +#define MDEBUG_FLAG() mdebug__flags[mdebug_flag] -#define MDEBUG_PRINT1(fmt, arg) \ +#define MDEBUG_PRINT0(FPRINTF) \ do { \ - if (mdebug__flag & mdebug_mask) \ - fprintf (stderr, (fmt), (arg)); \ + if (MDEBUG_FLAG ()) \ + { \ + FPRINTF; \ + fflush (mdebug__output); \ + } \ } while (0) -#define MDEBUG_PRINT2(fmt, arg1, arg2) \ - do { \ - if (mdebug__flag & mdebug_mask) \ - fprintf (stderr, (fmt), (arg1), (arg2)); \ - } while (0) +#define MDEBUG_PRINT(msg) \ + MDEBUG_PRINT0 (fprintf (mdebug__output, "%s", (msg))) -#define MDEBUG_PRINT3(fmt, arg1, arg2, arg3) \ - do { \ - if (mdebug__flag & mdebug_mask) \ - fprintf (stderr, (fmt), (arg1), (arg2), (arg3)); \ - } while (0) +#define MDEBUG_PRINT1(fmt, arg) \ + MDEBUG_PRINT0 (fprintf (mdebug__output, (fmt), (arg))) -#define MDEBUG_PRINT4(fmt, arg1, arg2, arg3, arg4) \ - do { \ - if (mdebug__flag & mdebug_mask) \ - fprintf (stderr, (fmt), (arg1), (arg2), (arg3), (arg4)); \ - } while (0) +#define MDEBUG_PRINT2(fmt, arg1, arg2) \ + MDEBUG_PRINT0 (fprintf (mdebug__output, (fmt), (arg1), (arg2))) -#define MDEBUG_PRINT5(fmt, arg1, arg2, arg3, arg4, arg5) \ - do { \ - if (mdebug__flag & mdebug_mask) \ - fprintf (stderr, (fmt), (arg1), (arg2), (arg3), (arg4), (arg5)); \ - } while (0) +#define MDEBUG_PRINT3(fmt, arg1, arg2, arg3) \ + MDEBUG_PRINT0 (fprintf (mdebug__output, (fmt), (arg1), (arg2), (arg3))) +#define MDEBUG_PRINT4(fmt, arg1, arg2, arg3, arg4) \ + MDEBUG_PRINT0 (fprintf (mdebug__output, (fmt), (arg1), (arg2), (arg3), (arg4))) -#define MDEBUG_PUSH_TIME() \ - do { \ - if (mdebug__flag & mdebug_mask) \ - mdebug__push_time (); \ +#define MDEBUG_PRINT5(fmt, arg1, arg2, arg3, arg4, arg5) \ + MDEBUG_PRINT0 (fprintf (mdebug__output, (fmt), (arg1), (arg2), (arg3), (arg4), (arg5))) + +#define MDEBUG_DUMP(prefix, postfix, call) \ + do { \ + if (MDEBUG_FLAG ()) \ + { \ + fprintf (mdebug__output, "%s", prefix); \ + call; \ + fprintf (mdebug__output, "%s", postfix); \ + fflush (mdebug__output); \ + } \ } while (0) +#define MDEBUG_PUSH_TIME() \ + do { \ + if (MDEBUG_FLAG ()) \ + mdebug__push_time (); \ + } while (0) -#define MDEBUG_POP_TIME() \ - do { \ - if (mdebug__flag & mdebug_mask) \ - mdebug__pop_time (); \ + +#define MDEBUG_POP_TIME() \ + do { \ + if (MDEBUG_FLAG ()) \ + mdebug__pop_time (); \ } while (0) -#define MDEBUG_PRINT_TIME(tag, ARG_LIST) \ - do { \ - if (mdebug__flag & mdebug_mask) \ - { \ - fprintf (stderr, " [%s] ", tag); \ - mdebug__print_time (); \ - fprintf ARG_LIST; \ - fprintf (stderr, "\n"); \ - } \ +#define MDEBUG_PRINT_TIME(tag, ARG_LIST) \ + do { \ + if (MDEBUG_FLAG ()) \ + { \ + fprintf (mdebug__output, " [%s] ", tag); \ + mdebug__print_time (); \ + fprintf ARG_LIST; \ + fprintf (mdebug__output, "\n"); \ + } \ } while (0) @@ -615,10 +634,6 @@ extern void mdebug__print_time (); | (((c) & 0xFF00) << 8) | (((c) & 0xFF) << 24)) -extern void *(*mdatabase__finder) (MSymbol tag1, MSymbol tag2, - MSymbol tag3, MSymbol tag4); -extern void *(*mdatabase__loader) (void *); - /* Initialize/finalize function. */ extern int msymbol__init ();