1/* 2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7#include <string.h> 8 9#include <new> 10 11#include "CfaRuleSet.h" 12 13 14CfaRuleSet::CfaRuleSet() 15 : 16 fRegisterRules(NULL), 17 fRegisterCount(0) 18{ 19} 20 21 22CfaRuleSet::~CfaRuleSet() 23{ 24 delete[] fRegisterRules; 25} 26 27 28status_t 29CfaRuleSet::Init(uint32 registerCount) 30{ 31 fRegisterRules = new(std::nothrow) CfaRule[registerCount]; 32 if (fRegisterRules == NULL) 33 return B_NO_MEMORY; 34 35 fRegisterCount = registerCount; 36 37 return B_OK; 38} 39 40 41CfaRuleSet* 42CfaRuleSet::Clone() const 43{ 44 CfaRuleSet* other = new(std::nothrow) CfaRuleSet; 45 if (other == NULL) 46 return NULL; 47 48 if (other->Init(fRegisterCount) != B_OK) { 49 delete other; 50 return NULL; 51 } 52 53 other->fCfaCfaRule = fCfaCfaRule; 54 memcpy(other->fRegisterRules, fRegisterRules, 55 sizeof(CfaRule) * fRegisterCount); 56 57 return other; 58} 59 60 61CfaRule* 62CfaRuleSet::RegisterRule(uint32 index) const 63{ 64 return index < fRegisterCount ? fRegisterRules + index : NULL; 65} 66