nis-util  1.0.D108
lib/boolean.cc
Go to the documentation of this file.
00001 //
00002 // nis-util - NIS Administration Utilities
00003 // Copyright (C) 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 along
00016 // with this program. If not, see <http://www.gnu.org/licenses/>.
00017 //
00018 
00019 #include <lib/ac/string.h>
00020 
00021 #include <lib/boolean.h>
00022 #include <lib/sizeof.h>
00023 
00024 
00025 const char *string_from_boolean(bool value)
00026 {
00027     return (value ? "true" : "false");
00028 }
00029 
00030 
00031 bool
00032 boolean_from_string(const rcstring &text, bool &value)
00033 {
00034     return boolean_from_string(text.c_str(), value);
00035 }
00036 
00037 
00038 bool
00039 boolean_from_string(const char *text, bool &value)
00040 {
00041     struct table_t
00042     {
00043         const char *name;
00044         bool value;
00045     };
00046 
00047     static const table_t table[] =
00048     {
00049         { "false", false },
00050         { "no", false },
00051         { "nil", false },
00052         { "ok", true },
00053         { "true", true },
00054         { "yes", true },
00055     };
00056 
00057     for (const table_t *tp = table; tp < ENDOF(table); ++tp)
00058     {
00059         if (0 == strcmp(text, tp->name))
00060         {
00061             value = tp->value;
00062             return true;
00063         }
00064     }
00065 
00066     return false;
00067 }
00068 
00069 
00070 // vim: set ts=8 sw=4 et :