#ifdef __MWERKS__
#define _CPP_CSSMACLPOD
#endif
#include <Security/cssmaclpod.h>
#include <Security/cssmwalkers.h>
AuthorizationGroup::AuthorizationGroup(const AclAuthorizationSet &auths, CssmAllocator &alloc)
{
NumberOfAuthTags = auths.size();
AuthTags = alloc.alloc<CSSM_ACL_AUTHORIZATION_TAG>(NumberOfAuthTags);
copy(auths.begin(), auths.end(), AuthTags); }
bool AuthorizationGroup::contains(CSSM_ACL_AUTHORIZATION_TAG tag) const
{
return find(AuthTags, &AuthTags[NumberOfAuthTags], tag) != &AuthTags[NumberOfAuthTags];
}
AuthorizationGroup::operator AclAuthorizationSet() const
{
return AclAuthorizationSet(AuthTags, &AuthTags[NumberOfAuthTags]);
}
AclEntryPrototype::AclEntryPrototype(const AclOwnerPrototype &proto)
{
memset(this, 0, sizeof(*this));
TypedSubject = proto.subject(); Delegate = proto.delegate();
}
AutoAclOwnerPrototype::~AutoAclOwnerPrototype()
{
if (mAllocator)
DataWalkers::chunkFree(mAclOwnerPrototype, *mAllocator);
}
void
AutoAclOwnerPrototype::allocator(CssmAllocator &allocator)
{
mAllocator = &allocator;
}
AutoAclEntryInfoList::~AutoAclEntryInfoList()
{
if (mAllocator)
{
DataWalkers::ChunkFreeWalker w(*mAllocator);
for (uint32 ix = 0; ix < mNumberOfAclEntries; ix++)
walk(w, mAclEntryInfo[ix]);
mAllocator->free(mAclEntryInfo);
}
}
void
AutoAclEntryInfoList::allocator(CssmAllocator &allocator)
{
mAllocator = &allocator;
}