ArbitraryMappingsHolder.cpp
Go to the documentation of this file.
00001 /*********************************************************************
00002  * Software License Agreement (BSD License)
00003  *
00004  *  Copyright (c) 2013, Institute for Artificial Intelligence,
00005  *  Universität Bremen.
00006  *  All rights reserved.
00007  *
00008  *  Redistribution and use in source and binary forms, with or without
00009  *  modification, are permitted provided that the following conditions
00010  *  are met:
00011  *
00012  *   * Redistributions of source code must retain the above copyright
00013  *     notice, this list of conditions and the following disclaimer.
00014  *   * Redistributions in binary form must reproduce the above
00015  *     copyright notice, this list of conditions and the following
00016  *     disclaimer in the documentation and/or other materials provided
00017  *     with the distribution.
00018  *   * Neither the name of the Institute for Artificial Intelligence,
00019  *     Universität Bremen, nor the names of its contributors may be
00020  *     used to endorse or promote products derived from this software
00021  *     without specific prior written permission.
00022  *
00023  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00024  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00025  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00026  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00027  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00028  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00029  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00030  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00031  *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00032  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00033  *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00034  *  POSSIBILITY OF SUCH DAMAGE.
00035  *********************************************************************/
00036 
00040 #include <ArbitraryMappingsHolder.h>
00041 
00042 
00043 namespace beliefstate {
00044   ArbitraryMappingsHolder::ArbitraryMappingsHolder() {
00045   }
00046   
00047   ArbitraryMappingsHolder::~ArbitraryMappingsHolder() {
00048     for(CKeyValuePair* ckvpMapping : m_lstArbitraryMappings) {
00049       delete ckvpMapping;
00050     }
00051     
00052     m_lstArbitraryMappings.clear();
00053   }
00054   
00055   void ArbitraryMappingsHolder::parseBranch(libconfig::Setting& sBranch) {
00056     // TODO(winkler): Actually parse the mapping branch here and
00057     // assert it into a new part of the designator mapping storage.
00058   }
00059   
00060   bool ArbitraryMappingsHolder::loadArbitraryMappingsFile(std::string strFilepath) {
00061     if(this->fileExists(strFilepath)) {
00062       libconfig::Config cfgConfig;
00063       
00064       try {
00065         cfgConfig.readFile(strFilepath.c_str());
00066         
00067         if(cfgConfig.exists("arbitrary-mappings")) {
00068           libconfig::Setting &sArbitraryMappings = cfgConfig.lookup("arbitrary-mappings");
00069           
00070           if(sArbitraryMappings.exists("mappings")) {
00071             libconfig::Setting &sMappings = sArbitraryMappings["mappings"];
00072             
00073             for(int nI = 0; nI < sMappings.getLength(); nI++) {
00074               this->parseBranch(sMappings[nI]);
00075             }
00076           }
00077         }
00078         
00079         return true;
00080       } catch(libconfig::ParseException e) {
00081         std::stringstream sts;
00082         sts << e.getLine();
00083         
00084         this->fail("Error while parsing arbitrary mappings file '" + strFilepath + "': " + e.getError() + ", on line " + sts.str());
00085       } catch(...) {
00086         this->fail("Undefined error while parsing arbitrary mappings file '" + strFilepath + "'");
00087       }
00088     } else {
00089       this->fail("Arbitrary mappings file not found: '" + strFilepath + "'.");
00090     }
00091     
00092     return false;
00093   }
00094   
00095   std::list<CKeyValuePair*> ArbitraryMappingsHolder::arbitraryMappings() {
00096     return m_lstArbitraryMappings;
00097   }
00098 }


beliefstate
Author(s): Jan Winkler
autogenerated on Sun Oct 5 2014 22:30:15