Upload tizen 2.0 beta source
[framework/graphics/freetype.git] / src / base / ftinit.c
index 305177a..91f8e2a 100644 (file)
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType initialization layer (body).                                */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002, 2005, 2007, 2009 by                         */
+/*  Copyright 1996-2001, 2002, 2005, 2007, 2009, 2012 by                   */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_init
 
+
 #ifndef FT_CONFIG_OPTION_PIC
 
+
 #undef  FT_USE_MODULE
 #ifdef __cplusplus
 #define FT_USE_MODULE( type, x )  extern "C" const type  x;
 #define FT_USE_MODULE( type, x )  extern const type  x;
 #endif
 
-
 #include FT_CONFIG_MODULES_H
 
-
 #undef  FT_USE_MODULE
 #define FT_USE_MODULE( type, x )  (const FT_Module_Class*)&(x),
 
     0
   };
 
+
 #else /* FT_CONFIG_OPTION_PIC */
 
+
 #ifdef __cplusplus
 #define FT_EXTERNC  extern "C"
 #else
 
   /* declare the module's class creation/destruction functions */
 #undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )  \
-  FT_EXTERNC FT_Error FT_Create_Class_##x( FT_Library library, FT_Module_Class** output_class ); \
-  FT_EXTERNC void     FT_Destroy_Class_##x( FT_Library library, FT_Module_Class*  clazz );
+#define FT_USE_MODULE( type, x )                            \
+  FT_EXTERNC FT_Error                                       \
+  FT_Create_Class_ ## x( FT_Library         library,        \
+                         FT_Module_Class*  *output_class ); \
+  FT_EXTERNC void                                           \
+  FT_Destroy_Class_ ## x( FT_Library        library,        \
+                          FT_Module_Class*  clazz );
 
 #include FT_CONFIG_MODULES_H
 
-
   /* count all module classes */
 #undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )  MODULE_CLASS_##x,
+#define FT_USE_MODULE( type, x )  MODULE_CLASS_ ## x,
 
   enum
   {
     FT_NUM_MODULE_CLASSES
   };
 
-  /* destroy all module classes */  
+  /* destroy all module classes */
 #undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )  \
-  if ( classes[i] ) { FT_Destroy_Class_##x(library, classes[i]); } \
-  i++;                                                             \
+#define FT_USE_MODULE( type, x )                   \
+  if ( classes[i] )                                \
+  {                                                \
+    FT_Destroy_Class_ ## x( library, classes[i] ); \
+  }                                                \
+  i++;
+
 
   FT_BASE_DEF( void )
   ft_destroy_default_module_classes( FT_Library  library )
   {
-    FT_Module_Class** classes;
-    FT_Memory         memory;
-    FT_UInt           i;
-    BasePIC*          pic_container = (BasePIC*)library->pic_container.base;
+    FT_Module_Class*  *classes;
+    FT_Memory          memory;
+    FT_UInt            i;
+    BasePIC*           pic_container = (BasePIC*)library->pic_container.base;
+
 
     if ( !pic_container->default_module_classes )
       return;
 
-    memory = library->memory;
+    memory  = library->memory;
     classes = pic_container->default_module_classes;
-    i = 0;
+    i       = 0;
 
 #include FT_CONFIG_MODULES_H
 
     pic_container->default_module_classes = 0;
   }
 
+
   /* initialize all module classes and the pointer table */
 #undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )                \
-  error = FT_Create_Class_##x(library, &clazz); \
-  if (error) goto Exit;                         \
+#define FT_USE_MODULE( type, x )                     \
+  error = FT_Create_Class_ ## x( library, &clazz );  \
+  if ( error )                                       \
+    goto Exit;                                       \
   classes[i++] = clazz;
 
+
   FT_BASE_DEF( FT_Error )
   ft_create_default_module_classes( FT_Library  library )
   {
-    FT_Error          error;
-    FT_Memory         memory;
-    FT_Module_Class** classes;
-    FT_Module_Class*  clazz;
-    FT_UInt           i;
-    BasePIC*          pic_container = (BasePIC*)library->pic_container.base;
-
-    memory = library->memory;  
+    FT_Error           error;
+    FT_Memory          memory;
+    FT_Module_Class*  *classes;
+    FT_Module_Class*   clazz;
+    FT_UInt            i;
+    BasePIC*           pic_container = (BasePIC*)library->pic_container.base;
+
+
+    memory = library->memory;
+
     pic_container->default_module_classes = 0;
 
-    if ( FT_ALLOC(classes, sizeof(FT_Module_Class*) * (FT_NUM_MODULE_CLASSES + 1) ) )
+    if ( FT_ALLOC( classes, sizeof ( FT_Module_Class* ) * 
+                              ( FT_NUM_MODULE_CLASSES + 1 ) ) )
       return error;
+
     /* initialize all pointers to 0, especially the last one */
-    for (i = 0; i < FT_NUM_MODULE_CLASSES; i++)
+    for ( i = 0; i < FT_NUM_MODULE_CLASSES; i++ )
       classes[i] = 0;
     classes[FT_NUM_MODULE_CLASSES] = 0;
 
 
 #include FT_CONFIG_MODULES_H
 
-Exit:    
-    if (error) ft_destroy_default_module_classes( library );
-    else pic_container->default_module_classes = classes;
+  Exit:
+    if ( error )
+      ft_destroy_default_module_classes( library );
+    else
+      pic_container->default_module_classes = classes;
 
-    return error;    
+    return error;
   }
 
 
 #endif /* FT_CONFIG_OPTION_PIC */
 
+
   /* documentation is in ftmodapi.h */
 
   FT_EXPORT_DEF( void )
@@ -181,9 +201,18 @@ Exit:
     const FT_Module_Class* const*  cur;
 
 
-    /* test for valid `library' delayed to FT_Add_Module() */
+    /* FT_DEFAULT_MODULES_GET dereferences `library' in PIC mode */
+#ifdef FT_CONFIG_OPTION_PIC
+    if ( !library )
+      return;
+#endif
+
+    /* GCC 4.6 warns the type difference:
+     *   FT_Module_Class** != const FT_Module_Class* const*
+     */
+    cur = (const FT_Module_Class* const*)FT_DEFAULT_MODULES_GET;
 
-    cur = FT_DEFAULT_MODULES_GET;
+    /* test for valid `library' delayed to FT_Add_Module() */
     while ( *cur )
     {
       error = FT_Add_Module( library, *cur );