1/***************************************************************************/
2/*                                                                         */
3/*  svprop.h                                                               */
4/*                                                                         */
5/*    The FreeType property service (specification).                       */
6/*                                                                         */
7/*  Copyright 2012 by                                                      */
8/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9/*                                                                         */
10/*  This file is part of the FreeType project, and may only be used,       */
11/*  modified, and distributed under the terms of the FreeType project      */
12/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13/*  this file you indicate that you have read the license and              */
14/*  understand and accept it fully.                                        */
15/*                                                                         */
16/***************************************************************************/
17
18
19#ifndef __SVPROP_H__
20#define __SVPROP_H__
21
22
23FT_BEGIN_HEADER
24
25
26#define FT_SERVICE_ID_PROPERTIES  "properties"
27
28
29  typedef FT_Error
30  (*FT_Properties_SetFunc)( FT_Module    module,
31                            const char*  property_name,
32                            const void*  value );
33
34  typedef FT_Error
35  (*FT_Properties_GetFunc)( FT_Module    module,
36                            const char*  property_name,
37                            void*        value );
38
39
40  FT_DEFINE_SERVICE( Properties )
41  {
42    FT_Properties_SetFunc  set_property;
43    FT_Properties_GetFunc  get_property;
44  };
45
46
47#ifndef FT_CONFIG_OPTION_PIC
48
49#define FT_DEFINE_SERVICE_PROPERTIESREC( class_,          \
50                                         set_property_,   \
51                                         get_property_ )  \
52  static const FT_Service_PropertiesRec  class_ =         \
53  {                                                       \
54    set_property_,                                        \
55    get_property_                                         \
56  };
57
58#else /* FT_CONFIG_OPTION_PIC */
59
60#define FT_DEFINE_SERVICE_PROPERTIESREC( class_,                \
61                                         set_property_,         \
62                                         get_property_ )        \
63  void                                                          \
64  FT_Init_Class_ ## class_( FT_Service_PropertiesRec*  clazz )  \
65  {                                                             \
66    clazz->set_property = set_property_;                        \
67    clazz->get_property = get_property_;                        \
68  }
69
70#endif /* FT_CONFIG_OPTION_PIC */
71
72  /* */
73
74
75FT_END_HEADER
76
77
78#endif /* __SVPROP_H__ */
79
80
81/* END */
82