You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-08 14:22:09 +03:00
Reformat all code to coding standard
This commit is contained in:
@@ -47,11 +47,13 @@
|
||||
#include <endian.h>
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN // 4312
|
||||
inline uint64_t htonll(uint64_t n)
|
||||
{ return n; }
|
||||
{
|
||||
return n;
|
||||
}
|
||||
#elif __BYTE_ORDER == __LITTLE_ENDIAN // 1234
|
||||
inline uint64_t htonll(uint64_t n)
|
||||
{
|
||||
return ((((uint64_t) htonl(n & 0xFFFFFFFFLLU)) << 32) | (htonl((n & 0xFFFFFFFF00000000LLU) >> 32)));
|
||||
return ((((uint64_t) htonl(n & 0xFFFFFFFFLLU)) << 32) | (htonl((n & 0xFFFFFFFF00000000LLU) >> 32)));
|
||||
}
|
||||
#else // __BYTE_ORDER == __PDP_ENDIAN 3412
|
||||
inline uint64_t htonll(uint64_t n);
|
||||
@@ -62,14 +64,16 @@ inline uint64_t htonll(uint64_t n);
|
||||
//Assume we're on little-endian
|
||||
inline uint64_t htonll(uint64_t n)
|
||||
{
|
||||
return ((((uint64_t) htonl(n & 0xFFFFFFFFULL)) << 32) | (htonl((n & 0xFFFFFFFF00000000ULL) >> 32)));
|
||||
return ((((uint64_t) htonl(n & 0xFFFFFFFFULL)) << 32) | (htonl((n & 0xFFFFFFFF00000000ULL) >> 32)));
|
||||
}
|
||||
#endif //_MSC_VER
|
||||
#endif //__linux__
|
||||
|
||||
// this method evalutes the uint64 that stores a char[] to expected value
|
||||
inline uint64_t uint64ToStr(uint64_t n)
|
||||
{ return htonll(n); }
|
||||
{
|
||||
return htonll(n);
|
||||
}
|
||||
|
||||
|
||||
#if defined(_MSC_VER) && defined(xxxDATACONVERT_DLLEXPORT)
|
||||
@@ -78,26 +82,27 @@ inline uint64_t uint64ToStr(uint64_t n)
|
||||
#define EXPORT
|
||||
#endif
|
||||
|
||||
const int64_t IDB_pow[19] = {
|
||||
1,
|
||||
10,
|
||||
100,
|
||||
1000,
|
||||
10000,
|
||||
100000,
|
||||
1000000,
|
||||
10000000,
|
||||
100000000,
|
||||
1000000000,
|
||||
10000000000LL,
|
||||
100000000000LL,
|
||||
1000000000000LL,
|
||||
10000000000000LL,
|
||||
100000000000000LL,
|
||||
1000000000000000LL,
|
||||
10000000000000000LL,
|
||||
100000000000000000LL,
|
||||
1000000000000000000LL
|
||||
const int64_t IDB_pow[19] =
|
||||
{
|
||||
1,
|
||||
10,
|
||||
100,
|
||||
1000,
|
||||
10000,
|
||||
100000,
|
||||
1000000,
|
||||
10000000,
|
||||
100000000,
|
||||
1000000000,
|
||||
10000000000LL,
|
||||
100000000000LL,
|
||||
1000000000000LL,
|
||||
10000000000000LL,
|
||||
100000000000000LL,
|
||||
1000000000000000LL,
|
||||
10000000000000000LL,
|
||||
100000000000000000LL,
|
||||
1000000000000000000LL
|
||||
};
|
||||
|
||||
|
||||
@@ -134,7 +139,7 @@ struct Date
|
||||
inline
|
||||
int32_t Date::convertToMySQLint() const
|
||||
{
|
||||
return (int32_t) (year*10000)+(month*100)+day;
|
||||
return (int32_t) (year * 10000) + (month * 100) + day;
|
||||
}
|
||||
|
||||
/** @brief a structure to hold a datetime
|
||||
@@ -167,7 +172,7 @@ struct DateTime
|
||||
inline
|
||||
int64_t DateTime::convertToMySQLint() const
|
||||
{
|
||||
return (int64_t) (year*10000000000LL)+(month*100000000)+(day*1000000)+(hour*10000)+(minute*100)+second;
|
||||
return (int64_t) (year * 10000000000LL) + (month * 100000000) + (day * 1000000) + (hour * 10000) + (minute * 100) + second;
|
||||
}
|
||||
|
||||
inline
|
||||
@@ -192,13 +197,13 @@ struct Time
|
||||
signed minute : 8;
|
||||
signed hour : 12;
|
||||
signed day : 12;
|
||||
|
||||
|
||||
// NULL column value = 0xFFFFFFFFFFFFFFFE
|
||||
Time() : msecond (0xFFFFFE),
|
||||
second (0xFF),
|
||||
minute (0xFF),
|
||||
hour (0xFFF),
|
||||
day (0xFFF){}
|
||||
second (0xFF),
|
||||
minute (0xFF),
|
||||
hour (0xFFF),
|
||||
day (0xFFF) {}
|
||||
|
||||
// Construct a Time from a 64 bit integer InfiniDB time.
|
||||
Time(int64_t val) :
|
||||
@@ -207,20 +212,24 @@ struct Time
|
||||
minute((val >> 32) & 0xff),
|
||||
hour((val >> 40) & 0xfff),
|
||||
day((val >> 52) & 0xfff)
|
||||
{}
|
||||
{}
|
||||
};
|
||||
|
||||
static uint32_t daysInMonth[13] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0};
|
||||
|
||||
inline uint32_t getDaysInMonth(uint32_t month)
|
||||
{ return ( (month < 1 || month > 12) ? 0 : daysInMonth[month-1]);}
|
||||
{
|
||||
return ( (month < 1 || month > 12) ? 0 : daysInMonth[month - 1]);
|
||||
}
|
||||
|
||||
inline bool isLeapYear ( int year)
|
||||
{
|
||||
if( year % 400 == 0 )
|
||||
if ( year % 400 == 0 )
|
||||
return true;
|
||||
if( ( year % 4 == 0 ) && ( year % 100 != 0 ) )
|
||||
|
||||
if ( ( year % 4 == 0 ) && ( year % 100 != 0 ) )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -229,21 +238,24 @@ bool isDateValid ( int day, int month, int year)
|
||||
{
|
||||
bool valid = true;
|
||||
|
||||
if ( year == 0 && month == 0 && year == 0 )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( year == 0 && month == 0 && year == 0 )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
int daycheck = getDaysInMonth( month );
|
||||
if( month == 2 && isLeapYear( year ) )
|
||||
|
||||
if ( month == 2 && isLeapYear( year ) )
|
||||
// 29 days in February in a leap year
|
||||
daycheck = 29;
|
||||
|
||||
if ( ( year < 1000 ) || ( year > 9999 ) )
|
||||
valid = false;
|
||||
else if ( month < 1 || month > 12 )
|
||||
valid = false;
|
||||
else if ( day < 1 || day > daycheck )
|
||||
valid = false;
|
||||
|
||||
return ( valid );
|
||||
}
|
||||
|
||||
@@ -251,6 +263,7 @@ inline
|
||||
bool isDateTimeValid ( int hour, int minute, int second, int microSecond)
|
||||
{
|
||||
bool valid = false;
|
||||
|
||||
if ( hour >= 0 && hour <= 24 )
|
||||
{
|
||||
if ( minute >= 0 && minute < 60 )
|
||||
@@ -264,6 +277,7 @@ bool isDateTimeValid ( int hour, int minute, int second, int microSecond)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
@@ -272,8 +286,8 @@ int64_t string_to_ll( const std::string& data, bool& bSaturate )
|
||||
{
|
||||
// This function doesn't take into consideration our special values
|
||||
// for NULL and EMPTY when setting the saturation point. Should it?
|
||||
char *ep = NULL;
|
||||
const char *str = data.c_str();
|
||||
char* ep = NULL;
|
||||
const char* str = data.c_str();
|
||||
errno = 0;
|
||||
int64_t value = strtoll(str, &ep, 10);
|
||||
|
||||
@@ -292,8 +306,8 @@ uint64_t string_to_ull( const std::string& data, bool& bSaturate )
|
||||
{
|
||||
// This function doesn't take into consideration our special values
|
||||
// for NULL and EMPTY when setting the saturation point. Should it?
|
||||
char *ep = NULL;
|
||||
const char *str = data.c_str();
|
||||
char* ep = NULL;
|
||||
const char* str = data.c_str();
|
||||
errno = 0;
|
||||
|
||||
// check for negative number. saturate to 0;
|
||||
@@ -302,7 +316,9 @@ uint64_t string_to_ull( const std::string& data, bool& bSaturate )
|
||||
bSaturate = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t value = strtoull(str, &ep, 10);
|
||||
|
||||
// (no digits) || (more chars) || (other errors & value = 0)
|
||||
if ((ep == str) || (*ep != '\0') || (errno != 0 && value == 0))
|
||||
throw logging::QueryDataExcept("value is not numerical.", logging::formatErr);
|
||||
@@ -327,43 +343,43 @@ public:
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static boost::any convertColumnData( const execplan::CalpontSystemCatalog::ColType& colType,
|
||||
const std::string& dataOrig, bool& bSaturate,
|
||||
bool nulFlag = false, bool noRoundup = false, bool isUpdate = false);
|
||||
const std::string& dataOrig, bool& bSaturate,
|
||||
bool nulFlag = false, bool noRoundup = false, bool isUpdate = false);
|
||||
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string dateToString( int datevalue );
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string dateToString( int datevalue );
|
||||
static inline void dateToString( int datevalue, char* buf, unsigned int buflen );
|
||||
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string datetimeToString( long long datetimevalue );
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string datetimeToString( long long datetimevalue );
|
||||
static inline void datetimeToString( long long datetimevalue, char* buf, unsigned int buflen );
|
||||
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string dateToString1( int datevalue );
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string dateToString1( int datevalue );
|
||||
static inline void dateToString1( int datevalue, char* buf, unsigned int buflen );
|
||||
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string datetimeToString1( long long datetimevalue );
|
||||
/**
|
||||
* @brief convert a columns data from native format to a string
|
||||
*
|
||||
* @param type the columns database type
|
||||
* @param data the columns string representation of it's data
|
||||
*/
|
||||
EXPORT static std::string datetimeToString1( long long datetimevalue );
|
||||
static inline void datetimeToString1( long long datetimevalue, char* buf, unsigned int buflen );
|
||||
|
||||
/**
|
||||
@@ -377,14 +393,14 @@ public:
|
||||
* @param dataOrgLen length specification of dataOrg
|
||||
*/
|
||||
EXPORT static int32_t convertColumnDate( const char* dataOrg,
|
||||
CalpontDateTimeFormat dateFormat,
|
||||
int& status, unsigned int dataOrgLen );
|
||||
CalpontDateTimeFormat dateFormat,
|
||||
int& status, unsigned int dataOrgLen );
|
||||
|
||||
/**
|
||||
* @brief Is specified date valid; used by binary bulk load
|
||||
*/
|
||||
EXPORT static bool isColumnDateValid( int32_t date );
|
||||
|
||||
|
||||
/**
|
||||
* @brief convert a datetime column data, represented as a string,
|
||||
* to it's native format. This function is for bulkload to use.
|
||||
@@ -396,8 +412,8 @@ public:
|
||||
* @param dataOrgLen length specification of dataOrg
|
||||
*/
|
||||
EXPORT static int64_t convertColumnDatetime( const char* dataOrg,
|
||||
CalpontDateTimeFormat datetimeFormat,
|
||||
int& status, unsigned int dataOrgLen );
|
||||
CalpontDateTimeFormat datetimeFormat,
|
||||
int& status, unsigned int dataOrgLen );
|
||||
|
||||
/**
|
||||
* @brief Is specified datetime valid; used by binary bulk load
|
||||
@@ -408,8 +424,11 @@ public:
|
||||
static inline std::string decimalToString(int64_t value, uint8_t scale, execplan::CalpontSystemCatalog::ColDataType colDataType);
|
||||
static inline void decimalToString(int64_t value, uint8_t scale, char* buf, unsigned int buflen, execplan::CalpontSystemCatalog::ColDataType colDataType);
|
||||
static inline std::string constructRegexp(const std::string& str);
|
||||
static inline bool isEscapedChar(char c) { return ('%' == c || '_' == c); }
|
||||
|
||||
static inline bool isEscapedChar(char c)
|
||||
{
|
||||
return ('%' == c || '_' == c);
|
||||
}
|
||||
|
||||
// convert string to date
|
||||
EXPORT static int64_t stringToDate(const std::string& data);
|
||||
// convert string to datetime
|
||||
@@ -418,7 +437,7 @@ public:
|
||||
EXPORT static int64_t intToDate(int64_t data);
|
||||
// convert integer to datetime
|
||||
EXPORT static int64_t intToDatetime(int64_t data, bool* isDate = NULL);
|
||||
|
||||
|
||||
// convert string to date. alias to stringToDate
|
||||
EXPORT static int64_t dateToInt(const std::string& date);
|
||||
// convert string to datetime. alias to datetimeToInt
|
||||
@@ -431,43 +450,43 @@ public:
|
||||
inline void DataConvert::dateToString( int datevalue, char* buf, unsigned int buflen)
|
||||
{
|
||||
snprintf( buf, buflen, "%04d-%02d-%02d",
|
||||
(unsigned)((datevalue >> 16) & 0xffff),
|
||||
(unsigned)((datevalue >> 12) & 0xf),
|
||||
(unsigned)((datevalue >> 6) & 0x3f)
|
||||
(unsigned)((datevalue >> 16) & 0xffff),
|
||||
(unsigned)((datevalue >> 12) & 0xf),
|
||||
(unsigned)((datevalue >> 6) & 0x3f)
|
||||
);
|
||||
}
|
||||
|
||||
inline void DataConvert::datetimeToString( long long datetimevalue, char* buf, unsigned int buflen )
|
||||
{
|
||||
snprintf( buf, buflen, "%04d-%02d-%02d %02d:%02d:%02d",
|
||||
(unsigned)((datetimevalue >> 48) & 0xffff),
|
||||
(unsigned)((datetimevalue >> 44) & 0xf),
|
||||
(unsigned)((datetimevalue >> 38) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 32) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 26) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 20) & 0x3f)
|
||||
);
|
||||
snprintf( buf, buflen, "%04d-%02d-%02d %02d:%02d:%02d",
|
||||
(unsigned)((datetimevalue >> 48) & 0xffff),
|
||||
(unsigned)((datetimevalue >> 44) & 0xf),
|
||||
(unsigned)((datetimevalue >> 38) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 32) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 26) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 20) & 0x3f)
|
||||
);
|
||||
}
|
||||
|
||||
inline void DataConvert::dateToString1( int datevalue, char* buf, unsigned int buflen)
|
||||
{
|
||||
snprintf( buf, buflen, "%04d%02d%02d",
|
||||
(unsigned)((datevalue >> 16) & 0xffff),
|
||||
(unsigned)((datevalue >> 12) & 0xf),
|
||||
(unsigned)((datevalue >> 6) & 0x3f)
|
||||
(unsigned)((datevalue >> 16) & 0xffff),
|
||||
(unsigned)((datevalue >> 12) & 0xf),
|
||||
(unsigned)((datevalue >> 6) & 0x3f)
|
||||
);
|
||||
}
|
||||
|
||||
inline void DataConvert::datetimeToString1( long long datetimevalue, char* buf, unsigned int buflen )
|
||||
{
|
||||
snprintf( buf, buflen, "%04d%02d%02d%02d%02d%02d",
|
||||
(unsigned)((datetimevalue >> 48) & 0xffff),
|
||||
(unsigned)((datetimevalue >> 44) & 0xf),
|
||||
(unsigned)((datetimevalue >> 38) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 32) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 26) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 20) & 0x3f)
|
||||
);
|
||||
snprintf( buf, buflen, "%04d%02d%02d%02d%02d%02d",
|
||||
(unsigned)((datetimevalue >> 48) & 0xffff),
|
||||
(unsigned)((datetimevalue >> 44) & 0xf),
|
||||
(unsigned)((datetimevalue >> 38) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 32) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 26) & 0x3f),
|
||||
(unsigned)((datetimevalue >> 20) & 0x3f)
|
||||
);
|
||||
}
|
||||
|
||||
inline std::string DataConvert::decimalToString(int64_t value, uint8_t scale, execplan::CalpontSystemCatalog::ColDataType colDataType)
|
||||
@@ -478,13 +497,13 @@ inline std::string DataConvert::decimalToString(int64_t value, uint8_t scale, ex
|
||||
}
|
||||
|
||||
inline void DataConvert::decimalToString(int64_t int_val, uint8_t scale, char* buf, unsigned int buflen,
|
||||
execplan::CalpontSystemCatalog::ColDataType colDataType)
|
||||
execplan::CalpontSystemCatalog::ColDataType colDataType)
|
||||
{
|
||||
// Need to convert a string with a binary unsigned number in it to a 64-bit signed int
|
||||
|
||||
|
||||
// MySQL seems to round off values unless we use the string store method. Groan.
|
||||
// Taken from ha_calpont_impl.cpp
|
||||
|
||||
|
||||
//biggest Calpont supports is DECIMAL(18,x), or 18 total digits+dp+sign for column
|
||||
// Need 19 digits maxium to hold a sum result of 18 digits decimal column.
|
||||
if (isUnsigned(colDataType))
|
||||
@@ -511,25 +530,31 @@ inline void DataConvert::decimalToString(int64_t int_val, uint8_t scale, char* b
|
||||
//we want to move the trailing null as well, so it's really dt_scale+1 chars
|
||||
size_t l1 = strlen(buf);
|
||||
char* ptr = &buf[0];
|
||||
|
||||
if (int_val < 0)
|
||||
{
|
||||
ptr++;
|
||||
idbassert(l1 >= 2);
|
||||
l1--;
|
||||
}
|
||||
|
||||
//need to make sure we have enough leading zeros for this to work...
|
||||
//at this point scale is always > 0
|
||||
size_t l2 = 1;
|
||||
|
||||
if ((unsigned)scale > l1)
|
||||
{
|
||||
const char* zeros = "00000000000000000000"; //20 0's
|
||||
size_t diff=0;
|
||||
size_t diff = 0;
|
||||
|
||||
if (int_val != 0)
|
||||
diff = scale - l1; //this will always be > 0
|
||||
else
|
||||
diff = scale;
|
||||
|
||||
memmove((ptr + diff), ptr, l1 + 1); //also move null
|
||||
memcpy(ptr, zeros, diff);
|
||||
|
||||
if (int_val != 0)
|
||||
l1 = 0;
|
||||
else
|
||||
@@ -544,6 +569,7 @@ inline void DataConvert::decimalToString(int64_t int_val, uint8_t scale, char* b
|
||||
{
|
||||
l1 -= scale;
|
||||
}
|
||||
|
||||
memmove((ptr + l1 + l2), (ptr + l1), scale + 1); //also move null
|
||||
|
||||
if (l2 == 2)
|
||||
@@ -562,15 +588,20 @@ inline std::string DataConvert::constructRegexp(const std::string& str)
|
||||
uint32_t i, cBufIdx = 0;
|
||||
// translate to regexp symbols
|
||||
cBuf[cBufIdx++] = '^'; // implicit leading anchor
|
||||
for (i = 0; i < str.length(); i++) {
|
||||
|
||||
for (i = 0; i < str.length(); i++)
|
||||
{
|
||||
c = (char) str.c_str()[i];
|
||||
switch (c) {
|
||||
|
||||
switch (c)
|
||||
{
|
||||
|
||||
// chars to substitute
|
||||
case '%':
|
||||
cBuf[cBufIdx++] = '.';
|
||||
cBuf[cBufIdx++] = '*';
|
||||
break;
|
||||
|
||||
case '_':
|
||||
cBuf[cBufIdx++] = '.';
|
||||
break;
|
||||
@@ -581,45 +612,49 @@ inline std::string DataConvert::constructRegexp(const std::string& str)
|
||||
case '*':
|
||||
case '^':
|
||||
case '$':
|
||||
case '?':
|
||||
case '+':
|
||||
case '|':
|
||||
case '[':
|
||||
case '{':
|
||||
case '}':
|
||||
case '(':
|
||||
case ')':
|
||||
case '?':
|
||||
case '+':
|
||||
case '|':
|
||||
case '[':
|
||||
case '{':
|
||||
case '}':
|
||||
case '(':
|
||||
case ')':
|
||||
cBuf[cBufIdx++] = '\\';
|
||||
cBuf[cBufIdx++] = c;
|
||||
break;
|
||||
|
||||
case '\\': //this is the sql escape char
|
||||
if ( i + 1 < str.length())
|
||||
{
|
||||
if (isEscapedChar(str.c_str()[i+1]))
|
||||
if (isEscapedChar(str.c_str()[i + 1]))
|
||||
{
|
||||
cBuf[cBufIdx++] = str.c_str()[++i];
|
||||
break;
|
||||
}
|
||||
else if ('\\' == str.c_str()[i+1])
|
||||
else if ('\\' == str.c_str()[i + 1])
|
||||
{
|
||||
cBuf[cBufIdx++] = c;
|
||||
cBuf[cBufIdx++] = str.c_str()[++i];
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
} //single slash
|
||||
|
||||
cBuf[cBufIdx++] = '\\';
|
||||
cBuf[cBufIdx++] = c;
|
||||
break;
|
||||
|
||||
default:
|
||||
cBuf[cBufIdx++] = c;
|
||||
}
|
||||
}
|
||||
|
||||
cBuf[cBufIdx++] = '$'; // implicit trailing anchor
|
||||
cBuf[cBufIdx++] = '\0';
|
||||
|
||||
#ifdef VERBOSE
|
||||
cerr << "regexified string is " << cBuf << endl;
|
||||
cerr << "regexified string is " << cBuf << endl;
|
||||
#endif
|
||||
return cBuf;
|
||||
}
|
||||
|
Reference in New Issue
Block a user