From Martin Naylor, replace osgDB::fstream with an osgDB::open() call.
This commit is contained in:
parent
1a7f2fcb3e
commit
b4bfc3a451
@ -19,26 +19,17 @@
|
|||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
|
||||||
namespace osgDB
|
namespace osgDB
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replacements for std::fstream, std::ifstream, and std::ofstream to
|
* Convenience function for fstream open , std::ifstream, and std::ofstream to
|
||||||
* automatically handle UTF-8 to UTF-16 filename conversion. Always use one
|
* automatically handle UTF-8 to UTF-16 filename conversion. Always use one
|
||||||
* of these classes in any OpenSceneGraph code instead of the STL equivalent.
|
* of these classes in any OpenSceneGraph code instead of the STL equivalent.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class OSGDB_EXPORT fstream : public std::fstream
|
void OSGDB_EXPORT open(std::fstream& fs, const char* filename,std::ios_base::openmode mode);
|
||||||
{
|
|
||||||
public:
|
|
||||||
fstream();
|
|
||||||
explicit fstream(const char* filename,
|
|
||||||
std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out);
|
|
||||||
~fstream();
|
|
||||||
|
|
||||||
void open(const char* filename,
|
|
||||||
std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out);
|
|
||||||
};
|
|
||||||
|
|
||||||
class OSGDB_EXPORT ifstream : public std::ifstream
|
class OSGDB_EXPORT ifstream : public std::ifstream
|
||||||
{
|
{
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <osgDB/fstream>
|
#include <osgDB/fstream>
|
||||||
|
|
||||||
|
|
||||||
#include <osgDB/ConvertUTF>
|
#include <osgDB/ConvertUTF>
|
||||||
|
|
||||||
#include <osg/Config>
|
#include <osg/Config>
|
||||||
@ -25,17 +27,13 @@ namespace osgDB
|
|||||||
#define OSGDB_CONVERT_UTF8_FILENAME(s) s
|
#define OSGDB_CONVERT_UTF8_FILENAME(s) s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fstream::fstream(){}
|
|
||||||
fstream::fstream(const char* filename,
|
void open(std::fstream &fs, const char* filename,std::ios_base::openmode mode)
|
||||||
std::ios_base::openmode mode) : std::fstream(OSGDB_CONVERT_UTF8_FILENAME(filename), mode)
|
|
||||||
{}
|
|
||||||
fstream::~fstream(){}
|
|
||||||
void fstream::open(const char* filename,
|
|
||||||
std::ios_base::openmode mode)
|
|
||||||
{
|
{
|
||||||
std::fstream::open(OSGDB_CONVERT_UTF8_FILENAME(filename), mode);
|
fs.open(OSGDB_CONVERT_UTF8_FILENAME(filename), mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ifstream::ifstream(){}
|
ifstream::ifstream(){}
|
||||||
ifstream::ifstream(const char* filename,
|
ifstream::ifstream(const char* filename,
|
||||||
std::ios_base::openmode mode) : std::ifstream(OSGDB_CONVERT_UTF8_FILENAME(filename), mode)
|
std::ios_base::openmode mode) : std::ifstream(OSGDB_CONVERT_UTF8_FILENAME(filename), mode)
|
||||||
|
@ -373,7 +373,7 @@ bool OSGA_Archive::open(const std::string& filename, ArchiveStatus status, unsig
|
|||||||
_input.close();
|
_input.close();
|
||||||
_status = WRITE;
|
_status = WRITE;
|
||||||
|
|
||||||
_output.open(filename.c_str(), std::ios_base::binary | std::ios_base::in | std::ios_base::out);
|
osgDB::open(_output, filename.c_str(), std::ios_base::binary | std::ios_base::in | std::ios_base::out);
|
||||||
|
|
||||||
OSG_INFO<<"File position after open = "<<ARCHIVE_POS( _output.tellp() )<<" is_open "<<_output.is_open()<<std::endl;
|
OSG_INFO<<"File position after open = "<<ARCHIVE_POS( _output.tellp() )<<" is_open "<<_output.is_open()<<std::endl;
|
||||||
|
|
||||||
@ -391,7 +391,7 @@ bool OSGA_Archive::open(const std::string& filename, ArchiveStatus status, unsig
|
|||||||
OSG_INFO<<"OSGA_Archive::open("<<filename<<"), archive being created."<<std::endl;
|
OSG_INFO<<"OSGA_Archive::open("<<filename<<"), archive being created."<<std::endl;
|
||||||
|
|
||||||
_status = WRITE;
|
_status = WRITE;
|
||||||
_output.open(filename.c_str(), std::ios_base::out | std::ios_base::binary | std::ios_base::trunc);
|
osgDB::open(_output, filename.c_str(), std::ios_base::out | std::ios_base::binary | std::ios_base::trunc);
|
||||||
_output<<"osga";
|
_output<<"osga";
|
||||||
_output.write(reinterpret_cast<const char*>(&ENDIAN_TEST_NUMBER),4);
|
_output.write(reinterpret_cast<const char*>(&ENDIAN_TEST_NUMBER),4);
|
||||||
_output.write(reinterpret_cast<char*>(&s_currentSupportedVersion),sizeof(float));
|
_output.write(reinterpret_cast<char*>(&s_currentSupportedVersion),sizeof(float));
|
||||||
|
@ -217,7 +217,7 @@ class OSGA_Archive : public osgDB::Archive
|
|||||||
float _version;
|
float _version;
|
||||||
ArchiveStatus _status;
|
ArchiveStatus _status;
|
||||||
osgDB::ifstream _input;
|
osgDB::ifstream _input;
|
||||||
osgDB::fstream _output;
|
std::fstream _output;
|
||||||
|
|
||||||
std::string _archiveFileName;
|
std::string _archiveFileName;
|
||||||
std::string _masterFileName;
|
std::string _masterFileName;
|
||||||
|
Loading…
Reference in New Issue
Block a user