git.fiddlerwoaroof.com
Raw Blame History
#ifndef _USER_H
#define _USER_H
#include <vector>
#include <string>
#include <memory>
#include <pwd.h>

class user_ifc
{
public:
    virtual ~user_ifc() {}
};

class user : public user_ifc
{
private:
    std::shared_ptr<user_ifc> delegate_;
public:
    user (std::shared_ptr<user_ifc> delegate) : delegate_ (delegate) {}
    user() : user (std::shared_ptr<user_ifc> (new user_ifc)) {}
};

class directory_ifc
{
public:
    virtual ~directory_ifc() {}
    virtual std::vector<user> find_user (const std::string &user_name)
    {
        return std::vector<user>();
    }
};

class directory : public directory_ifc
{
private:
    std::shared_ptr<directory_ifc> delegate_;
public:
    directory (std::shared_ptr<directory_ifc> delegate) : delegate_
        (delegate) {}
    directory() : directory (std::shared_ptr<directory_ifc>
                                 (new directory_ifc)) {}
    std::vector<user> find_user (const std::string &user_name)
    {
        return delegate_->find_user (user_name);
    }

    static directory create();
};

#endif