brender-1997/fw/resreg.c

108 lines
2.3 KiB
C
Raw Normal View History

2022-05-03 16:30:35 -05:00
/*
* Copyright (c) 1993-1995 Argonaut Technologies Limited. All rights reserved.
*
* $Id: resreg.c 2.3 1996/10/01 14:13:59 sam Exp $
* $Locker: $
*
* Resource class management
*/
#include "fw.h"
#include "brassert.h"
BR_RCS_ID("$Id: resreg.c 2.3 1996/10/01 14:13:59 sam Exp $")
/*
* Resource Classes
*/
br_resource_class * BR_PUBLIC_ENTRY BrResClassAdd(br_resource_class *rclass)
{
br_resource_class *r;
UASSERT(rclass != NULL);
/*
* The registry resource is initally faked
*/
UASSERT(rclass->res_class == BR_MEMORY_REGISTRY ||
rclass->res_class == BR_MEMORY_ANCHOR ||
fw.resource_class_index[rclass->res_class] == NULL);
r = BrRegistryAdd(&fw.reg_resource_classes,rclass);
if(r != NULL)
fw.resource_class_index[rclass->res_class] = r;
return r; r;
}
br_resource_class * BR_PUBLIC_ENTRY BrResClassRemove(br_resource_class *rclass)
{
br_resource_class *r;
UASSERT(rclass != NULL);
UASSERT(fw.resource_class_index[rclass->res_class] != NULL);
r = BrRegistryRemove(&fw.reg_resource_classes,rclass);
if(r != NULL)
fw.resource_class_index[rclass->res_class] = NULL;
return r;
}
br_resource_class * BR_PUBLIC_ENTRY BrResClassFind(char *pattern)
{
return BrRegistryFind(&fw.reg_resource_classes,pattern);
}
br_resclass_find_cbfn * BR_PUBLIC_ENTRY BrResClassFindHook(br_resclass_find_cbfn *hook)
{
br_resclass_find_cbfn * old =
(br_resclass_find_cbfn *) fw.reg_resource_classes.find_failed_hook;
fw.reg_resource_classes.find_failed_hook = (br_find_failed_cbfn *)hook;
return old;
}
br_uint_32 BR_PUBLIC_ENTRY BrResClassAddMany(br_resource_class **items, int n)
{
int i;
for(i=0; i < n; i++)
BrResClassAdd(*items++);
return n;
}
br_uint_32 BR_PUBLIC_ENTRY BrResClassRemoveMany(br_resource_class **items, int n)
{
int i,r;
for(i=0, r=0; i < n; i++)
if(BrResClassRemove(*items++))
r++;
return r;
}
br_uint_32 BR_PUBLIC_ENTRY BrResClassFindMany(char *pattern, br_resource_class **items, int max)
{
return BrRegistryFindMany(&fw.reg_resource_classes, pattern, (void **)items, max);
}
br_uint_32 BR_PUBLIC_ENTRY BrResClassCount(char *pattern)
{
return BrRegistryCount(&fw.reg_resource_classes,pattern);
}
br_uint_32 BR_PUBLIC_ENTRY BrResClassEnum(char *pattern,
br_resclass_enum_cbfn *callback, void *arg)
{
return BrRegistryEnum(&fw.reg_resource_classes,pattern,(br_enum_cbfn *)callback,arg);
}