/*	Copyright  (c)	Günter Woigk 2020 - 2021
					mailto:kio@little-bat.de

	This file is free software.

	Permission to use, copy, modify, distribute, and sell this software
	and its documentation for any purpose is hereby granted without fee,
	provided that the above copyright notice appears in all copies and
	that both that copyright notice, this permission notice and the
	following disclaimer appear in supporting documentation.

	THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT ANY WARRANTY,
	NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
	A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE COPYRIGHT HOLDER
	BE LIABLE FOR ANY DAMAGES ARISING FROM THE USE OF THIS SOFTWARE,
	TO THE EXTENT PERMITTED BY APPLICABLE LAW.
*/

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


class StrArray;
class Names;
struct TargetDescr;
class FileInfo;
class FileInfos;
enum NameID : uint16;

class Word;
using cWord = const Word;
using Words = Array<Word>;

class Type;
using cType = const Type;

class Ival;
using cData = const Ival;

//typedef HashMap<IdfID,Words> Macros;

class Type;		  typedef const Type      cType;		typedef cType*      TypePtr;
//class BasicType;  typedef const BasicType cBasicType;	typedef cBasicType* BasicTypePtr;
//class ArrayType;  typedef const ArrayType cArrayType;	typedef cArrayType* ArrayTypePtr;
//class PtrType;	  typedef const PtrType   cPtrType;		typedef cPtrType*   PtrTypePtr;
//class EnumType;	  typedef const EnumType  cEnumType;	typedef cEnumType*  EnumTypePtr;

//class StructType; typedef const StructType cStructType;	typedef cStructType*StructTypePtr;
//class RangeType;  typedef const RangeType cRangeType;	typedef cRangeType* RangeTypePtr;
//class ProcType;	  typedef const ProcType  cProcType;	typedef cProcType*  ProcTypePtr;
//class AllocatedType;
typedef Array<cType*> Types;

class Error;
class SyntaxError;
class Warning;
class FileError;
class FileInfos;
using Errors = Array<Error>;
using cError = const Error;


