// Copyright (c) 2004 - 2021 kio@little-bat.de
// BSD-2-Clause license
// https://opensource.org/licenses/BSD-2-Clause

#pragma once
#include "kio/kio.h"
#include "isa_id.h"


extern cstr isa_names[];	// (default) item names


class IsaObject
{
public:
	const isa_id id;
	int filler;
	cstr name;			// static

protected:
	explicit IsaObject (isa_id id) : id(id), name(isa_names[id]) {}
	IsaObject (IsaObject&& q)	   : id(q.id), name(q.name){}
	IsaObject (const IsaObject&) = delete;
	IsaObject& operator= (const IsaObject&) = delete;
	IsaObject& operator= (IsaObject&&) = delete;

public:
	virtual ~IsaObject() = default;

	bool	isA (isa_id i) const noexcept { return i == id; }
	isa_id	isaId () const noexcept		  { return id; }
};














