Import Geant4 9.6.0 source tree
This commit is contained in:
@@ -5,11 +5,32 @@
|
||||
#define tools_sprintf
|
||||
|
||||
#include <string>
|
||||
#include <cstdarg>
|
||||
#include <cstdio>
|
||||
#include "snpf"
|
||||
|
||||
namespace tools {
|
||||
|
||||
inline bool vsprintf(std::string& a_string,int a_length,const char* a_format,va_list a_args){
|
||||
a_string.clear();
|
||||
if(a_length<0) return false;
|
||||
if(!a_format) return false;
|
||||
char* s = new char[a_length+1];
|
||||
if(!s) return false;
|
||||
s[a_length] = '\0';
|
||||
int n = vsnpf(s,a_length+1,a_format,a_args);
|
||||
if(n>a_length) {
|
||||
delete [] s;
|
||||
return false;
|
||||
}
|
||||
if(s[a_length]!='\0') {
|
||||
delete [] s;
|
||||
return false;
|
||||
}
|
||||
a_string = s;
|
||||
delete [] s;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
inline bool sprintf(std::string& a_string,int a_length,const char* a_format,...){
|
||||
a_string.clear();
|
||||
if(a_length<0) return false;
|
||||
@@ -19,11 +40,7 @@ inline bool sprintf(std::string& a_string,int a_length,const char* a_format,...)
|
||||
s[a_length] = '\0';
|
||||
va_list args;
|
||||
va_start(args,a_format);
|
||||
#ifdef WIN32
|
||||
int n = _vsnprintf(s,a_length+1,a_format,args);
|
||||
#else
|
||||
int n = ::vsnprintf(s,a_length+1,a_format,args);
|
||||
#endif
|
||||
int n = vsnpf(s,a_length+1,a_format,args);
|
||||
va_end(args);
|
||||
if(n>a_length) {
|
||||
delete [] s;
|
||||
|
||||
Reference in New Issue
Block a user