X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Futil%2FPathResolver.h;h=afafb80e4c79e7f4e71f6caea9e59e00115a9ec0;hb=81b488b2790e7bdeb2f43560b1d4a7d22c3dfdf5;hp=c8ec58094d572d6c99665e52c31107aff5c6d8fb;hpb=0b4caaf1e4a9373823df3ccea39ab88414377a8d;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/util/PathResolver.h b/xmltooling/util/PathResolver.h index c8ec580..afafb80 100644 --- a/xmltooling/util/PathResolver.h +++ b/xmltooling/util/PathResolver.h @@ -1,22 +1,26 @@ -/* - * Copyright 2001-2007 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** * @file xmltooling/util/PathResolver.h - * + * * Resolves local filenames into absolute pathnames. */ @@ -28,7 +32,6 @@ #include namespace xmltooling { - /** * Resolves local filenames into absolute pathnames. */ @@ -36,10 +39,9 @@ namespace xmltooling { { MAKE_NONCOPYABLE(PathResolver); public: - PathResolver() {} + PathResolver(); + virtual ~PathResolver(); - virtual ~PathResolver() {} - /** Types of file resources to resolve. */ enum file_type_t { XMLTOOLING_LIB_FILE, @@ -48,43 +50,77 @@ namespace xmltooling { XMLTOOLING_RUN_FILE, XMLTOOLING_CFG_FILE }; - + /** * Set the default package to use when resolving files. * - * @param pkgname name of default package to use + * @param pkgname name of default package to use + */ + virtual void setDefaultPackageName(const char* pkgname); + + /** + * Set the default installation prefix to use when resolving files. + * + * @param prefix name of default prefix to use + */ + virtual void setDefaultPrefix(const char* prefix); + + /** + * Set the lib directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the library directory to use + */ + virtual void setLibDir(const char* dir); + + /** + * Set the log directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the log directory to use + */ + virtual void setLogDir(const char* dir); + + /** + * Set the XML directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the XML directory to use */ - virtual void setDefaultPackageName(const char* pkgname) { - m_defaultPackage = pkgname; - } + virtual void setXMLDir(const char* dir); /** - * Set the default istallation prefix to use when resolving files. + * Set the run directory to use when resolving files. + *

If relative, the default prefix will be prepended. * - * @param prefix name of default prefix to use + * @param dir the run directory to use */ - virtual void setDefaultPrefix(const char* prefix) { - m_defaultPrefix = prefix; - } - + virtual void setRunDir(const char* dir); + + /** + * Set the config directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the config directory to use + */ + virtual void setCfgDir(const char* dir); + /** * Changes the input filename into an absolute pathname to the same file. - * + * * @param s filename to resolve * @param filetype type of file being resolved - * @param pkgname application package name to use in resolving the file (or NULL for the default) - * @param prefix installation prefix to use in resolving the file (or NULL for the default) - * + * @param pkgname application package name to use in resolving the file (or nullptr for the default) + * @param prefix installation prefix to use in resolving the file (or nullptr for the default) + * * @return a const reference to the input string */ - virtual const std::string& resolve(std::string& s, file_type_t filetype, const char* pkgname=NULL, const char* prefix=NULL) const; + virtual const std::string& resolve(std::string& s, file_type_t filetype, const char* pkgname=nullptr, const char* prefix=nullptr) const; private: - bool isAbsolute(const char* s) const { - return (*s == '/' || *s == '\\' || *(s+1) == ':'); - } + bool isAbsolute(const char* s) const; - std::string m_defaultPackage,m_defaultPrefix; + std::string m_defaultPackage,m_defaultPrefix,m_lib,m_log,m_xml,m_run,m_cfg; }; };