mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
core(persistence): fix KW issues
This commit is contained in:
parent
197285d12a
commit
4e8311085f
@ -114,9 +114,11 @@ char* floatToString( char* buf, float value, bool halfprecision, bool explicitZe
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
static const char* fmt = halfprecision ? "%.4e" : "%.8e";
|
|
||||||
char* ptr = buf;
|
char* ptr = buf;
|
||||||
sprintf( buf, fmt, value );
|
if (halfprecision)
|
||||||
|
sprintf(buf, "%.4e", value);
|
||||||
|
else
|
||||||
|
sprintf(buf, "%.8e", value);
|
||||||
if( *ptr == '+' || *ptr == '-' )
|
if( *ptr == '+' || *ptr == '-' )
|
||||||
ptr++;
|
ptr++;
|
||||||
for( ; cv_isdigit(*ptr); ptr++ )
|
for( ; cv_isdigit(*ptr); ptr++ )
|
||||||
@ -350,6 +352,7 @@ public:
|
|||||||
|
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
|
flags = 0;
|
||||||
buffer.clear();
|
buffer.clear();
|
||||||
bufofs = 0;
|
bufofs = 0;
|
||||||
state = UNDEFINED;
|
state = UNDEFINED;
|
||||||
@ -358,6 +361,7 @@ public:
|
|||||||
write_mode = false;
|
write_mode = false;
|
||||||
mem_mode = false;
|
mem_mode = false;
|
||||||
space = 0;
|
space = 0;
|
||||||
|
wrap_margin = 71;
|
||||||
fmt = 0;
|
fmt = 0;
|
||||||
file = 0;
|
file = 0;
|
||||||
gzfile = 0;
|
gzfile = 0;
|
||||||
@ -615,7 +619,8 @@ public:
|
|||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
int line_offset = (int)ftell( file );
|
int line_offset = (int)ftell( file );
|
||||||
char* ptr0 = gets( &xml_buf_[0], xml_buf_size ), *ptr;
|
const char* ptr0 = this->gets(&xml_buf_[0], xml_buf_size );
|
||||||
|
const char* ptr = NULL;
|
||||||
if( !ptr0 )
|
if( !ptr0 )
|
||||||
break;
|
break;
|
||||||
ptr = ptr0;
|
ptr = ptr0;
|
||||||
@ -708,7 +713,7 @@ public:
|
|||||||
const char* json_signature = "{";
|
const char* json_signature = "{";
|
||||||
const char* xml_signature = "<?xml";
|
const char* xml_signature = "<?xml";
|
||||||
char buf[16];
|
char buf[16];
|
||||||
gets( buf, sizeof(buf)-2 );
|
this->gets( buf, sizeof(buf)-2 );
|
||||||
char* bufPtr = cv_skip_BOM(buf);
|
char* bufPtr = cv_skip_BOM(buf);
|
||||||
size_t bufOffset = bufPtr - buf;
|
size_t bufOffset = bufPtr - buf;
|
||||||
|
|
||||||
@ -861,7 +866,7 @@ public:
|
|||||||
|
|
||||||
char* gets()
|
char* gets()
|
||||||
{
|
{
|
||||||
char* ptr = gets(bufferStart(), (int)(bufferEnd() - bufferStart()));
|
char* ptr = this->gets(bufferStart(), (int)(bufferEnd() - bufferStart()));
|
||||||
if( !ptr )
|
if( !ptr )
|
||||||
{
|
{
|
||||||
ptr = bufferStart(); // FIXIT Why do we need this hack? What is about other parsers JSON/YAML?
|
ptr = bufferStart(); // FIXIT Why do we need this hack? What is about other parsers JSON/YAML?
|
||||||
@ -1766,11 +1771,13 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
FileStorage::FileStorage()
|
FileStorage::FileStorage()
|
||||||
|
: state(0)
|
||||||
{
|
{
|
||||||
p = makePtr<FileStorage::Impl>(this);
|
p = makePtr<FileStorage::Impl>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileStorage::FileStorage(const String& filename, int flags, const String& encoding)
|
FileStorage::FileStorage(const String& filename, int flags, const String& encoding)
|
||||||
|
: state(0)
|
||||||
{
|
{
|
||||||
p = makePtr<FileStorage::Impl>(this);
|
p = makePtr<FileStorage::Impl>(this);
|
||||||
bool ok = p->open(filename.c_str(), flags, encoding.c_str());
|
bool ok = p->open(filename.c_str(), flags, encoding.c_str());
|
||||||
|
@ -96,11 +96,20 @@ int decodeFormat( const char* dt, int* fmt_pairs, int max_len );
|
|||||||
int decodeSimpleFormat( const char* dt );
|
int decodeSimpleFormat( const char* dt );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CV_STATIC_ANALYSIS
|
||||||
|
#define CV_PARSE_ERROR_CPP(errmsg) do { (void)fs; abort(); } while (0)
|
||||||
|
#else
|
||||||
#define CV_PARSE_ERROR_CPP( errmsg ) \
|
#define CV_PARSE_ERROR_CPP( errmsg ) \
|
||||||
fs->parseError( CV_Func, (errmsg), __FILE__, __LINE__ )
|
fs->parseError( CV_Func, (errmsg), __FILE__, __LINE__ )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define CV_PERSISTENCE_CHECK_END_OF_BUFFER_BUG_CPP() do { \
|
||||||
|
CV_DbgAssert(ptr); \
|
||||||
|
if((ptr)[0] == 0 && (ptr) == fs->bufferEnd() - 1) CV_PARSE_ERROR_CPP("OpenCV persistence doesn't support very long lines"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#define CV_PERSISTENCE_CHECK_END_OF_BUFFER_BUG_CPP() \
|
|
||||||
if((ptr)[0] == 0 && (ptr) == fs->bufferEnd() - 1) CV_PARSE_ERROR_CPP("OpenCV persistence doesn't support very long lines")
|
|
||||||
|
|
||||||
class FileStorageParser;
|
class FileStorageParser;
|
||||||
class FileStorageEmitter;
|
class FileStorageEmitter;
|
||||||
@ -151,6 +160,7 @@ public:
|
|||||||
virtual double strtod(char* ptr, char** endptr) = 0;
|
virtual double strtod(char* ptr, char** endptr) = 0;
|
||||||
|
|
||||||
virtual char* parseBase64(char* ptr, int indent, FileNode& collection) = 0;
|
virtual char* parseBase64(char* ptr, int indent, FileNode& collection) = 0;
|
||||||
|
CV_NORETURN
|
||||||
virtual void parseError(const char* funcname, const std::string& msg,
|
virtual void parseError(const char* funcname, const std::string& msg,
|
||||||
const char* filename, int lineno) = 0;
|
const char* filename, int lineno) = 0;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user