10.2. Data Definitions for libfontconfig

This section defines global identifiers and their values that are associated with interfaces contained in libfontconfig. These definitions are organized into groups that correspond to system headers. This convention is used as a convenience for the reader, and does not imply the existence of these headers, or their content. Where an interface is defined as requiring a particular system header file all of the data definitions for that system header file presented here shall be in effect.

This section gives data definitions to promote binary application portability, not to repeat source interface definitions available elsewhere. System providers and application developers should use this ABI to supplement - not to replace - source interface definition specifications.

This specification uses the ISO C (1999) C Language as the reference programming language, and data definitions are specified in ISO C format. The C language is used here as a convenient notation. Using a C language description of these data objects does not preclude their use by other programming languages.

10.2.1. fontconfig/fcfreetype.h


extern FT_UInt FcFreeTypeCharIndex(FT_Face, FcChar32);
extern FcCharSet *FcFreeTypeCharSet(FT_Face, FcBlanks *);
extern FcCharSet *FcFreeTypeCharSetAndSpacing(FT_Face, FcBlanks *, int *);
extern FcBool FcPatternAddFTFace(FcPattern *, const char *, const FT_Face);
extern FcResult FcPatternGetFTFace(const FcPattern *, const char *, int,
				   FT_Face *);

10.2.2. fontconfig/fcprivate.h


#define FcObjectSetVapBuild(__ret__,__first__,__va__)	 \
	{ FcObjectSet *__os__; const char *__ob__; __ret__ = 0; __os__ = \
	FcObjectSetCreate (); if (!__os__) goto _FcObjectSetVapBuild_bail0; \
	__ob__ = __first__; while (__ob__) { if (!FcObjectSetAdd (__os__, \
	__ob__)) goto _FcObjectSetVapBuild_bail1; __ob__ = va_arg (__va__, \
	const char *); } __ret__ = __os__; _FcObjectSetVapBuild_bail1: if \
	(!__ret__ && __os__) FcObjectSetDestroy (__os__); \
	_FcObjectSetVapBuild_bail0: ; }
#define FcPatternVapBuild(result,orig,va)	{\
    FcPattern   *__p__ = (orig);\
    const char  *__o__;\
    FcValue     __v__;\
    if (!__p__)\
    {\
        __p__ = FcPatternCreate ();\
        if (!__p__)\
            goto _FcPatternVapBuild_bail0;\
    }\
    for (;;)\
    {\
        __o__ = va_arg (va, const char *);\
        if (!__o__)\
            break;\
        __v__.type = va_arg (va, FcType);\
        switch (__v__.type) {\
        case FcTypeVoid:\
            goto _FcPatternVapBuild_bail1;\
        case FcTypeInteger:\
            __v__.u.i = va_arg (va, int);\
            break;\
        case FcTypeDouble:\
            __v__.u.d = va_arg (va, double);\
            break;\
        case FcTypeString:\
            __v__.u.s = va_arg (va, const FcChar8 *);\
            break;\
        case FcTypeBool:\
            __v__.u.b = va_arg (va, FcBool);\
            break;\
        case FcTypeMatrix:\
            __v__.u.m = va_arg (va, const FcMatrix *);\
            break;\
        case FcTypeCharSet:\
            __v__.u.c = va_arg (va, const FcCharSet *);\
            break;\
        case FcTypeFTFace:\
            __v__.u.f = va_arg (va, FT_Face);\
            break;\
        case FcTypeLangSet:\
            __v__.u.l = va_arg (va, const FcLangSet *);\
            break;\
        }\
        if (!FcPatternAdd (__p__, __o__, __v__, FcTrue))\
            goto _FcPatternVapBuild_bail1;\
    }\
    result = __p__;\
    goto _FcPatternVapBuild_return;\
\
_FcPatternVapBuild_bail1:\
    if (!orig)\
        FcPatternDestroy (__p__);\
_FcPatternVapBuild_bail0:\
    result = (void*)0;\
\
_FcPatternVapBuild_return:\
    ;\
}

10.2.3. fontconfig/fontconfig.h


#define _FCFUNCPROTOBEGIN
#define _FCFUNCPROTOEND
#define FC_USER_CACHE_FILE	".fonts.cache-"FC_CACHE_VERSION
#define FC_CACHE_VERSION	"1"
#define FC_DIR_CACHE_FILE	"fonts.cache-"FC_CACHE_VERSION
#define FcIsUpper(c)	((0101 <= (c) && (c) <= 0132))
#define FcIsLower(c)	((0141 <= (c) && (c) <= 0172))
#define FC_CHARSET_DONE	((FcChar32) -1)
#define FC_VERSION	((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
#define FcMatrixInit(m)	((m)->xx = (m)->yy = 1, (m)->xy = (m)->yx = 0)
#define FC_CHARSET_MAP_SIZE	(256/32)
#define FcToLower(c)	(FcIsUpper(c) ? (c) - 0101 + 0141 : (c))
#define FC_HINT_NONE	0
#define FC_PROPORTIONAL	0
#define FC_RGBA_UNKNOWN	0
#define FC_SLANT_ROMAN	0
#define FC_WEIGHT_THIN	0
#define FcFalse	0
#define FC_HINT_SLIGHT	1
#define FC_RGBA_RGB	1
#define FcTrue	1
#define FC_MONO	100
#define FC_SLANT_ITALIC	100
#define FC_WEIGHT_MEDIUM	100
#define FC_WIDTH_NORMAL	100
#define FC_CHARCELL	110
#define FC_SLANT_OBLIQUE	110
#define FC_WIDTH_SEMIEXPANDED	113
#define FC_WIDTH_EXPANDED	125
#define FC_WIDTH_EXTRAEXPANDED	150
#define FC_WEIGHT_DEMIBOLD	180
#define FC_HINT_MEDIUM	2
#define FC_MAJOR	2
#define FC_REVISION	2
#define FC_RGBA_BGR	2
#define FC_WEIGHT_BOLD	200
#define FC_WIDTH_ULTRAEXPANDED	200
#define FC_WEIGHT_EXTRABOLD	205
#define FC_WEIGHT_BLACK	210
#define FC_HINT_FULL	3
#define FC_MINOR	3
#define FC_RGBA_VRGB	3
#define FC_RGBA_VBGR	4
#define FC_WEIGHT_EXTRALIGHT	40
#define FC_RGBA_NONE	5
#define FC_WEIGHT_LIGHT	50
#define FC_WIDTH_ULTRACONDENSED	50
#define FC_UTF8_MAX_LEN	6
#define FC_WIDTH_EXTRACONDENSED	63
#define FC_WEIGHT_BOOK	75
#define FC_WIDTH_CONDENSED	75
#define FC_WEIGHT_REGULAR	80
#define FC_WIDTH_SEMICONDENSED	87
#define FC_DUAL	90
#define FC_ANTIALIAS	"antialias"
#define FC_ASPECT	"aspect"
#define FC_AUTOHINT	"autohint"
#define FC_CAPABILITY	"capability"
#define FC_CHAR_HEIGHT	"charheight"
#define FC_CHARSET	"charset"
#define FC_CHAR_WIDTH	"charwidth"
#define FC_DPI	"dpi"
#define FC_EMBOLDEN	"embolden"
#define FC_FAMILY	"family"
#define FC_FAMILYLANG	"familylang"
#define FC_WEIGHT_HEAVY	FC_WEIGHT_BLACK
#define FC_WEIGHT_SEMIBOLD	FC_WEIGHT_DEMIBOLD
#define FC_WEIGHT_ULTRABOLD	FC_WEIGHT_EXTRABOLD
#define FC_WEIGHT_ULTRALIGHT	FC_WEIGHT_EXTRALIGHT
#define FC_WEIGHT_NORMAL	FC_WEIGHT_REGULAR
#define FC_FILE	"file"
#define FC_FONTFORMAT	"fontformat"
#define FC_FONTVERSION	"fontversion"
#define FC_FOUNDRY	"foundry"
#define FC_FT_FACE	"ftface"
#define FC_FULLNAME	"fullname"
#define FC_FULLNAMELANG	"fullnamelang"
#define FC_GLOBAL_ADVANCE	"globaladvance"
#define FC_HINTING	"hinting"
#define FC_HINT_STYLE	"hintstyle"
#define FC_INDEX	"index"
#define FC_LANG	"lang"
#define FC_MATRIX	"matrix"
#define FC_MINSPACE	"minspace"
#define FC_OUTLINE	"outline"
#define FC_PIXEL_SIZE	"pixelsize"
#define FC_RASTERIZER	"rasterizer"
#define FC_RGBA	"rgba"
#define FC_SCALABLE	"scalable"
#define FC_SCALE	"scale"
#define FC_SIZE	"size"
#define FC_SLANT	"slant"
#define FC_SOURCE	"source"
#define FC_SPACING	"spacing"
#define FC_STYLE	"style"
#define FC_STYLELANG	"stylelang"
#define FC_VERTICAL_LAYOUT	"verticallayout"
#define FC_WEIGHT	"weight"
#define FC_WIDTH	"width"

typedef int FcBool;
typedef struct _FcPattern FcPattern;
typedef enum _FcType {
    FcTypeVoid = 0,
    FcTypeInteger = 1,
    FcTypeDouble = 2,
    FcTypeString = 3,
    FcTypeBool = 4,
    FcTypeMatrix = 5,
    FcTypeCharSet = 6,
    FcTypeFTFace = 7,
    FcTypeLangSet = 8
} FcType;
typedef unsigned char FcChar8;
typedef struct _FcMatrix {
    double xx;
    double xy;
    double yx;
    double yy;
} FcMatrix;
typedef struct _FcCharSet FcCharSet;
typedef struct _FcLangSet FcLangSet;
typedef struct _FcValue {
    FcType type;
    union {
	const FcChar8 *s;
	int i;
	FcBool b;
	double d;
	const FcMatrix *m;
	const FcCharSet *c;
	void *f;
	const FcPattern *p;
	const FcLangSet *l;
    } u;
} FcValue;
typedef struct _FcStrList FcStrList;
typedef struct _FcConfig FcConfig;
typedef struct _FcStrSet FcStrSet;
typedef unsigned int FcChar32;
typedef enum _FcMatchKind {
    FcMatchPattern = 0,
    FcMatchFont = 1
} FcMatchKind;
typedef struct _FcObjectSet {
    int nobject;
    int sobject;
    const char **objects;
} FcObjectSet;
typedef enum {
    FcEndianBig = 0,
    FcEndianLittle = 1
} FcEndian;
typedef struct _FcAtomic FcAtomic;
typedef struct _FcConstant {
    const FcChar8 *name;
    const char *object;
    int value;
} FcConstant;
typedef struct _FcFontSet {
    int nfont;
    int sfont;
    FcPattern **fonts;
} FcFontSet;
typedef enum _FcSetName {
    FcSetSystem = 0,
    FcSetApplication = 1
} FcSetName;
typedef struct _FcBlanks FcBlanks;
typedef enum _FcResult {
    FcResultMatch = 0,
    FcResultNoMatch = 1,
    FcResultTypeMismatch = 2,
    FcResultNoId = 3,
    FcResultOutOfMemory = 4
} FcResult;
typedef struct _FcObjectType {
    const char *object;
    FcType type;
} FcObjectType;
typedef struct _FcGlobalCache FcGlobalCache;
typedef enum _FcLangResult {
    FcLangEqual = 0,
    FcLangDifferentCountry = 1,
    FcLangDifferentLang = 2
} FcLangResult;
typedef short unsigned int FcChar16;
extern FcAtomic *FcAtomicCreate(const FcChar8 * file);
extern void FcAtomicDeleteNew(FcAtomic * atomic);
extern void FcAtomicDestroy(FcAtomic * atomic);
extern FcBool FcAtomicLock(FcAtomic * atomic);
extern FcChar8 *FcAtomicNewFile(FcAtomic * atomic);
extern FcChar8 *FcAtomicOrigFile(FcAtomic * atomic);
extern FcBool FcAtomicReplaceOrig(FcAtomic * atomic);
extern void FcAtomicUnlock(FcAtomic * atomic);
extern FcBool FcBlanksAdd(FcBlanks * b, FcChar32 ucs4);
extern FcBlanks *FcBlanksCreate(void);
extern void FcBlanksDestroy(FcBlanks * b);
extern FcBool FcBlanksIsMember(FcBlanks * b, FcChar32 ucs4);
extern FcBool FcCharSetAddChar(FcCharSet * fcs, FcChar32 ucs4);
extern FcCharSet *FcCharSetCopy(FcCharSet * src);
extern FcChar32 FcCharSetCount(const FcCharSet * a);
extern FcCharSet *FcCharSetCreate(void);
extern void FcCharSetDestroy(FcCharSet * fcs);
extern FcBool FcCharSetEqual(const FcCharSet * a, const FcCharSet * b);
extern FcChar32 FcCharSetFirstPage(const FcCharSet * a, FcChar32 * map,
				   FcChar32 * next);
extern FcBool FcCharSetHasChar(const FcCharSet * fcs, FcChar32 ucs4);
extern FcCharSet *FcCharSetIntersect(const FcCharSet * a,
				     const FcCharSet * b);
extern FcChar32 FcCharSetIntersectCount(const FcCharSet * a,
					const FcCharSet * b);
extern FcBool FcCharSetIsSubset(const FcCharSet * a, const FcCharSet * b);
extern FcChar32 FcCharSetNextPage(const FcCharSet * a, FcChar32 * map,
				  FcChar32 * next);
extern FcCharSet *FcCharSetSubtract(const FcCharSet * a,
				    const FcCharSet * b);
extern FcChar32 FcCharSetSubtractCount(const FcCharSet * a,
				       const FcCharSet * b);
extern FcCharSet *FcCharSetUnion(const FcCharSet * a, const FcCharSet * b);
extern FcBool FcConfigAppFontAddDir(FcConfig * config,
				    const FcChar8 * dir);
extern FcBool FcConfigAppFontAddFile(FcConfig * config,
				     const FcChar8 * file);
extern void FcConfigAppFontClear(FcConfig * config);
extern FcBool FcConfigBuildFonts(FcConfig * config);
extern void FcConfigDestroy(FcConfig * config);
extern FcBool FcConfigEnableHome(FcBool enable);
extern FcChar8 *FcConfigFilename(const FcChar8 * url);
extern FcBlanks *FcConfigGetBlanks(FcConfig * config);
extern FcChar8 *FcConfigGetCache(FcConfig * config);
extern FcStrList *FcConfigGetConfigDirs(FcConfig * config);
extern FcStrList *FcConfigGetConfigFiles(FcConfig * config);
extern FcConfig *FcConfigGetCurrent(void);
extern FcStrList *FcConfigGetFontDirs(FcConfig * config);
extern FcFontSet *FcConfigGetFonts(FcConfig * config, FcSetName set);
extern int FcConfigGetRescanInterval(FcConfig * config);
extern int FcConfigGetRescanInverval(FcConfig * config);
extern FcChar8 *FcConfigHome(void);
extern FcBool FcConfigParseAndLoad(FcConfig * config, const FcChar8 * file,
				   FcBool complain);
extern FcBool FcConfigSetCurrent(FcConfig * config);
extern FcBool FcConfigSetRescanInterval(FcConfig * config,
					int rescanInterval);
extern FcBool FcConfigSetRescanInverval(FcConfig * config,
					int rescanInterval);
extern FcBool FcConfigSubstitute(FcConfig * config, FcPattern * p,
				 FcMatchKind kind);
extern FcBool FcConfigSubstituteWithPat(FcConfig * config, FcPattern * p,
					FcPattern * p_pat,
					FcMatchKind kind);
extern FcBool FcConfigUptoDate(FcConfig * config);
extern void FcDefaultSubstitute(FcPattern * pattern);
extern FcBool FcDirCacheValid(const FcChar8 * cache_file);
extern FcBool FcDirSave(FcFontSet * set, FcStrSet * dirs,
			const FcChar8 * dir);
extern FcBool FcDirScan(FcFontSet * set, FcStrSet * dirs,
			FcGlobalCache * cache, FcBlanks * blanks,
			const FcChar8 * dir, FcBool force);
extern FcBool FcFileScan(FcFontSet * set, FcStrSet * dirs,
			 FcGlobalCache * cache, FcBlanks * blanks,
			 const FcChar8 * file, FcBool force);
extern void FcFini(void);
extern FcFontSet *FcFontList(FcConfig * config, FcPattern * p,
			     FcObjectSet * os);
extern FcPattern *FcFontMatch(FcConfig * config, FcPattern * p,
			      FcResult * result);
extern FcPattern *FcFontRenderPrepare(FcConfig * config, FcPattern * pat,
				      FcPattern * font);
extern FcBool FcFontSetAdd(FcFontSet * s, FcPattern * font);
extern FcFontSet *FcFontSetCreate(void);
extern void FcFontSetDestroy(FcFontSet * s);
extern FcFontSet *FcFontSetList(FcConfig * config, FcFontSet * *sets,
				int nsets, FcPattern * p,
				FcObjectSet * os);
extern FcPattern *FcFontSetMatch(FcConfig * config, FcFontSet * *sets,
				 int nsets, FcPattern * p,
				 FcResult * result);
extern void FcFontSetPrint(const FcFontSet * s);
extern FcFontSet *FcFontSetSort(FcConfig * config, FcFontSet * *sets,
				int nsets, FcPattern * p, FcBool trim,
				FcCharSet * *csp, FcResult * result);
extern void FcFontSetSortDestroy(FcFontSet * fs);
extern FcFontSet *FcFontSort(FcConfig * config, FcPattern * p, FcBool trim,
			     FcCharSet * *csp, FcResult * result);
extern FcPattern *FcFreeTypeQuery(const FcChar8 * file, int id,
				  FcBlanks * blanks, int *count);
extern int FcGetVersion(void);
extern FcBool FcInit(void);
extern FcBool FcInitBringUptoDate(void);
extern FcConfig *FcInitLoadConfig(void);
extern FcConfig *FcInitLoadConfigAndFonts(void);
extern FcBool FcInitReinitialize(void);
extern FcBool FcLangSetAdd(FcLangSet * ls, const FcChar8 * lang);
extern FcLangResult FcLangSetCompare(const FcLangSet * lsa,
				     const FcLangSet * lsb);
extern FcBool FcLangSetContains(const FcLangSet * lsa,
				const FcLangSet * lsb);
extern FcLangSet *FcLangSetCopy(const FcLangSet * ls);
extern FcLangSet *FcLangSetCreate(void);
extern void FcLangSetDestroy(FcLangSet * ls);
extern FcBool FcLangSetEqual(const FcLangSet * lsa, const FcLangSet * lsb);
extern FcLangResult FcLangSetHasLang(const FcLangSet * ls,
				     const FcChar8 * lang);
extern FcChar32 FcLangSetHash(const FcLangSet * ls);
extern FcMatrix *FcMatrixCopy(const FcMatrix * mat);
extern FcBool FcMatrixEqual(const FcMatrix * mat1, const FcMatrix * mat2);
extern void FcMatrixMultiply(FcMatrix * result, const FcMatrix * a,
			     const FcMatrix * b);
extern void FcMatrixRotate(FcMatrix * m, double c, double s);
extern void FcMatrixScale(FcMatrix * m, double sx, double sy);
extern void FcMatrixShear(FcMatrix * m, double sh, double sv);
extern FcBool FcNameConstant(FcChar8 * string, int *result);
extern const FcConstant *FcNameGetConstant(FcChar8 * string);
extern const FcObjectType *FcNameGetObjectType(const char *object);
extern FcPattern *FcNameParse(const FcChar8 * name);
extern FcBool FcNameRegisterConstants(const FcConstant * consts,
				      int nconsts);
extern FcBool FcNameRegisterObjectTypes(const FcObjectType * types,
					int ntype);
extern FcChar8 *FcNameUnparse(FcPattern * pat);
extern FcBool FcNameUnregisterConstants(const FcConstant * consts,
					int nconsts);
extern FcBool FcNameUnregisterObjectTypes(const FcObjectType * types,
					  int ntype);
extern FcBool FcObjectSetAdd(FcObjectSet * os, const char *object);
extern FcObjectSet *FcObjectSetBuild(const char *first, ...);
extern FcObjectSet *FcObjectSetCreate(void);
extern void FcObjectSetDestroy(FcObjectSet * os);
extern FcObjectSet *FcObjectSetVaBuild(const char *first, va_list va);
extern FcBool FcPatternAdd(FcPattern * p, const char *object,
			   FcValue value, FcBool append);
extern FcBool FcPatternAddBool(FcPattern * p, const char *object,
			       FcBool b);
extern FcBool FcPatternAddCharSet(FcPattern * p, const char *object,
				  const FcCharSet * c);
extern FcBool FcPatternAddDouble(FcPattern * p, const char *object,
				 double d);
extern FcBool FcPatternAddInteger(FcPattern * p, const char *object,
				  int i);
extern FcBool FcPatternAddLangSet(FcPattern * p, const char *object,
				  const FcLangSet * ls);
extern FcBool FcPatternAddMatrix(FcPattern * p, const char *object,
				 const FcMatrix * s);
extern FcBool FcPatternAddString(FcPattern * p, const char *object,
				 const FcChar8 * s);
extern FcBool FcPatternAddWeak(FcPattern * p, const char *object,
			       FcValue value, FcBool append);
extern FcPattern *FcPatternBuild(FcPattern * orig, ...);
extern FcPattern *FcPatternCreate(void);
extern FcBool FcPatternDel(FcPattern * p, const char *object);
extern void FcPatternDestroy(FcPattern * p);
extern FcPattern *FcPatternDuplicate(const FcPattern * p);
extern FcBool FcPatternEqual(const FcPattern * pa, const FcPattern * pb);
extern FcBool FcPatternEqualSubset(const FcPattern * pa,
				   const FcPattern * pb,
				   const FcObjectSet * os);
extern FcResult FcPatternGet(const FcPattern * p, const char *object,
			     int id, FcValue * v);
extern FcResult FcPatternGetBool(const FcPattern * p, const char *object,
				 int n, FcBool * b);
extern FcResult FcPatternGetCharSet(const FcPattern * p,
				    const char *object, int n,
				    FcCharSet * *c);
extern FcResult FcPatternGetDouble(const FcPattern * p, const char *object,
				   int n, double *d);
extern FcResult FcPatternGetInteger(const FcPattern * p,
				    const char *object, int n, int *i);
extern FcResult FcPatternGetLangSet(const FcPattern * p,
				    const char *object, int n,
				    FcLangSet * *ls);
extern FcResult FcPatternGetMatrix(const FcPattern * p, const char *object,
				   int n, FcMatrix * *s);
extern FcResult FcPatternGetString(const FcPattern * p, const char *object,
				   int n, FcChar8 * *s);
extern FcChar32 FcPatternHash(const FcPattern * p);
extern void FcPatternPrint(const FcPattern * p);
extern void FcPatternReference(FcPattern * p);
extern FcPattern *FcPatternVaBuild(FcPattern * orig, va_list va);
extern FcChar8 *FcStrBasename(const FcChar8 * file);
extern int FcStrCmp(const FcChar8 * s1, const FcChar8 * s2);
extern int FcStrCmpIgnoreCase(const FcChar8 * s1, const FcChar8 * s2);
extern FcChar8 *FcStrCopy(const FcChar8 * s);
extern FcChar8 *FcStrCopyFilename(const FcChar8 * s);
extern FcChar8 *FcStrDirname(const FcChar8 * file);
extern FcStrList *FcStrListCreate(FcStrSet * set);
extern void FcStrListDone(FcStrList * list);
extern FcChar8 *FcStrListNext(FcStrList * list);
extern FcBool FcStrSetAdd(FcStrSet * set, const FcChar8 * s);
extern FcBool FcStrSetAddFilename(FcStrSet * set, const FcChar8 * s);
extern FcStrSet *FcStrSetCreate(void);
extern FcBool FcStrSetDel(FcStrSet * set, const FcChar8 * s);
extern void FcStrSetDestroy(FcStrSet * set);
extern FcBool FcStrSetEqual(FcStrSet * sa, FcStrSet * sb);
extern FcBool FcStrSetMember(FcStrSet * set, const FcChar8 * s);
extern int FcUcs4ToUtf8(FcChar32 ucs4, FcChar8 * dest);
extern FcBool FcUtf16Len(const FcChar8 * string, FcEndian endian, int len,
			 int *nchar, int *wchar);
extern int FcUtf16ToUcs4(const FcChar8 * src_orig, FcEndian endian,
			 FcChar32 * dst, int len);
extern FcBool FcUtf8Len(const FcChar8 * string, int len, int *nchar,
			int *wchar);
extern int FcUtf8ToUcs4(const FcChar8 * src_orig, FcChar32 * dst, int len);
extern void FcValueDestroy(FcValue v);
extern FcBool FcValueEqual(FcValue va, FcValue vb);
extern void FcValuePrint(const FcValue v);
extern FcValue FcValueSave(FcValue v);