# File lib/openscap/xccdf/policy_model.rb, line 21 def initialize(b) case b when OpenSCAP::Xccdf::Benchmark @raw = OpenSCAP.xccdf_policy_model_new(b.raw) else raise OpenSCAP::OpenSCAPError, "Cannot initialize OpenSCAP::Xccdf::PolicyModel with '#{b}'" end OpenSCAP.raise! if @raw.null? end
# File lib/openscap/xccdf/policy_model.rb, line 36 def destroy OpenSCAP.xccdf_policy_model_free @raw @raw = nil end
# File lib/openscap/xccdf/policy_model.rb, line 32 def policies @policies ||= policies_init end
# File lib/openscap/xccdf/policy_model.rb, line 43 def policies_init policies = {} OpenSCAP.raise! unless OpenSCAP.xccdf_policy_model_build_all_useful_policies(raw).zero? polit = OpenSCAP.xccdf_policy_model_get_policies raw while OpenSCAP.xccdf_policy_iterator_has_more polit policy_p = OpenSCAP.xccdf_policy_iterator_next polit policy = OpenSCAP::Xccdf::Policy.new policy_p policies[policy.id] = policy end OpenSCAP.xccdf_policy_iterator_free polit policies end