144#define FTC_FAMILY(x) ( (FTC_Family)(x) )
145#define FTC_FAMILY_P(x) ( (FTC_Family*)(x) )
156#define FTC_GNODE( x ) ( (FTC_GNode)(x) )
157#define FTC_GNODE_P( x ) ( (FTC_GNode*)(x) )
167#define FTC_GQUERY( x ) ( (FTC_GQuery)(x) )
219#define FTC_GCACHE( x ) ((FTC_GCache)(x))
246#define FTC_GCACHE_CLASS( x ) ((FTC_GCacheClass)(x))
248#define FTC_CACHE_GCACHE_CLASS( x ) \
249 FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
250#define FTC_CACHE_FAMILY_CLASS( x ) \
251 ( (FTC_MruListClass)FTC_CACHE_GCACHE_CLASS( x )->family_class )
273#define FTC_FAMILY_FREE( family, cache ) \
274 FTC_MruList_Remove( &FTC_GCACHE((cache))->families, \
275 (FTC_MruNode)(family) )
280#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \
281 gindex, query, node, error ) \
283 FTC_GCache _gcache = FTC_GCACHE( cache ); \
284 FTC_GQuery _gquery = (FTC_GQuery)( query ); \
285 FTC_MruNode_CompareFunc _fcompare = (FTC_MruNode_CompareFunc)(famcmp); \
286 FTC_MruNode _mrunode; \
289 _gquery->gindex = (gindex); \
291 FTC_MRULIST_LOOKUP_CMP( &_gcache->families, _gquery, _fcompare, \
293 _gquery->family = FTC_FAMILY( _mrunode ); \
296 FTC_Family _gqfamily = _gquery->family; \
299 _gqfamily->num_nodes++; \
301 FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error ); \
303 if ( --_gqfamily->num_nodes == 0 ) \
304 FTC_FAMILY_FREE( _gqfamily, _gcache ); \
311#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \
312 gindex, query, node, error ) \
315 error = FTC_GCache_Lookup( FTC_GCACHE( cache ), hash, gindex, \
316 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