'-------------------------------------------------------------------------------
' Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
'
' SPDX-License-Identifier: BSD-3-Clause
'
'-------------------------------------------------------------------------------

@startuml

abstract class claim_iterator {
	{abstract} void first()
	{abstract} void next()
	{abstract} bool is_done()
	{abstract} claim current()
}

abstract class claim_source {
	{abstract} bool get_claim(claim *claim)
}

class claim {
	+category: int
	+subject_id: int
	+variant_id: int
}

class claims_register <<singleton>> {
	void add_claim_source(claim_source)
	void query_by_category(category, claim_vector)
}

claim <|-- claim_collection
claim <|-- text_string_claim
claim <|-- byte_string_claim
claim <|-- integer_claim
claim <|-- measurement_claim

claim_iterator ..> claim
claim_collection ..> claim_iterator
claim_source ..> claim
claims_register -> "0..*" claim_source

@enduml
