NOOP, remove trailing tabs/whitespace.
[ardour.git] / libs / pbd / pbd / search_path.h
index 2a14510ad26f2075608c1efa4fba42ee7d7a1184..41b1ffee55f36fadcbe844267c4bc4d110eb7975 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2007 Tim Mayberry 
+    Copyright (C) 2007 Tim Mayberry
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 
 */
 
-#ifndef PBD_SEARCH_PATH_INCLUDED
-#define PBD_SEARCH_PATH_INCLUDED
+#ifndef __libpbd_search_path_h__
+#define __libpbd_search_path_h__
 
 #include <string>
 #include <vector>
 
+#include "pbd/libpbd_visibility.h"
+
 namespace PBD {
 
 /**
- * @class The SearchPath class is a helper class for getting a 
- * vector of paths contained in a search path string where a 
- * "search path string" contains absolute directory paths 
+ * @class Searchpath
+ *
+ * The Searchpath class is a helper class for getting a
+ * vector of paths contained in a search path string where a
+ * "search path string" contains absolute directory paths
  * separated by a colon(:) or a semi-colon(;) on windows.
  *
- * The SearchPath class does not test whether the paths exist
+ * The Searchpath class does not test whether the paths exist
  * or are directories. It is basically just a container.
  */
-class SearchPath : public std::vector<std::string>
+class LIBPBD_TEMPLATE_API Searchpath : public std::vector<std::string>
 {
 public:
        /**
-        * Create an empty SearchPath.
+        * Create an empty Searchpath.
         */
-       SearchPath ();
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath ();
 
        /**
-        * Initialize SearchPath from a string where the string contains
-        * one or more absolute paths to directories which are delimited 
-        * by a path separation character. The path delimeter is a 
+        * Initialize Searchpath from a string where the string contains
+        * one or more absolute paths to directories which are delimited
+        * by a path separation character. The path delimeter is a
         * colon(:) on unix and a semi-colon(;) on windows.
         *
         * Each path contained in the search path may or may not resolve to
         * an existing directory in the filesystem.
-        * 
+        *
         * @param search_path A path string.
         */
-       SearchPath (const std::string& search_path);
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath (const std::string& search_path);
 
        /**
-        * Initialize SearchPath from a vector of paths that may or may
+        * Initialize Searchpath from a vector of paths that may or may
         * not exist.
         *
         * @param paths A vector of paths.
         */
-       SearchPath (const std::vector<std::string>& paths);
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath (const std::vector<std::string>& paths);
+
+       LIBPBD_TEMPLATE_MEMBER_API ~Searchpath () {};
 
        /**
         * @return a search path string.
@@ -69,41 +75,56 @@ public:
         * The string that is returned contains the platform specific
         * path separator.
         */
-       const std::string to_string () const;
+       LIBPBD_TEMPLATE_MEMBER_API const std::string to_string () const;
 
        /**
         * Add all the directories in path to this.
         */
-       SearchPath& operator+= (const SearchPath& spath);
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath& operator+= (const Searchpath& spath);
 
        /**
         * Add another directory path to the search path.
         */
-       SearchPath& operator+= (const std::string& directory_path);
-       
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath& operator+= (const std::string& directory_path);
+
        /**
-        * Concatenate another SearchPath onto this.
+        * Concatenate another Searchpath onto this.
         */
-       SearchPath& operator+ (const SearchPath& other);
-       
+       LIBPBD_TEMPLATE_MEMBER_API const Searchpath operator+ (const Searchpath& other);
+
        /**
         * Add another path to the search path.
         */
-       SearchPath& operator+ (const std::string& directory_path);
+       LIBPBD_TEMPLATE_MEMBER_API const Searchpath operator+ (const std::string& directory_path);
+
+       /**
+        * Remove all the directories in path from this.
+        */
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath& operator-= (const Searchpath& spath);
+
+       /**
+        * Remove a directory path from the search path.
+        */
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath& operator-= (const std::string& directory_path);
 
        /**
         * Add a sub-directory to each path in the search path.
-        * @param subdir The directory name, it should not contain 
+        * @param subdir The directory name, it should not contain
         * any path separating tokens.
         */
-       SearchPath& add_subdirectory_to_paths (const std::string& subdir);
+       LIBPBD_TEMPLATE_MEMBER_API Searchpath& add_subdirectory_to_paths (const std::string& subdir);
 
 protected:
 
-       void add_directory (const std::string& directory_path);
-       void add_directories (const std::vector<std::string>& paths);
+       LIBPBD_TEMPLATE_MEMBER_API void add_directory (const std::string& directory_path);
+       LIBPBD_TEMPLATE_MEMBER_API void add_directories (const std::vector<std::string>& paths);
+       LIBPBD_TEMPLATE_MEMBER_API void remove_directory (const std::string& directory_path);
+       LIBPBD_TEMPLATE_MEMBER_API void remove_directories (const std::vector<std::string>& paths);
 };
 
+LIBPBD_API void export_search_path (const std::string& base_dir, const char* varname, const char* dir);
+
+
 } // namespace PBD
 
-#endif
+#endif /* __libpbd_search_path_h__ */