annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/fontconfig/fcprivate.h @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
rev   line source
jpayne@69 1 /*
jpayne@69 2 * fontconfig/fontconfig/fcprivate.h
jpayne@69 3 *
jpayne@69 4 * Copyright © 2001 Keith Packard
jpayne@69 5 *
jpayne@69 6 * Permission to use, copy, modify, distribute, and sell this software and its
jpayne@69 7 * documentation for any purpose is hereby granted without fee, provided that
jpayne@69 8 * the above copyright notice appear in all copies and that both that
jpayne@69 9 * copyright notice and this permission notice appear in supporting
jpayne@69 10 * documentation, and that the name of the author(s) not be used in
jpayne@69 11 * advertising or publicity pertaining to distribution of the software without
jpayne@69 12 * specific, written prior permission. The authors make no
jpayne@69 13 * representations about the suitability of this software for any purpose. It
jpayne@69 14 * is provided "as is" without express or implied warranty.
jpayne@69 15 *
jpayne@69 16 * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
jpayne@69 17 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
jpayne@69 18 * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
jpayne@69 19 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
jpayne@69 20 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
jpayne@69 21 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
jpayne@69 22 * PERFORMANCE OF THIS SOFTWARE.
jpayne@69 23 */
jpayne@69 24
jpayne@69 25 #ifndef _FCPRIVATE_H_
jpayne@69 26 #define _FCPRIVATE_H_
jpayne@69 27
jpayne@69 28 /*
jpayne@69 29 * I tried this with functions that took va_list* arguments
jpayne@69 30 * but portability concerns made me change these functions
jpayne@69 31 * into macros (sigh).
jpayne@69 32 */
jpayne@69 33
jpayne@69 34 #define FcPatternVapBuild(result, orig, va) \
jpayne@69 35 { \
jpayne@69 36 FcPattern *__p__ = (orig); \
jpayne@69 37 const char *__o__; \
jpayne@69 38 FcValue __v__; \
jpayne@69 39 \
jpayne@69 40 if (!__p__) \
jpayne@69 41 { \
jpayne@69 42 __p__ = FcPatternCreate (); \
jpayne@69 43 if (!__p__) \
jpayne@69 44 goto _FcPatternVapBuild_bail0; \
jpayne@69 45 } \
jpayne@69 46 for (;;) \
jpayne@69 47 { \
jpayne@69 48 __o__ = va_arg (va, const char *); \
jpayne@69 49 if (!__o__) \
jpayne@69 50 break; \
jpayne@69 51 __v__.type = va_arg (va, int); \
jpayne@69 52 switch (__v__.type) { \
jpayne@69 53 case FcTypeUnknown: \
jpayne@69 54 case FcTypeVoid: \
jpayne@69 55 goto _FcPatternVapBuild_bail1; \
jpayne@69 56 case FcTypeInteger: \
jpayne@69 57 __v__.u.i = va_arg (va, int); \
jpayne@69 58 break; \
jpayne@69 59 case FcTypeDouble: \
jpayne@69 60 __v__.u.d = va_arg (va, double); \
jpayne@69 61 break; \
jpayne@69 62 case FcTypeString: \
jpayne@69 63 __v__.u.s = va_arg (va, const FcChar8 *); \
jpayne@69 64 break; \
jpayne@69 65 case FcTypeBool: \
jpayne@69 66 __v__.u.b = va_arg (va, FcBool); \
jpayne@69 67 break; \
jpayne@69 68 case FcTypeMatrix: \
jpayne@69 69 __v__.u.m = va_arg (va, const FcMatrix *); \
jpayne@69 70 break; \
jpayne@69 71 case FcTypeCharSet: \
jpayne@69 72 __v__.u.c = va_arg (va, const FcCharSet *); \
jpayne@69 73 break; \
jpayne@69 74 case FcTypeFTFace: \
jpayne@69 75 __v__.u.f = va_arg (va, FT_Face); \
jpayne@69 76 break; \
jpayne@69 77 case FcTypeLangSet: \
jpayne@69 78 __v__.u.l = va_arg (va, const FcLangSet *); \
jpayne@69 79 break; \
jpayne@69 80 case FcTypeRange: \
jpayne@69 81 __v__.u.r = va_arg (va, const FcRange *); \
jpayne@69 82 break; \
jpayne@69 83 } \
jpayne@69 84 if (!FcPatternAdd (__p__, __o__, __v__, FcTrue)) \
jpayne@69 85 goto _FcPatternVapBuild_bail1; \
jpayne@69 86 } \
jpayne@69 87 result = __p__; \
jpayne@69 88 goto _FcPatternVapBuild_return; \
jpayne@69 89 \
jpayne@69 90 _FcPatternVapBuild_bail1: \
jpayne@69 91 if (!orig) \
jpayne@69 92 FcPatternDestroy (__p__); \
jpayne@69 93 _FcPatternVapBuild_bail0: \
jpayne@69 94 result = (void*)0; \
jpayne@69 95 \
jpayne@69 96 _FcPatternVapBuild_return: \
jpayne@69 97 ; \
jpayne@69 98 }
jpayne@69 99
jpayne@69 100
jpayne@69 101 #define FcObjectSetVapBuild(__ret__, __first__, __va__) \
jpayne@69 102 { \
jpayne@69 103 FcObjectSet *__os__; \
jpayne@69 104 const char *__ob__; \
jpayne@69 105 \
jpayne@69 106 __ret__ = 0; \
jpayne@69 107 __os__ = FcObjectSetCreate (); \
jpayne@69 108 if (!__os__) \
jpayne@69 109 goto _FcObjectSetVapBuild_bail0; \
jpayne@69 110 __ob__ = __first__; \
jpayne@69 111 while (__ob__) \
jpayne@69 112 { \
jpayne@69 113 if (!FcObjectSetAdd (__os__, __ob__)) \
jpayne@69 114 goto _FcObjectSetVapBuild_bail1; \
jpayne@69 115 __ob__ = va_arg (__va__, const char *); \
jpayne@69 116 } \
jpayne@69 117 __ret__ = __os__; \
jpayne@69 118 \
jpayne@69 119 _FcObjectSetVapBuild_bail1: \
jpayne@69 120 if (!__ret__ && __os__) \
jpayne@69 121 FcObjectSetDestroy (__os__); \
jpayne@69 122 _FcObjectSetVapBuild_bail0: \
jpayne@69 123 ; \
jpayne@69 124 }
jpayne@69 125
jpayne@69 126 #ifndef FC_ATTRIBUTE_VISIBILITY_HIDDEN
jpayne@69 127 #define FC_ATTRIBUTE_VISIBILITY_HIDDEN __attribute((visibility("hidden")))
jpayne@69 128 #endif
jpayne@69 129
jpayne@69 130 #ifndef FC_ATTRIBUTE_VISIBILITY_EXPORT
jpayne@69 131 #define FC_ATTRIBUTE_VISIBILITY_EXPORT __attribute((visibility("default")))
jpayne@69 132 #endif
jpayne@69 133
jpayne@69 134 #endif /* _FCPRIVATE_H_ */