root/OpenSceneGraph/trunk/include/osgDB/FileUtils @ 10171

Revision 10171, 4.5 kB (checked in by robert, 6 years ago)

Refactored the Registry::ReadFileCallback?, WriteFileCallback? and ReaderWriter::Options to they are now defined in their own header and in the osgDB namespace.

Introduced a new FindFileCallback? to Registry to compliement the existing ReadFileCallback? and WriteFileCallback?.

Added support for assign Find, Read and WriteFileCallbacks? to osdDB::Options to enable plugins/applications to override the callbacks just for that
read/write call and any nested file operations

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
RevLine 
[5328]1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
[1529]2 *
3 * This library is open source and may be redistributed and/or modified under 
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version.  The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 * OpenSceneGraph Public License for more details.
12*/
[51]13
[8]14#ifndef OSGDB_FILEUTILS
15#define OSGDB_FILEUTILS 1
16
[773]17#include <osgDB/Registry>
[8]18
19#include <vector>
[773]20#include <deque>
[8]21#include <string>
[9475]22#include <stdio.h>
[8]23
24namespace osgDB {
25
[2971]26enum FileType
27{
28    FILE_NOT_FOUND,
29    REGULAR_FILE,
[5142]30    DIRECTORY
[2971]31};
[2444]32
[9124]33// Overload of the standard fopen function. If OSG_USE_UTF8_FILENAME is defined,
34// filename will be expanded from UTF8 to UTF16 and _wfopen will be called.
35extern OSGDB_EXPORT FILE* fopen(const char* filename, const char* mode);
36
[3367]37// Make a new directory.  Returns true if directory exists or was created.
38extern OSGDB_EXPORT bool makeDirectory( const std::string &directoryPath );
[2971]39
[3367]40// Make a new directory for a given file.
41extern OSGDB_EXPORT bool makeDirectoryForFile( const std::string &filePath );
42   
43
[7648]44/** return true if a file exists. */
[1363]45extern OSGDB_EXPORT bool fileExists(const std::string& filename);
[8]46
[2971]47/** return type of file. */
48extern OSGDB_EXPORT FileType fileType(const std::string& filename);
[8]49
[773]50/** find specified file in specified file path.*/
[2444]51extern OSGDB_EXPORT std::string findFileInPath(const std::string& filename, const FilePathList& filePath,CaseSensitivity caseSensitivity=CASE_SENSITIVE);
[136]52
[8]53/** return the directory/filename of a file if its is contained within specified directory.
54  * return "" if directory does not contain file.  If caseInsensitive is set to true then
[31]55  * a case insensitive comparison is used to compare fileName to directory contents.
[7648]56  * This is useful when unix programs attempt read case insensitive windows filenames.
[8]57  */
[2444]58extern OSGDB_EXPORT std::string findFileInDirectory(const std::string& fileName,const std::string& dirName,CaseSensitivity caseSensitivity=CASE_SENSITIVE);
[8]59
[773]60/** simple list of names to represent a directory's contents. */
61typedef std::vector<std::string> DirectoryContents;
62
[8]63/** return the contents of a directory.
64  * returns an empty array on any error.*/
[1363]65extern OSGDB_EXPORT DirectoryContents getDirectoryContents(const std::string& dirName);
[8]66
67
[773]68
69inline void setDataFilePathList(const FilePathList& filepath) { osgDB::Registry::instance()->setDataFilePathList(filepath); }
70
71inline void setDataFilePathList(const std::string& paths) { osgDB::Registry::instance()->setDataFilePathList(paths); }
72
73inline FilePathList& getDataFilePathList() { return osgDB::Registry::instance()->getDataFilePathList(); }
74
[3689]75/** Search for specified file in file system, checking the DataFilePathList for possible paths,
76  * returning the full path of the first valid file found, return an empty string if no string is found.
77  */
[2444]78extern OSGDB_EXPORT std::string findDataFile(const std::string& filename,CaseSensitivity caseSensitivity=CASE_SENSITIVE);
[773]79
[3689]80/** Search for specified file in file system, checking first the database path set in the Options structure, then the DataFilePathList for possible paths,
81  * returning the full path of the first valid file found, return an empty string if no string is found.
82  */
[10171]83extern OSGDB_EXPORT std::string findDataFile(const std::string& filename,const Options* options, CaseSensitivity caseSensitivity=CASE_SENSITIVE);
[3689]84
[773]85inline void setLibraryFilePathList(const FilePathList& filepaths) { osgDB::Registry::instance()->setLibraryFilePathList(filepaths); }
86
87inline void setLibraryFilePathList(const std::string& paths) { osgDB::Registry::instance()->setLibraryFilePathList(paths); }
88
89inline FilePathList& getLibraryFilePathList() { return osgDB::Registry::instance()->getLibraryFilePathList(); }
90
[2444]91extern OSGDB_EXPORT std::string findLibraryFile(const std::string& filename,CaseSensitivity caseSensitivity=CASE_SENSITIVE);
[773]92
[7648]93/** convert a string containing a list of paths  delimited either with ';' (Windows) or ':' (All other platforms) into FilePath representation.*/
[3330]94extern OSGDB_EXPORT void convertStringPathIntoFilePathList(const std::string& paths,FilePathList& filepath);
[773]95
[3330]96extern OSGDB_EXPORT void appendPlatformSpecificLibraryFilePaths(FilePathList& filepath);
[4420]97extern OSGDB_EXPORT void appendPlatformSpecificResourceFilePaths(FilePathList& filepath);
[3330]98
[349]99}
[8]100
101#endif
Note: See TracBrowser for help on using the browser.