X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fcore%2Futil%2FEnvironment.hpp;h=32f4282a442e3b49019a3ab758e71a3d5a102999;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=fa7fb094acda1ab5cc5b2acfd973cda02349efe3;hpb=bebea4009ed5a273fbf9ed3644a2140a8f477f99;p=anna.git diff --git a/include/anna/core/util/Environment.hpp b/include/anna/core/util/Environment.hpp index fa7fb09..32f4282 100644 --- a/include/anna/core/util/Environment.hpp +++ b/include/anna/core/util/Environment.hpp @@ -1,41 +1,13 @@ -// ANNA - Anna is Not 'N' Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// https://bitbucket.org/testillano/anna -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: eduardo.ramos.testillano@gmail.com -// cisco.tierra@gmail.com - - -#ifndef anna_core_Environment_hpp -#define anna_core_Environment_hpp +// ANNA - Anna is Not Nothingness Anymore // +// // +// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // +// // +// See project site at http://redmine.teslayout.com/projects/anna-suite // +// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // + + +#ifndef anna_core_util_Environment_hpp +#define anna_core_util_Environment_hpp #include #include @@ -58,25 +30,48 @@ public: ~Environment() {;} /** - Parses the current environment data (all variables available) + Parses the environment data (all variables available) when process was started. + @param envp Environment array passed on main function as third argument. + Cache data is cleared if NULL passed, allowing to get current environment values for variables. */ - void initialize() throw(); + void initialize(char **envp = NULL) ; /** - Return associated value (could be empty). + Return associated value (could be empty). This value could be cached at initialization (envp array from main function), if not, would be + cached here. @param variableName Environment variable name. @param exceptionIfMissing When enabled, an exception is launched for missing variables. Empty string in other case (default behaviour). @return Environment value. */ - std::string getValue(const char* variableName, bool exceptionIfMissing = false) const throw(RuntimeException); + std::string getValue(const char* variableName, bool exceptionIfMissing = false) noexcept(false); + std::string getValue(const std::string &variableName, bool exceptionIfMissing = false) noexcept(false); + + /** + Sets an environment variable. If an empty variable name is provided, or environment set operation fails, + an exception will be launched. + + @param name Variable name. + @param value Variable value + @param overwrite Overwrite an existing variable name/value or keep old value if exists + */ + void setVariable(const std::string &name, const std::string &value, bool overwrite = true) noexcept(false); + + /** + Unsets an environment variable (different than set empty string). If an empty variable name is provided, + or environment set operation fails, an exception will be launched. + + @param name Variable name. If empty, nothing is done. + */ + void unsetVariable(const std::string &name) noexcept(false); + private: - std::map a_managedVars; + std::map < std::string /* variable name */, std::string /* variable value */ > a_vars; - Environment() { initialize();} + Environment() {;} friend class Singleton ; };