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