use super::super::error::*;

// General

tag_error!(LowLevelError, "low-level");
tag_error!(HardwareError, "hardware");

gloss_error!(GlossError);
gloss_error!(IoError, "I/O");
gloss_error!(ThreadError, "thread");

// System

gloss_error!(InitializationError, "initialization");
gloss_error!(ConfigurationError, "configuration");
gloss_error!(InstantiationError, "instantiation");

// Functionality

gloss_error!(UnsupportedError, "unsupported");
gloss_error!(IncompatibleError, "incompatible");

// Access

gloss_error!(UnreachableError, "unreachable");
gloss_error!(UnavailableError, "unavailable");
gloss_error!(DepletedError, "depleted");
gloss_error!(GoneError, "gone");
gloss_error!(NotFoundError, "not found");

// Data validation

gloss_error!(MissingError, "missing");
gloss_error!(EmptyError, "empty");
gloss_error!(UninitializedError, "uninitialized");
gloss_error!(InvalidError, "invalid");
gloss_error!(MalformedError, "malformed");

// Data transformation

gloss_error!(CastingError, "casting");
gloss_error!(ParsingError, "parsing");
gloss_error!(FormattingError, "formatting");
gloss_error!(MergingError, "merge");
gloss_error!(SerializationError, "serialization");
gloss_error!(DeserializationError, "deserialization");
gloss_error!(OverflowError, "overflow");
