#ifndef TYPES_H
#define TYPES_H

namespace Salamander
{

/*
** Vector types
*/
  class Vec4;
typedef Vec4 Colour;

/*
** Graphics Library specific types
*/
  class SDLPlatformManager;
typedef SDLPlatformManager PlatformManager;

  class SDLTexture;
typedef SDLTexture Texture;

  class SDLVisualManager;
typedef SDLVisualManager VisualManager;

/*
** STL specific types
*/
  class STLScribe;
typedef STLScribe Scribe;

/*
** Typedefs are defined for event codes and other numeric values that are not 
** interchangeable or comparable without prior conversion.
*/
typedef const int EventCode;

/*
** Registration macro re-mapping, for ease of use by subclasses. Calling the incorrect
** registration function can cause issues, so naming by user type ensures the correct
** function is obvious.
*/
#define registerAsset() registerUniqueId()
#define registerEvent(baseClassName) registerInheritedUniqueId(baseClassName)
#define registerManager() registerUniqueId()
#define registerShape() registerUniqueId()
#define registerStreamData() registerUniqueId()

}

#endif // TYPES_H