Index: include/freetype/internal/ftserv.h |
diff --git a/include/freetype/internal/ftserv.h b/include/freetype/internal/ftserv.h |
index 569b9f7e0e8571f3a7d36af6760507f4d3db2d7e..4f481db02de31baaafaab6ca95515bd780e6eead 100644 |
--- a/include/freetype/internal/ftserv.h |
+++ b/include/freetype/internal/ftserv.h |
@@ -4,7 +4,7 @@ |
/* */ |
/* The FreeType services (specification only). */ |
/* */ |
-/* Copyright 2003, 2004, 2005, 2006, 2007 by */ |
+/* Copyright 2003-2007, 2009, 2012 by */ |
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used, */ |
@@ -163,298 +163,366 @@ FT_BEGIN_HEADER |
typedef const FT_ServiceDescRec* FT_ServiceDesc; |
+ |
/*************************************************************************/ |
/* */ |
/* <Macro> */ |
/* FT_DEFINE_SERVICEDESCREC1 .. FT_DEFINE_SERVICEDESCREC6 */ |
/* */ |
/* <Description> */ |
- /* Used to initialize an array of FT_ServiceDescRec structs. */ |
+ /* Used to initialize an array of FT_ServiceDescRec structures. */ |
/* */ |
- /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */ |
- /* to called with a pointer where the allocated array is returned. */ |
- /* And when it is no longer needed a Destroy function needs */ |
- /* to be called to release that allocation. */ |
+ /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs to */ |
+ /* be called with a pointer to return an allocated array. As soon as */ |
+ /* it is no longer needed, a `destroy' function needs to be called to */ |
+ /* release that allocation. */ |
/* */ |
- /* These functions should be manyally called from the pic_init and */ |
- /* pic_free functions of your module (see FT_DEFINE_MODULE) */ |
+ /* These functions should be manually called from the `pic_init' and */ |
+ /* `pic_free' functions of your module (see FT_DEFINE_MODULE). */ |
/* */ |
/* When FT_CONFIG_OPTION_PIC is not defined the array will be */ |
- /* allocated in the global scope (or the scope where the macro */ |
- /* is used). */ |
+ /* allocated in the global scope (or the scope where the macro is */ |
+ /* used). */ |
/* */ |
#ifndef FT_CONFIG_OPTION_PIC |
-#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1) \ |
- static const FT_ServiceDescRec class_[] = \ |
- { \ |
- {serv_id_1, serv_data_1}, \ |
- {NULL, NULL} \ |
+#define FT_DEFINE_SERVICEDESCREC1( class_, \ |
+ serv_id_1, serv_data_1 ) \ |
+ static const FT_ServiceDescRec class_[] = \ |
+ { \ |
+ { serv_id_1, serv_data_1 }, \ |
+ { NULL, NULL } \ |
}; |
-#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2) \ |
- static const FT_ServiceDescRec class_[] = \ |
- { \ |
- {serv_id_1, serv_data_1}, \ |
- {serv_id_2, serv_data_2}, \ |
- {NULL, NULL} \ |
+ |
+#define FT_DEFINE_SERVICEDESCREC2( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2 ) \ |
+ static const FT_ServiceDescRec class_[] = \ |
+ { \ |
+ { serv_id_1, serv_data_1 }, \ |
+ { serv_id_2, serv_data_2 }, \ |
+ { NULL, NULL } \ |
}; |
-#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3) \ |
- static const FT_ServiceDescRec class_[] = \ |
- { \ |
- {serv_id_1, serv_data_1}, \ |
- {serv_id_2, serv_data_2}, \ |
- {serv_id_3, serv_data_3}, \ |
- {NULL, NULL} \ |
+ |
+#define FT_DEFINE_SERVICEDESCREC3( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3 ) \ |
+ static const FT_ServiceDescRec class_[] = \ |
+ { \ |
+ { serv_id_1, serv_data_1 }, \ |
+ { serv_id_2, serv_data_2 }, \ |
+ { serv_id_3, serv_data_3 }, \ |
+ { NULL, NULL } \ |
}; |
-#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3, \ |
- serv_id_4, serv_data_4) \ |
- static const FT_ServiceDescRec class_[] = \ |
- { \ |
- {serv_id_1, serv_data_1}, \ |
- {serv_id_2, serv_data_2}, \ |
- {serv_id_3, serv_data_3}, \ |
- {serv_id_4, serv_data_4}, \ |
- {NULL, NULL} \ |
+ |
+#define FT_DEFINE_SERVICEDESCREC4( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3, \ |
+ serv_id_4, serv_data_4 ) \ |
+ static const FT_ServiceDescRec class_[] = \ |
+ { \ |
+ { serv_id_1, serv_data_1 }, \ |
+ { serv_id_2, serv_data_2 }, \ |
+ { serv_id_3, serv_data_3 }, \ |
+ { serv_id_4, serv_data_4 }, \ |
+ { NULL, NULL } \ |
}; |
-#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3, \ |
- serv_id_4, serv_data_4, serv_id_5, serv_data_5) \ |
- static const FT_ServiceDescRec class_[] = \ |
- { \ |
- {serv_id_1, serv_data_1}, \ |
- {serv_id_2, serv_data_2}, \ |
- {serv_id_3, serv_data_3}, \ |
- {serv_id_4, serv_data_4}, \ |
- {serv_id_5, serv_data_5}, \ |
- {NULL, NULL} \ |
+ |
+#define FT_DEFINE_SERVICEDESCREC5( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3, \ |
+ serv_id_4, serv_data_4, \ |
+ serv_id_5, serv_data_5 ) \ |
+ static const FT_ServiceDescRec class_[] = \ |
+ { \ |
+ { serv_id_1, serv_data_1 }, \ |
+ { serv_id_2, serv_data_2 }, \ |
+ { serv_id_3, serv_data_3 }, \ |
+ { serv_id_4, serv_data_4 }, \ |
+ { serv_id_5, serv_data_5 }, \ |
+ { NULL, NULL } \ |
}; |
-#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3, \ |
- serv_id_4, serv_data_4, serv_id_5, serv_data_5, \ |
- serv_id_6, serv_data_6) \ |
- static const FT_ServiceDescRec class_[] = \ |
- { \ |
- {serv_id_1, serv_data_1}, \ |
- {serv_id_2, serv_data_2}, \ |
- {serv_id_3, serv_data_3}, \ |
- {serv_id_4, serv_data_4}, \ |
- {serv_id_5, serv_data_5}, \ |
- {serv_id_6, serv_data_6}, \ |
- {NULL, NULL} \ |
+ |
+#define FT_DEFINE_SERVICEDESCREC6( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3, \ |
+ serv_id_4, serv_data_4, \ |
+ serv_id_5, serv_data_5, \ |
+ serv_id_6, serv_data_6 ) \ |
+ static const FT_ServiceDescRec class_[] = \ |
+ { \ |
+ { serv_id_1, serv_data_1 }, \ |
+ { serv_id_2, serv_data_2 }, \ |
+ { serv_id_3, serv_data_3 }, \ |
+ { serv_id_4, serv_data_4 }, \ |
+ { serv_id_5, serv_data_5 }, \ |
+ { serv_id_6, serv_data_6 }, \ |
+ { NULL, NULL } \ |
}; |
-#else /* FT_CONFIG_OPTION_PIC */ |
- |
-#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1) \ |
- void \ |
- FT_Destroy_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec* clazz ) \ |
- { \ |
- FT_Memory memory = library->memory; \ |
- if ( clazz ) \ |
- FT_FREE( clazz ); \ |
- } \ |
- \ |
- FT_Error \ |
- FT_Create_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec** output_class) \ |
- { \ |
- FT_ServiceDescRec* clazz; \ |
- FT_Error error; \ |
- FT_Memory memory = library->memory; \ |
- \ |
- if ( FT_ALLOC( clazz, sizeof(*clazz)*2 ) ) \ |
- return error; \ |
- clazz[0].serv_id = serv_id_1; \ |
- clazz[0].serv_data = serv_data_1; \ |
- clazz[1].serv_id = NULL; \ |
- clazz[1].serv_data = NULL; \ |
- *output_class = clazz; \ |
- return FT_Err_Ok; \ |
- } |
- |
-#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2) \ |
- void \ |
- FT_Destroy_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec* clazz ) \ |
- { \ |
- FT_Memory memory = library->memory; \ |
- if ( clazz ) \ |
- FT_FREE( clazz ); \ |
- } \ |
- \ |
- FT_Error \ |
- FT_Create_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec** output_class) \ |
- { \ |
- FT_ServiceDescRec* clazz; \ |
- FT_Error error; \ |
- FT_Memory memory = library->memory; \ |
- \ |
- if ( FT_ALLOC( clazz, sizeof(*clazz)*3 ) ) \ |
- return error; \ |
- clazz[0].serv_id = serv_id_1; \ |
- clazz[0].serv_data = serv_data_1; \ |
- clazz[1].serv_id = serv_id_2; \ |
- clazz[1].serv_data = serv_data_2; \ |
- clazz[2].serv_id = NULL; \ |
- clazz[2].serv_data = NULL; \ |
- *output_class = clazz; \ |
- return FT_Err_Ok; \ |
- } |
- |
-#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3) \ |
- void \ |
- FT_Destroy_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec* clazz ) \ |
- { \ |
- FT_Memory memory = library->memory; \ |
- if ( clazz ) \ |
- FT_FREE( clazz ); \ |
- } \ |
- \ |
- FT_Error \ |
- FT_Create_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec** output_class) \ |
- { \ |
- FT_ServiceDescRec* clazz; \ |
- FT_Error error; \ |
- FT_Memory memory = library->memory; \ |
- \ |
- if ( FT_ALLOC( clazz, sizeof(*clazz)*4 ) ) \ |
- return error; \ |
- clazz[0].serv_id = serv_id_1; \ |
- clazz[0].serv_data = serv_data_1; \ |
- clazz[1].serv_id = serv_id_2; \ |
- clazz[1].serv_data = serv_data_2; \ |
- clazz[2].serv_id = serv_id_3; \ |
- clazz[2].serv_data = serv_data_3; \ |
- clazz[3].serv_id = NULL; \ |
- clazz[3].serv_data = NULL; \ |
- *output_class = clazz; \ |
- return FT_Err_Ok; \ |
- } |
- |
-#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3, \ |
- serv_id_4, serv_data_4) \ |
- void \ |
- FT_Destroy_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec* clazz ) \ |
- { \ |
- FT_Memory memory = library->memory; \ |
- if ( clazz ) \ |
- FT_FREE( clazz ); \ |
- } \ |
- \ |
- FT_Error \ |
- FT_Create_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec** output_class) \ |
- { \ |
- FT_ServiceDescRec* clazz; \ |
- FT_Error error; \ |
- FT_Memory memory = library->memory; \ |
- \ |
- if ( FT_ALLOC( clazz, sizeof(*clazz)*5 ) ) \ |
- return error; \ |
- clazz[0].serv_id = serv_id_1; \ |
- clazz[0].serv_data = serv_data_1; \ |
- clazz[1].serv_id = serv_id_2; \ |
- clazz[1].serv_data = serv_data_2; \ |
- clazz[2].serv_id = serv_id_3; \ |
- clazz[2].serv_data = serv_data_3; \ |
- clazz[3].serv_id = serv_id_4; \ |
- clazz[3].serv_data = serv_data_4; \ |
- clazz[4].serv_id = NULL; \ |
- clazz[4].serv_data = NULL; \ |
- *output_class = clazz; \ |
- return FT_Err_Ok; \ |
- } |
- |
-#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3, serv_id_4, \ |
- serv_data_4, serv_id_5, serv_data_5) \ |
- void \ |
- FT_Destroy_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec* clazz ) \ |
- { \ |
- FT_Memory memory = library->memory; \ |
- if ( clazz ) \ |
- FT_FREE( clazz ); \ |
- } \ |
- \ |
- FT_Error \ |
- FT_Create_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec** output_class) \ |
- { \ |
- FT_ServiceDescRec* clazz; \ |
- FT_Error error; \ |
- FT_Memory memory = library->memory; \ |
- \ |
- if ( FT_ALLOC( clazz, sizeof(*clazz)*6 ) ) \ |
- return error; \ |
- clazz[0].serv_id = serv_id_1; \ |
- clazz[0].serv_data = serv_data_1; \ |
- clazz[1].serv_id = serv_id_2; \ |
- clazz[1].serv_data = serv_data_2; \ |
- clazz[2].serv_id = serv_id_3; \ |
- clazz[2].serv_data = serv_data_3; \ |
- clazz[3].serv_id = serv_id_4; \ |
- clazz[3].serv_data = serv_data_4; \ |
- clazz[4].serv_id = serv_id_5; \ |
- clazz[4].serv_data = serv_data_5; \ |
- clazz[5].serv_id = NULL; \ |
- clazz[5].serv_data = NULL; \ |
- *output_class = clazz; \ |
- return FT_Err_Ok; \ |
- } |
- |
-#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1, \ |
- serv_id_2, serv_data_2, serv_id_3, serv_data_3, \ |
- serv_id_4, serv_data_4, serv_id_5, serv_data_5, \ |
- serv_id_6, serv_data_6) \ |
- void \ |
- FT_Destroy_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec* clazz ) \ |
- { \ |
- FT_Memory memory = library->memory; \ |
- if ( clazz ) \ |
- FT_FREE( clazz ); \ |
- } \ |
- \ |
- FT_Error \ |
- FT_Create_Class_##class_( FT_Library library, \ |
- FT_ServiceDescRec** output_class) \ |
- { \ |
- FT_ServiceDescRec* clazz; \ |
- FT_Error error; \ |
- FT_Memory memory = library->memory; \ |
- \ |
- if ( FT_ALLOC( clazz, sizeof(*clazz)*7 ) ) \ |
- return error; \ |
- clazz[0].serv_id = serv_id_1; \ |
- clazz[0].serv_data = serv_data_1; \ |
- clazz[1].serv_id = serv_id_2; \ |
- clazz[1].serv_data = serv_data_2; \ |
- clazz[2].serv_id = serv_id_3; \ |
- clazz[2].serv_data = serv_data_3; \ |
- clazz[3].serv_id = serv_id_4; \ |
- clazz[3].serv_data = serv_data_4; \ |
- clazz[4].serv_id = serv_id_5; \ |
- clazz[4].serv_data = serv_data_5; \ |
- clazz[5].serv_id = serv_id_6; \ |
- clazz[5].serv_data = serv_data_6; \ |
- clazz[6].serv_id = NULL; \ |
- clazz[6].serv_data = NULL; \ |
- *output_class = clazz; \ |
- return FT_Err_Ok; \ |
- } |
-#endif /* FT_CONFIG_OPTION_PIC */ |
+#else /* FT_CONFIG_OPTION_PIC */ |
+ |
+#define FT_DEFINE_SERVICEDESCREC1( class_, \ |
+ serv_id_1, serv_data_1 ) \ |
+ void \ |
+ FT_Destroy_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec* clazz ) \ |
+ { \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( clazz ) \ |
+ FT_FREE( clazz ); \ |
+ } \ |
+ \ |
+ FT_Error \ |
+ FT_Create_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec** output_class ) \ |
+ { \ |
+ FT_ServiceDescRec* clazz; \ |
+ FT_Error error; \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) ) \ |
+ return error; \ |
+ \ |
+ clazz[0].serv_id = serv_id_1; \ |
+ clazz[0].serv_data = serv_data_1; \ |
+ clazz[1].serv_id = NULL; \ |
+ clazz[1].serv_data = NULL; \ |
+ \ |
+ *output_class = clazz; \ |
+ \ |
+ return FT_Err_Ok; \ |
+ } |
+ |
+#define FT_DEFINE_SERVICEDESCREC2( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2 ) \ |
+ void \ |
+ FT_Destroy_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec* clazz ) \ |
+ { \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( clazz ) \ |
+ FT_FREE( clazz ); \ |
+ } \ |
+ \ |
+ FT_Error \ |
+ FT_Create_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec** output_class ) \ |
+ { \ |
+ FT_ServiceDescRec* clazz; \ |
+ FT_Error error; \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) ) \ |
+ return error; \ |
+ \ |
+ clazz[0].serv_id = serv_id_1; \ |
+ clazz[0].serv_data = serv_data_1; \ |
+ clazz[1].serv_id = serv_id_2; \ |
+ clazz[1].serv_data = serv_data_2; \ |
+ clazz[2].serv_id = NULL; \ |
+ clazz[2].serv_data = NULL; \ |
+ \ |
+ *output_class = clazz; \ |
+ \ |
+ return FT_Err_Ok; \ |
+ } |
+ |
+#define FT_DEFINE_SERVICEDESCREC3( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3 ) \ |
+ void \ |
+ FT_Destroy_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec* clazz ) \ |
+ { \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( clazz ) \ |
+ FT_FREE( clazz ); \ |
+ } \ |
+ \ |
+ FT_Error \ |
+ FT_Create_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec** output_class ) \ |
+ { \ |
+ FT_ServiceDescRec* clazz; \ |
+ FT_Error error; \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) ) \ |
+ return error; \ |
+ \ |
+ clazz[0].serv_id = serv_id_1; \ |
+ clazz[0].serv_data = serv_data_1; \ |
+ clazz[1].serv_id = serv_id_2; \ |
+ clazz[1].serv_data = serv_data_2; \ |
+ clazz[2].serv_id = serv_id_3; \ |
+ clazz[2].serv_data = serv_data_3; \ |
+ clazz[3].serv_id = NULL; \ |
+ clazz[3].serv_data = NULL; \ |
+ \ |
+ *output_class = clazz; \ |
+ \ |
+ return FT_Err_Ok; \ |
+ } |
+ |
+#define FT_DEFINE_SERVICEDESCREC4( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3, \ |
+ serv_id_4, serv_data_4 ) \ |
+ void \ |
+ FT_Destroy_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec* clazz ) \ |
+ { \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( clazz ) \ |
+ FT_FREE( clazz ); \ |
+ } \ |
+ \ |
+ FT_Error \ |
+ FT_Create_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec** output_class ) \ |
+ { \ |
+ FT_ServiceDescRec* clazz; \ |
+ FT_Error error; \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) ) \ |
+ return error; \ |
+ \ |
+ clazz[0].serv_id = serv_id_1; \ |
+ clazz[0].serv_data = serv_data_1; \ |
+ clazz[1].serv_id = serv_id_2; \ |
+ clazz[1].serv_data = serv_data_2; \ |
+ clazz[2].serv_id = serv_id_3; \ |
+ clazz[2].serv_data = serv_data_3; \ |
+ clazz[3].serv_id = serv_id_4; \ |
+ clazz[3].serv_data = serv_data_4; \ |
+ clazz[4].serv_id = NULL; \ |
+ clazz[4].serv_data = NULL; \ |
+ \ |
+ *output_class = clazz; \ |
+ \ |
+ return FT_Err_Ok; \ |
+ } |
+ |
+#define FT_DEFINE_SERVICEDESCREC5( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3, \ |
+ serv_id_4, serv_data_4, \ |
+ serv_id_5, serv_data_5 ) \ |
+ void \ |
+ FT_Destroy_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec* clazz ) \ |
+ { \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( clazz ) \ |
+ FT_FREE( clazz ); \ |
+ } \ |
+ \ |
+ FT_Error \ |
+ FT_Create_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec** output_class ) \ |
+ { \ |
+ FT_ServiceDescRec* clazz; \ |
+ FT_Error error; \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) ) \ |
+ return error; \ |
+ \ |
+ clazz[0].serv_id = serv_id_1; \ |
+ clazz[0].serv_data = serv_data_1; \ |
+ clazz[1].serv_id = serv_id_2; \ |
+ clazz[1].serv_data = serv_data_2; \ |
+ clazz[2].serv_id = serv_id_3; \ |
+ clazz[2].serv_data = serv_data_3; \ |
+ clazz[3].serv_id = serv_id_4; \ |
+ clazz[3].serv_data = serv_data_4; \ |
+ clazz[4].serv_id = serv_id_5; \ |
+ clazz[4].serv_data = serv_data_5; \ |
+ clazz[5].serv_id = NULL; \ |
+ clazz[5].serv_data = NULL; \ |
+ \ |
+ *output_class = clazz; \ |
+ \ |
+ return FT_Err_Ok; \ |
+ } |
+ |
+#define FT_DEFINE_SERVICEDESCREC6( class_, \ |
+ serv_id_1, serv_data_1, \ |
+ serv_id_2, serv_data_2, \ |
+ serv_id_3, serv_data_3, \ |
+ serv_id_4, serv_data_4, \ |
+ serv_id_5, serv_data_5, \ |
+ serv_id_6, serv_data_6 ) \ |
+ void \ |
+ FT_Destroy_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec* clazz ) \ |
+ { \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( clazz ) \ |
+ FT_FREE( clazz ); \ |
+ } \ |
+ \ |
+ FT_Error \ |
+ FT_Create_Class_ ## class_( FT_Library library, \ |
+ FT_ServiceDescRec** output_class) \ |
+ { \ |
+ FT_ServiceDescRec* clazz; \ |
+ FT_Error error; \ |
+ FT_Memory memory = library->memory; \ |
+ \ |
+ \ |
+ if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) ) \ |
+ return error; \ |
+ \ |
+ clazz[0].serv_id = serv_id_1; \ |
+ clazz[0].serv_data = serv_data_1; \ |
+ clazz[1].serv_id = serv_id_2; \ |
+ clazz[1].serv_data = serv_data_2; \ |
+ clazz[2].serv_id = serv_id_3; \ |
+ clazz[2].serv_data = serv_data_3; \ |
+ clazz[3].serv_id = serv_id_4; \ |
+ clazz[3].serv_data = serv_data_4; \ |
+ clazz[4].serv_id = serv_id_5; \ |
+ clazz[4].serv_data = serv_data_5; \ |
+ clazz[5].serv_id = serv_id_6; \ |
+ clazz[5].serv_data = serv_data_6; \ |
+ clazz[6].serv_id = NULL; \ |
+ clazz[6].serv_data = NULL; \ |
+ \ |
+ *output_class = clazz; \ |
+ \ |
+ return FT_Err_Ok; \ |
+ } |
+ |
+#endif /* FT_CONFIG_OPTION_PIC */ |
+ |
/* |
* Parse a list of FT_ServiceDescRec descriptors and look for |