BeliefstateROS.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 <BeliefstateROS.h>
00041 
00042 
00043 namespace beliefstate {
00044   BeliefstateROS::BeliefstateROS(int argc, char** argv) : Beliefstate(argc, argv) {
00045     m_lstConfigFileLocations.push_back(ros::package::getPath("beliefstate"));
00046   }
00047   
00048   BeliefstateROS::~BeliefstateROS() {
00049   }
00050   
00051   std::string BeliefstateROS::findTokenReplacement(std::string strToken) {
00052     std::string strReplacement = "";
00053     
00054     if(strToken.size() > 8) {
00055       if(strToken.substr(0, 8) == "PACKAGE ") {
00056         std::string strPackage = strToken.substr(8);
00057           
00058         strReplacement = ros::package::getPath(strPackage);
00059       } else if(strToken == "WORKSPACE") {
00060         strReplacement = this->workspaceDirectory();
00061       }
00062     }
00063     
00064     if(strReplacement == "") {
00065       strReplacement = this->Beliefstate::findTokenReplacement(strToken);
00066     }
00067     
00068     return strReplacement;
00069   }
00070   
00071   std::string BeliefstateROS::workspaceDirectory() {
00072     std::string strWorkspaceReplacement = this->Beliefstate::workspaceDirectory();
00073     
00074     if(strWorkspaceReplacement == "") {
00075       const char* cROSWorkspace = getenv("ROS_WORKSPACE");
00076       const char* cCMAKEPrefixPath = getenv("CMAKE_PREFIX_PATH");
00077       const char* cROSPackagePath = getenv("ROS_PACKAGE_PATH");
00078       
00079       std::string strROSWorkspace = "";
00080       std::string strCMAKEPrefixPath = "";
00081       std::string strROSPackagePath = "";
00082       
00083       if(cROSWorkspace) {
00084         strROSWorkspace = cROSWorkspace;
00085       }
00086       
00087       if(cCMAKEPrefixPath) {
00088         strCMAKEPrefixPath = cCMAKEPrefixPath;
00089       }
00090       
00091       if(cROSPackagePath) {
00092         strROSPackagePath = cROSPackagePath;
00093       }
00094       
00095       // ROS_WORKSPACE takes precedence over CMAKE_PREFIX_PATH
00096       if(strROSWorkspace != "") {
00097         strWorkspaceReplacement = strROSWorkspace;
00098       } else {
00099         // CMAKE_PREFIX_PATH takes precedence over ROS_PACKAGE_PATH
00100         if(strCMAKEPrefixPath != "") {
00101           strWorkspaceReplacement = this->findPrefixPath(strCMAKEPrefixPath, "/devel");
00102         } else {
00103           strWorkspaceReplacement = this->findPrefixPath(strROSPackagePath, "/src");
00104         }
00105       }
00106     }
00107     
00108     return strWorkspaceReplacement;
00109   }
00110 }


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