#ifndef INCLUDED_BOBCAT_GETHOSTENT_
#define INCLUDED_BOBCAT_GETHOSTENT_

#include <iosfwd>

struct hostent;
struct in_addr;
struct sockaddr_in;

#include <bobcat/exception>

namespace FBB
{

class GetHostent
{
    static struct sockaddr_in s_sa;
    static in_addr s_address;
    static char *s_addressPtr[];
    static std::string s_name;
    static struct hostent s_hp;

    public:
        static hostent const *gethostent(char const *errorprefix,
                            std::string const &nameOrAddress);

        static std::string addressToString(char const *errorprefix,
                                           void const *ads);
    private:
        static void hostError(char const *prefix);  // throws Exception()
        static void solveAddress(char const *prefix, std::string const &host);
        static void solveName(char const *prefix, std::string const &host);
};

} // FBB

#endif
