//
//  TargetPlatforms.h
//  Clock Signal
//
//  Created by Thomas Harte on 27/08/2017.
//  Copyright © 2017 Thomas Harte. All rights reserved.
//

#ifndef TargetPlatforms_hpp
#define TargetPlatforms_hpp

namespace TargetPlatform {

typedef int IntType;
enum Type: IntType {
	AmstradCPC		=	1 << 1,
	Atari2600		=	1 << 2,
	AcornAtom		=	1 << 3,
	AcornElectron	=	1 << 4,
	BBCMaster		=	1 << 5,
	BBCModelA		=	1 << 6,
	BBCModelB		=	1 << 7,
	Commodore		=	1 << 8,
	Oric			=	1 << 9,
	ZX80			=	1 << 10,
	ZX81			=	1 << 11,

	Acorn			=	AcornAtom | AcornElectron | BBCMaster | BBCModelA | BBCModelB,
	ZX8081			=	ZX80 | ZX81,
	AllTape			=	Acorn | AmstradCPC | Commodore | Oric | ZX80 | ZX81,
	AllDisk			=	Acorn | AmstradCPC | Commodore | Oric,
};

class TypeDistinguisher {
	public:
		virtual Type target_platform_type() = 0;
};

}

#endif /* TargetPlatforms_h */