// 2011, Mathieu Turcotte
// www.mathieuturcotte.ca

#ifndef TTYM_UNIX_HPP_
#define TTYM_UNIX_HPP_

namespace ttym {

// To save some typing.
#define TTY_MANIPULATOR(name, code) \
template<typename Char> \
inline std::basic_ostream<Char>& \
name(std::basic_ostream<Char>& out) { \
    return out << "\033["#code"m"; \
}

TTY_MANIPULATOR(reset, 0)
TTY_MANIPULATOR(black, 30)
TTY_MANIPULATOR(red, 31)
TTY_MANIPULATOR(green, 32)
TTY_MANIPULATOR(yellow, 33)
TTY_MANIPULATOR(blue, 34)
TTY_MANIPULATOR(magenta, 35)
TTY_MANIPULATOR(cyan, 36)
TTY_MANIPULATOR(white, 37)
TTY_MANIPULATOR(bold, 1)

// Be a good citizen.
#undef TTY_MANIPULATOR

}

#endif // TTYM_UNIX_HPP_