143#define FTC_FAMILY(x) ( (FTC_Family)(x) )
144#define FTC_FAMILY_P(x) ( (FTC_Family*)(x) )
155#define FTC_GNODE( x ) ( (FTC_GNode)(x) )
156#define FTC_GNODE_P( x ) ( (FTC_GNode*)(x) )
166#define FTC_GQUERY( x ) ( (FTC_GQuery)(x) )
218#define FTC_GCACHE( x ) ((FTC_GCache)(x))
245#define FTC_GCACHE_CLASS( x ) ((FTC_GCacheClass)(x))
247#define FTC_CACHE_GCACHE_CLASS( x ) \
248 FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
249#define FTC_CACHE_FAMILY_CLASS( x ) \
250 ( (FTC_MruListClass)FTC_CACHE_GCACHE_CLASS( x )->family_class )
272#define FTC_FAMILY_FREE( family, cache ) \
273 FTC_MruList_Remove( &FTC_GCACHE((cache))->families, \
274 (FTC_MruNode)(family) )
279#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \
280 gindex, query, node, error ) \
282 FTC_GCache _gcache = FTC_GCACHE( cache ); \
283 FTC_GQuery _gquery = (FTC_GQuery)( query ); \
284 FTC_MruNode_CompareFunc _fcompare = (FTC_MruNode_CompareFunc)(famcmp); \
285 FTC_MruNode _mrunode; \
288 _gquery->gindex = (gindex); \
290 FTC_MRULIST_LOOKUP_CMP( &_gcache->families, _gquery, _fcompare, \
292 _gquery->family = FTC_FAMILY( _mrunode ); \
295 FTC_Family _gqfamily = _gquery->family; \
298 _gqfamily->num_nodes++; \
300 FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error ); \
302 if ( --_gqfamily->num_nodes == 0 ) \
303 FTC_FAMILY_FREE( _gqfamily, _gcache ); \
310#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \
311 gindex, query, node, error ) \
314 error = FTC_GCache_Lookup( FTC_GCACHE( cache ), hash, gindex, \
315 FTC_GQUERY( query ), &node ); \
FTC_GNode_Compare(FTC_GNode gnode, FTC_GQuery gquery, FTC_Cache cache, FT_Bool *list_changed)
struct FTC_GNodeRec_ * FTC_GNode
FT_BEGIN_HEADER struct FTC_FamilyRec_ * FTC_Family
const FTC_GCacheClassRec * FTC_GCacheClass
FTC_GCache_New(FTC_Manager manager, FTC_GCacheClass clazz, FTC_GCache *acache)
struct FTC_GCacheClassRec_ FTC_GCacheClassRec
struct FTC_GNodeRec_ FTC_GNodeRec
struct FTC_GCacheRec_ * FTC_GCache
FTC_Family_Init(FTC_Family family, FTC_Cache cache)
FTC_GNode_Init(FTC_GNode node, FT_UInt gindex, FTC_Family family)
struct FTC_GQueryRec_ FTC_GQueryRec
FTC_GNode_UnselectFamily(FTC_GNode gnode, FTC_Cache cache)
FT_BEGIN_HEADER struct FTC_FamilyRec_ FTC_FamilyRec
struct FTC_GQueryRec_ * FTC_GQuery
struct FTC_GCacheRec_ FTC_GCacheRec
FTC_GNode_Done(FTC_GNode node, FTC_Cache cache)
struct FTC_MruListClassRec_ const * FTC_MruListClass
FT_BEGIN_HEADER typedef unsigned char FT_Bool
FTC_MruListClass family_class