nis-util  1.0.D108
lib/colon/passwd/slurp.h
Go to the documentation of this file.
00001 //
00002 // nis-util - NIS Administration Utilities
00003 // Copyright (C) 2001, 2008, 2009, 2011, 2012 Peter Miller
00004 //
00005 // This program is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation; either version 2 of the License, or (at
00008 // your option) any later version.
00009 //
00010 // This program is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with this program. If not, see <http://www.gnu.org/licenses/>.
00017 //
00018 
00019 #ifndef LIB_COLON_PASSWD_SLURP_H
00020 #define LIB_COLON_PASSWD_SLURP_H
00021 
00022 #include <map>
00023 #include <lib/colon/passwd.h>
00024 
00025 class colon_passwd_functor; // forward
00026 
00031 class colon_passwd_slurp:
00032     public colon_passwd
00033 {
00034 public:
00035     typedef boost::shared_ptr<colon_passwd_slurp> pointer;
00036 
00040     virtual ~colon_passwd_slurp();
00041 
00049     static pointer create(const rcstring &filename);
00050 
00055     virtual void read_and_process(void);
00056 
00061     record::pointer query_by_name(const rcstring &name) const;
00062 
00067     record::pointer query_by_uid(const rcstring &uid) const;
00068 
00073     record::pointer query_by_uid(long uid) const;
00074 
00080     record::pointer query_by_home(const rcstring &home) const;
00081 
00089     void walk(colon_passwd_functor &func) const;
00090 
00091 protected:
00098     colon_passwd_slurp(const rcstring &filename);
00099 
00108     virtual bool process(const record::pointer &rp);
00109 
00110 private:
00111     typedef std::map<rcstring, record::pointer> by_name_t;
00112 
00117     by_name_t by_name;
00118 
00119     typedef std::map<rcstring, record::pointer> by_uid_t;
00120 
00125     by_uid_t by_uid;
00126 
00127     typedef std::map<rcstring, record::pointer> by_home_t;
00128 
00133     by_home_t by_home;
00134 
00138     colon_passwd_slurp();
00139 
00143     colon_passwd_slurp(const colon_passwd_slurp &);
00144 
00148     colon_passwd_slurp &operator=(const colon_passwd_slurp &);
00149 };
00150 
00151 // vim: set ts=8 sw=4 et :
00152 #endif // LIB_COLON_PASSWD_SLURP_H