49 #ifndef AI_IOSYSTEM_H_INC 50 #define AI_IOSYSTEM_H_INC 53 # error This header requires C++ to be used. aiFileIO.h is the \ 54 corresponding C interface. 64 # include <sys/stat.h> 65 # include <sys/types.h> 86 :
public Intern::AllocateFromAssimpHeap
114 AI_FORCE_INLINE
bool Exists(
const std::string& pFile)
const;
122 virtual bool Exists(
const char* pFile)
const = 0;
128 virtual char getOsSeparator()
const = 0;
145 virtual IOStream* Open(
const char* pFile,
146 const char* pMode =
"rb") = 0;
152 inline IOStream* Open(
const std::string& pFile,
153 const std::string& pMode = std::string(
"rb"));
160 virtual void Close(
IOStream* pFile) = 0;
175 virtual bool ComparePaths (
const char*
one,
176 const char* second)
const;
182 inline bool ComparePaths (
const std::string& one,
183 const std::string& second)
const;
190 virtual bool PushDirectory(
const std::string &path );
197 virtual const std::string &CurrentDirectory()
const;
203 virtual size_t StackSize()
const;
210 virtual bool PopDirectory();
218 virtual bool CreateDirectory(
const std::string &path );
225 virtual bool ChangeDirectory(
const std::string &path );
227 virtual bool DeleteFile(
const std::string &file );
230 std::vector<std::string> m_pathStack;
258 return Open(pFile.c_str(),pMode.c_str());
267 return Exists(pFile.c_str());
282 if ( path.empty() ) {
286 m_pathStack.push_back( path );
294 if ( m_pathStack.empty() ) {
295 static const std::string Dummy(
"");
298 return m_pathStack[ m_pathStack.size()-1 ];
304 return m_pathStack.size();
310 if ( m_pathStack.empty() ) {
314 m_pathStack.pop_back();
322 if ( path.empty() ) {
327 return 0 != ::_mkdir( path.c_str() );
329 return 0 != ::mkdir( path.c_str(), 0777 );
336 if ( path.empty() ) {
341 return 0 != ::_chdir( path.c_str() );
343 return 0 != ::chdir( path.c_str() );
350 bool IOSystem::DeleteFile(
const std::string &file ) {
351 if ( file.empty() ) {
354 const int retCode( ::
remove( file.c_str() ) );
355 return ( 0 == retCode );
359 #endif //AI_IOSYSTEM_H_INC virtual size_t StackSize() const
Returns the number of directories stored on the stack.
Definition: IOSystem.hpp:303
Basic data types and primitives, such as vectors or colors.
Assimp's CPP-API and all internal APIs.
Definition: DefaultIOStream.h:51
CPP-API: Class to handle file I/O for C++.
Definition: IOStream.hpp:66
virtual bool ComparePaths(const char *one, const char *second) const
Compares two paths and check whether the point to identical files.
virtual bool CreateDirectory(const std::string &path)
CReates an new directory at the given path.
Definition: IOSystem.hpp:321
virtual bool PopDirectory()
Pops the top directory from the stack.
Definition: IOSystem.hpp:309
AI_FORCE_INLINE bool Exists(const std::string &pFile) const
For backward compatibility.
Definition: IOSystem.hpp:263
CPP-API: Interface to the file system.
Definition: IOSystem.hpp:84
virtual const std::string & CurrentDirectory() const
Returns the top directory from the stack.
Definition: IOSystem.hpp:293
GLM_FUNC_DECL GLM_CONSTEXPR genType one()
Return 1.
Definition: constants.inl:12
virtual bool PushDirectory(const std::string &path)
Pushes a new directory onto the directory stack.
Definition: IOSystem.hpp:281
IOSystem()
Default constructor.
Definition: IOSystem.hpp:235
virtual bool ChangeDirectory(const std::string &path)
Will change the current directory to the given path.
Definition: IOSystem.hpp:335
virtual ~IOSystem()
Virtual destructor.
Definition: IOSystem.hpp:242
virtual IOStream * Open(const char *pFile, const char *pMode="rb")=0
Open a new file with a given path.