mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-12 06:20:19 +08:00
Fixed all -Wtype-limits warnings
This commit is contained in:
+1
-1
@@ -61,7 +61,7 @@ IF(WIN32 AND NOT MINGW)
|
||||
ADD_DEFINITIONS("-DNOMINMAX")
|
||||
ADD_DEFINITIONS("-wd4100 -wd4127 -wd4150 -wd4191 -wd4242 -wd4244 -wd4251 -wd4305 -wd4365 -wd4512 -wd4514 -wd4548 -wd4571 -wd4619 -wd4625 -wd4626 -wd4628 -wd4668 -wd4710 -wd4711 -wd4738 -wd4820 -wd4946 -wd4986")
|
||||
ELSE ()
|
||||
ADD_DEFINITIONS( "-Wall" )
|
||||
ADD_DEFINITIONS( "-Wall -Wtype-limits" )
|
||||
ADD_DEFINITIONS("-Wno-unknown-pragmas")
|
||||
ENDIF()
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ private:
|
||||
bool hasColor_;
|
||||
float rangeMax_;
|
||||
bool rayTracing_;
|
||||
unsigned int emptyFloodFillDepth_;
|
||||
unsigned int emptyFloodFillDepth_;
|
||||
};
|
||||
|
||||
} /* namespace rtabmap */
|
||||
|
||||
@@ -4753,7 +4753,7 @@ void Rtabmap::setMemoryThreshold(int maxMemoryAllowed)
|
||||
{
|
||||
//must be positive, 0 mean inf memory allowed (no memory limit)
|
||||
_maxMemoryAllowed = maxMemoryAllowed;
|
||||
if(_maxMemoryAllowed < 0)
|
||||
if(maxMemoryAllowed < 0)
|
||||
{
|
||||
ULOGGER_WARN("maxMemoryAllowed < 0, then setting it to 0 (inf).");
|
||||
_maxMemoryAllowed = 0;
|
||||
|
||||
@@ -66,7 +66,7 @@ void OccupancyGrid::setMap(const cv::Mat & map, float xMin, float yMin, float ce
|
||||
{
|
||||
for(int j=0; j<map_.cols; ++j)
|
||||
{
|
||||
const char value = map_.at<char>(i,j);
|
||||
const char value = map_.at<signed char>(i,j);
|
||||
float * info = mapInfo_.ptr<float>(i,j);
|
||||
if(value == 0)
|
||||
{
|
||||
@@ -116,15 +116,15 @@ cv::Mat OccupancyGrid::getMap(float & xMin, float & yMin) const
|
||||
const float * info = mapInfo_.ptr<float>(i, j);
|
||||
if(info[3] == 0.0f)
|
||||
{
|
||||
map.at<char>(i, j) = -1; // unknown
|
||||
map.at<signed char>(i, j) = -1; // unknown
|
||||
}
|
||||
else if(info[3] >= occThr)
|
||||
{
|
||||
map.at<char>(i, j) = 100; // unknown
|
||||
map.at<signed char>(i, j) = 100; // unknown
|
||||
}
|
||||
else
|
||||
{
|
||||
map.at<char>(i, j) = 0; // empty
|
||||
map.at<signed char>(i, j) = 0; // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,11 +155,11 @@ cv::Mat OccupancyGrid::getProbMap(float & xMin, float & yMin) const
|
||||
const float * info = mapInfo_.ptr<float>(i, j);
|
||||
if(info[3] == 0.0f)
|
||||
{
|
||||
map.at<char>(i, j) = -1; // unknown
|
||||
map.at<signed char>(i, j) = -1; // unknown
|
||||
}
|
||||
else
|
||||
{
|
||||
map.at<char>(i, j) = char(probability(info[3])*100.0f); // empty
|
||||
map.at<signed char>(i, j) = char(probability(info[3])*100.0f); // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -447,7 +447,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
UASSERT_MSG(pt.y >=0 && pt.y < map.rows && pt.x >= 0 && pt.x < map.cols,
|
||||
uFormat("%d: pt=(%d,%d) map=%dx%d rawPt=(%f,%f) xMin=%f yMin=%f channels=%dvs%d",
|
||||
kter->first, pt.x, pt.y, map.cols, map.rows, ptf[0], ptf[1], xMin, yMin, iter->second.channels(), mapInfo.channels()-1).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
float * info = mapInfo.ptr<float>(pt.y, pt.x);
|
||||
@@ -523,7 +523,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
for(int j=ptBegin.y; j<ptEnd.y; ++j)
|
||||
{
|
||||
UASSERT(j < map.rows && i < map.cols);
|
||||
char & value = map.at<char>(j, i);
|
||||
signed char & value = map.at<signed char>(j, i);
|
||||
float * info = mapInfo.ptr<float>(j, i);
|
||||
int nodeId = (int)info[0];
|
||||
if(value != -1)
|
||||
@@ -573,7 +573,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
UASSERT_MSG(pt.y>=0 && pt.y < map.rows && pt.x>=0 && pt.x < map.cols,
|
||||
uFormat("%d: pt=(%d,%d) map=%dx%d rawPt=(%f,%f) xMin=%f yMin=%f channels=%dvs%d",
|
||||
kter->first, pt.x, pt.y, map.cols, map.rows, ptf[0], ptf[1], xMin, yMin, jter->second.channels(), mapInfo.channels()-1).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
float * info = mapInfo.ptr<float>(pt.y, pt.x);
|
||||
@@ -638,7 +638,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
{
|
||||
for(int j=1; j<map.cols-1; ++j)
|
||||
{
|
||||
char & value = map.at<char>(i, j);
|
||||
signed char & value = map.at<signed char>(i, j);
|
||||
if(value == -2)
|
||||
{
|
||||
value = 0;
|
||||
|
||||
@@ -320,7 +320,7 @@ OctoMap::OctoMap(const LocalGridCache * cache, const ParametersMap & parameters)
|
||||
Parameters::parse(parameters, Parameters::kGridRayTracing(), rayTracing_);
|
||||
|
||||
Parameters::parse(parameters, Parameters::kGridGlobalFloodFillDepth(), emptyFloodFillDepth_);
|
||||
UASSERT(emptyFloodFillDepth_>=0 && emptyFloodFillDepth_<=16);
|
||||
UASSERT(emptyFloodFillDepth_<=16);
|
||||
|
||||
UDEBUG("rangeMax_ =%f", rangeMax_);
|
||||
UDEBUG("rayTracing_ =%s", rayTracing_?"true":"false");
|
||||
|
||||
@@ -359,7 +359,7 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
cv::Point2i pt((ptf[0]-xMin)/cellSize, (ptf[1]-yMin)/cellSize);
|
||||
UASSERT_MSG(pt.y>0 && pt.y<map.rows && pt.x>0 && pt.x<map.cols,
|
||||
uFormat("id=%d, map min=(%f, %f) max=(%f,%f) map=%dx%d pt=(%d,%d)", kter->first, xMin, yMin, xMax, yMax, map.cols, map.rows, pt.x, pt.y).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
value = 0; // free space
|
||||
@@ -385,7 +385,7 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
{
|
||||
for(int j=ptBegin.y; j<ptEnd.y; ++j)
|
||||
{
|
||||
map.at<char>(j, i) = -2; // free space (footprint)
|
||||
map.at<signed char>(j, i) = -2; // free space (footprint)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -398,7 +398,7 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
cv::Point2i pt((ptf[0]-xMin)/cellSize, (ptf[1]-yMin)/cellSize);
|
||||
UASSERT_MSG(pt.y>0 && pt.y<map.rows && pt.x>0 && pt.x<map.cols,
|
||||
uFormat("id=%d: map min=(%f, %f) max=(%f,%f) map=%dx%d pt=(%d,%d)", kter->first, xMin, yMin, xMax, yMax, map.cols, map.rows, pt.x, pt.y).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
value = 100; // obstacles
|
||||
@@ -416,44 +416,44 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
{
|
||||
for(int j=0; j<map.cols; ++j)
|
||||
{
|
||||
if(map.at<char>(i, j) == -2)
|
||||
if(map.at<signed char>(i, j) == -2)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = 0;
|
||||
updatedMap.at<signed char>(i, j) = 0;
|
||||
}
|
||||
|
||||
if(i >=2 && i<map.rows-2 && j>=2 && j<map.cols-2)
|
||||
{
|
||||
if(map.at<char>(i, j) == -1 &&
|
||||
map.at<char>(i+1, j) != -1 &&
|
||||
map.at<char>(i-1, j) != -1 &&
|
||||
map.at<char>(i, j+1) != -1 &&
|
||||
map.at<char>(i, j-1) != -1)
|
||||
if(map.at<signed char>(i, j) == -1 &&
|
||||
map.at<signed char>(i+1, j) != -1 &&
|
||||
map.at<signed char>(i-1, j) != -1 &&
|
||||
map.at<signed char>(i, j+1) != -1 &&
|
||||
map.at<signed char>(i, j-1) != -1)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = 0;
|
||||
updatedMap.at<signed char>(i, j) = 0;
|
||||
}
|
||||
else if(map.at<char>(i, j) == 100)
|
||||
else if(map.at<signed char>(i, j) == 100)
|
||||
{
|
||||
// obstacle/empty/unknown -> remove empty
|
||||
// unknown/empty/obstacle -> remove empty
|
||||
if((map.at<char>(i-1, j) == 0 || map.at<char>(i-1, j) == -2) &&
|
||||
map.at<char>(i-2, j) == -1)
|
||||
if((map.at<signed char>(i-1, j) == 0 || map.at<signed char>(i-1, j) == -2) &&
|
||||
map.at<signed char>(i-2, j) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i-1, j) = -1;
|
||||
updatedMap.at<signed char>(i-1, j) = -1;
|
||||
}
|
||||
else if((map.at<char>(i+1, j) == 0 || map.at<char>(i+1, j) == -2) &&
|
||||
map.at<char>(i+2, j) == -1)
|
||||
else if((map.at<signed char>(i+1, j) == 0 || map.at<signed char>(i+1, j) == -2) &&
|
||||
map.at<signed char>(i+2, j) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i+1, j) = -1;
|
||||
updatedMap.at<signed char>(i+1, j) = -1;
|
||||
}
|
||||
if((map.at<char>(i, j-1) == 0 || map.at<char>(i, j-1) == -2) &&
|
||||
map.at<char>(i, j-2) == -1)
|
||||
if((map.at<signed char>(i, j-1) == 0 || map.at<signed char>(i, j-1) == -2) &&
|
||||
map.at<signed char>(i, j-2) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i, j-1) = -1;
|
||||
updatedMap.at<signed char>(i, j-1) = -1;
|
||||
}
|
||||
else if((map.at<char>(i, j+1) == 0 || map.at<char>(i, j+1) == -2) &&
|
||||
map.at<char>(i, j+2) == -1)
|
||||
else if((map.at<signed char>(i, j+1) == 0 || map.at<signed char>(i, j+1) == -2) &&
|
||||
map.at<signed char>(i, j+2) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i, j+1) = -1;
|
||||
updatedMap.at<signed char>(i, j+1) = -1;
|
||||
}
|
||||
|
||||
if(erode)
|
||||
@@ -461,18 +461,18 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
obstacleIndices.push_back(std::make_pair(i, j));
|
||||
}
|
||||
}
|
||||
else if(map.at<char>(i, j) == 0)
|
||||
else if(map.at<signed char>(i, j) == 0)
|
||||
{
|
||||
// obstacle/empty/obstacle -> remove empty
|
||||
if(map.at<char>(i-1, j) == 100 &&
|
||||
map.at<char>(i+1, j) == 100)
|
||||
if(map.at<signed char>(i-1, j) == 100 &&
|
||||
map.at<signed char>(i+1, j) == 100)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = -1;
|
||||
updatedMap.at<signed char>(i, j) = -1;
|
||||
}
|
||||
else if(map.at<char>(i, j-1) == 100 &&
|
||||
map.at<char>(i, j+1) == 100)
|
||||
else if(map.at<signed char>(i, j-1) == 100 &&
|
||||
map.at<signed char>(i, j+1) == 100)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = -1;
|
||||
updatedMap.at<signed char>(i, j) = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -490,16 +490,16 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
{
|
||||
int i = iter->first;
|
||||
int j = iter->second;
|
||||
int touchEmpty = (map.at<char>(i+1, j) == 0?1:0) +
|
||||
(map.at<char>(i-1, j) == 0?1:0) +
|
||||
(map.at<char>(i, j+1) == 0?1:0) +
|
||||
(map.at<char>(i, j-1) == 0?1:0);
|
||||
if(touchEmpty>=3 && map.at<char>(i+1, j) != -1 &&
|
||||
map.at<char>(i-1, j) != -1 &&
|
||||
map.at<char>(i, j+1) != -1 &&
|
||||
map.at<char>(i, j-1) != -1)
|
||||
int touchEmpty = (map.at<signed char>(i+1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i-1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i, j+1) == 0?1:0) +
|
||||
(map.at<signed char>(i, j-1) == 0?1:0);
|
||||
if(touchEmpty>=3 && map.at<signed char>(i+1, j) != -1 &&
|
||||
map.at<signed char>(i-1, j) != -1 &&
|
||||
map.at<signed char>(i, j+1) != -1 &&
|
||||
map.at<signed char>(i, j-1) != -1)
|
||||
{
|
||||
erodedMap.at<char>(i, j) = 0; // empty
|
||||
erodedMap.at<signed char>(i, j) = 0; // empty
|
||||
}
|
||||
}
|
||||
map = erodedMap;
|
||||
@@ -677,7 +677,7 @@ cv::Mat create2DMap(const std::map<int, Transform> & poses,
|
||||
cv::Point2i end((ptr[0]-xMin)/cellSize, (ptr[1]-yMin)/cellSize);
|
||||
if(end!=start)
|
||||
{
|
||||
map.at<char>(end.y, end.x) = 100; // obstacle
|
||||
map.at<signed char>(end.y, end.x) = 100; // obstacle
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -703,7 +703,7 @@ cv::Mat create2DMap(const std::map<int, Transform> & poses,
|
||||
cv::Point2i end((pt[0]-xMin)/cellSize, (pt[1]-yMin)/cellSize);
|
||||
if(end!=start)
|
||||
{
|
||||
if(localScans.size() > 1 || map.at<char>(end.y, end.x) != 0)
|
||||
if(localScans.size() > 1 || map.at<signed char>(end.y, end.x) != 0)
|
||||
{
|
||||
rayTrace(start, end, map, true); // trace free space
|
||||
}
|
||||
@@ -730,12 +730,12 @@ cv::Mat create2DMap(const std::map<int, Transform> & poses,
|
||||
cv::Point2i end((pt[0]-xMin)/cellSize, (pt[1]-yMin)/cellSize);
|
||||
if(end!=start)
|
||||
{
|
||||
if(localScans.size() > 1 || map.at<char>(end.y, end.x) != 0)
|
||||
if(localScans.size() > 1 || map.at<signed char>(end.y, end.x) != 0)
|
||||
{
|
||||
rayTrace(start, end, map, true); // trace free space
|
||||
if(map.at<char>(end.y, end.x) == -1)
|
||||
if(map.at<signed char>(end.y, end.x) == -1)
|
||||
{
|
||||
map.at<char>(end.y, end.x) = 0; // empty
|
||||
map.at<signed char>(end.y, end.x) = 0; // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -879,14 +879,14 @@ void rayTrace(const cv::Point2i & start, const cv::Point2i & end, cv::Mat & grid
|
||||
|
||||
for(int y = lowerbound; y<=(int)upperbound; ++y)
|
||||
{
|
||||
char * v;
|
||||
signed char * v;
|
||||
if(swapped)
|
||||
{
|
||||
v = &grid.at<char>(x, y);
|
||||
v = &grid.at<signed char>(x, y);
|
||||
}
|
||||
else
|
||||
{
|
||||
v = &grid.at<char>(y, x);
|
||||
v = &grid.at<signed char>(y, x);
|
||||
}
|
||||
if(*v == 100 && stopOnObstacle)
|
||||
{
|
||||
@@ -909,7 +909,7 @@ cv::Mat convertMap2Image8U(const cv::Mat & map8S, bool pgmFormat)
|
||||
{
|
||||
for (int j = 0; j < map8S.cols; ++j)
|
||||
{
|
||||
char v = pgmFormat?map8S.at<char>((map8S.rows-1)-i, j):map8S.at<char>(i, j);
|
||||
signed char v = pgmFormat?map8S.at<signed char>((map8S.rows-1)-i, j):map8S.at<signed char>(i, j);
|
||||
unsigned char gray;
|
||||
if(v == 0)
|
||||
{
|
||||
@@ -950,7 +950,7 @@ cv::Mat convertImage8U2Map(const cv::Mat & map8U, bool pgmFormat)
|
||||
{
|
||||
for (int j = 0; j < map8U.cols; ++j)
|
||||
{
|
||||
unsigned char v = pgmFormat?map8U.at<char>((map8U.rows-1)-i, j):map8U.at<char>(i, j);
|
||||
unsigned char v = pgmFormat?map8U.at<signed char>((map8U.rows-1)-i, j):map8U.at<signed char>(i, j);
|
||||
char occupancy;
|
||||
if(pgmFormat)
|
||||
{
|
||||
@@ -987,7 +987,7 @@ cv::Mat convertImage8U2Map(const cv::Mat & map8U, bool pgmFormat)
|
||||
}
|
||||
}
|
||||
|
||||
map8S.at<char>(i, j) = occupancy;
|
||||
map8S.at<signed char>(i, j) = occupancy;
|
||||
}
|
||||
}
|
||||
return map8S;
|
||||
@@ -1001,20 +1001,20 @@ cv::Mat erodeMap(const cv::Mat & map)
|
||||
{
|
||||
for(int j=0; j<map.cols; ++j)
|
||||
{
|
||||
if(map.at<char>(i, j) == 100)
|
||||
if(map.at<signed char>(i, j) == 100)
|
||||
{
|
||||
// remove obstacles which touch at least 3 empty cells but not unknown cells
|
||||
int touchEmpty = (map.at<char>(i+1, j) == 0?1:0) +
|
||||
(map.at<char>(i-1, j) == 0?1:0) +
|
||||
(map.at<char>(i, j+1) == 0?1:0) +
|
||||
(map.at<char>(i, j-1) == 0?1:0);
|
||||
int touchEmpty = (map.at<signed char>(i+1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i-1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i, j+1) == 0?1:0) +
|
||||
(map.at<signed char>(i, j-1) == 0?1:0);
|
||||
|
||||
if(touchEmpty>=3 && map.at<char>(i+1, j) != -1 &&
|
||||
map.at<char>(i-1, j) != -1 &&
|
||||
map.at<char>(i, j+1) != -1 &&
|
||||
map.at<char>(i, j-1) != -1)
|
||||
if(touchEmpty>=3 && map.at<signed char>(i+1, j) != -1 &&
|
||||
map.at<signed char>(i-1, j) != -1 &&
|
||||
map.at<signed char>(i, j+1) != -1 &&
|
||||
map.at<signed char>(i, j-1) != -1)
|
||||
{
|
||||
erodedMap.at<char>(i, j) = 0; // empty
|
||||
erodedMap.at<signed char>(i, j) = 0; // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7165,14 +7165,14 @@ void DatabaseViewer::sliderIterationsValueChanged(int value)
|
||||
for(int y=0; y<map.rows; ++y)
|
||||
{
|
||||
// check for first
|
||||
if(!firstSet && map.at<char>(y, x) != -1)
|
||||
if(!firstSet && map.at<signed char>(y, x) != -1)
|
||||
{
|
||||
xFirst = x;
|
||||
firstSet = true;
|
||||
}
|
||||
// check for last
|
||||
int opp = map.cols-(x+1);
|
||||
if(!lastSet && map.at<char>(y, opp) != -1)
|
||||
if(!lastSet && map.at<signed char>(y, opp) != -1)
|
||||
{
|
||||
xLast = opp;
|
||||
lastSet = true;
|
||||
@@ -7186,14 +7186,14 @@ void DatabaseViewer::sliderIterationsValueChanged(int value)
|
||||
for(int x=0; x<map.cols; ++x)
|
||||
{
|
||||
// check for first
|
||||
if(!firstSet && map.at<char>(y, x) != -1)
|
||||
if(!firstSet && map.at<signed char>(y, x) != -1)
|
||||
{
|
||||
yFirst = y;
|
||||
firstSet = true;
|
||||
}
|
||||
// check for last
|
||||
int opp = map.rows-(y+1);
|
||||
if(!lastSet && map.at<char>(map.rows-(y+1), x) != -1)
|
||||
if(!lastSet && map.at<signed char>(map.rows-(y+1), x) != -1)
|
||||
{
|
||||
yLast = opp;
|
||||
lastSet = true;
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
public:
|
||||
UVariant();
|
||||
UVariant(const bool & value);
|
||||
UVariant(const char & value);
|
||||
UVariant(const signed char & value);
|
||||
UVariant(const unsigned char & value);
|
||||
UVariant(const short & value);
|
||||
UVariant(const unsigned short & value);
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
UVariant(const double & value);
|
||||
UVariant(const char * value);
|
||||
UVariant(const std::string & value);
|
||||
UVariant(const std::vector<char> & value);
|
||||
UVariant(const std::vector<signed char> & value);
|
||||
UVariant(const std::vector<unsigned char> & value);
|
||||
UVariant(const std::vector<short> & value);
|
||||
UVariant(const std::vector<unsigned short> & value);
|
||||
@@ -96,7 +96,7 @@ public:
|
||||
bool isDoubleArray() const {return type_ == kDoubleArray;}
|
||||
|
||||
bool toBool() const;
|
||||
char toChar(bool * ok = 0) const;
|
||||
signed char toChar(bool * ok = 0) const;
|
||||
unsigned char toUChar(bool * ok = 0) const;
|
||||
short toShort(bool * ok = 0) const;
|
||||
unsigned short toUShort(bool * ok = 0) const;
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
float toFloat(bool * ok = 0) const;
|
||||
double toDouble(bool * ok = 0) const;
|
||||
std::string toStr(bool * ok = 0) const;
|
||||
std::vector<char> toCharArray(bool * ok = 0) const;
|
||||
std::vector<signed char> toCharArray(bool * ok = 0) const;
|
||||
std::vector<unsigned char> toUCharArray(bool * ok = 0) const;
|
||||
std::vector<short> toShortArray(bool * ok = 0) const;
|
||||
std::vector<unsigned short> toUShortArray(bool * ok = 0) const;
|
||||
|
||||
+24
-24
@@ -32,11 +32,11 @@ UVariant::UVariant(const bool & value) :
|
||||
{
|
||||
data_[0] = value?1:0;
|
||||
}
|
||||
UVariant::UVariant(const char & value) :
|
||||
UVariant::UVariant(const signed char & value) :
|
||||
type_(kChar),
|
||||
data_(sizeof(char))
|
||||
data_(sizeof(signed char))
|
||||
{
|
||||
memcpy(data_.data(), &value, sizeof(char));
|
||||
memcpy(data_.data(), &value, sizeof(signed char));
|
||||
}
|
||||
UVariant::UVariant(const unsigned char & value) :
|
||||
type_(kUChar),
|
||||
@@ -93,11 +93,11 @@ UVariant::UVariant(const std::string & value) :
|
||||
{
|
||||
memcpy(data_.data(), value.data(), value.size()+1);
|
||||
}
|
||||
UVariant::UVariant(const std::vector<char> & value) :
|
||||
UVariant::UVariant(const std::vector<signed char> & value) :
|
||||
type_(kCharArray),
|
||||
data_(sizeof(char)*value.size())
|
||||
data_(sizeof(signed char)*value.size())
|
||||
{
|
||||
memcpy(data_.data(), value.data(), sizeof(char)*value.size());
|
||||
memcpy(data_.data(), value.data(), sizeof(signed char)*value.size());
|
||||
}
|
||||
UVariant::UVariant(const std::vector<unsigned char> & value) :
|
||||
type_(kUCharArray),
|
||||
@@ -155,16 +155,16 @@ bool UVariant::toBool() const
|
||||
return false;
|
||||
}
|
||||
|
||||
char UVariant::toChar(bool * ok) const
|
||||
signed char UVariant::toChar(bool * ok) const
|
||||
{
|
||||
if(ok)
|
||||
{
|
||||
*ok = false;
|
||||
}
|
||||
char v = 0;
|
||||
signed char v = 0;
|
||||
if(type_ == kChar)
|
||||
{
|
||||
memcpy(&v, data_.data(), sizeof(char));
|
||||
memcpy(&v, data_.data(), sizeof(signed char));
|
||||
if(ok)
|
||||
{
|
||||
*ok = true;
|
||||
@@ -173,9 +173,9 @@ char UVariant::toChar(bool * ok) const
|
||||
else if(type_ == kUChar)
|
||||
{
|
||||
unsigned char tmp = toUChar();
|
||||
if(tmp <= std::numeric_limits<char>::max())
|
||||
if(tmp <= std::numeric_limits<signed char>::max())
|
||||
{
|
||||
v = (char)tmp;
|
||||
v = (signed char)tmp;
|
||||
if(ok)
|
||||
{
|
||||
*ok = true;
|
||||
@@ -185,9 +185,9 @@ char UVariant::toChar(bool * ok) const
|
||||
else if(type_ == kShort)
|
||||
{
|
||||
short tmp = toShort();
|
||||
if(tmp >= std::numeric_limits<char>::min() && tmp <= std::numeric_limits<char>::max())
|
||||
if(tmp >= std::numeric_limits<signed char>::min() && tmp <= std::numeric_limits<signed char>::max())
|
||||
{
|
||||
v = (char)tmp;
|
||||
v = (signed char)tmp;
|
||||
if(ok)
|
||||
{
|
||||
*ok = true;
|
||||
@@ -197,9 +197,9 @@ char UVariant::toChar(bool * ok) const
|
||||
else if(type_ == kUShort)
|
||||
{
|
||||
unsigned short tmp = toUShort();
|
||||
if(tmp <= std::numeric_limits<char>::max())
|
||||
if(tmp <= std::numeric_limits<signed char>::max())
|
||||
{
|
||||
v = (char)tmp;
|
||||
v = (signed char)tmp;
|
||||
if(ok)
|
||||
{
|
||||
*ok = true;
|
||||
@@ -209,9 +209,9 @@ char UVariant::toChar(bool * ok) const
|
||||
else if(type_ == kInt)
|
||||
{
|
||||
int tmp = toInt();
|
||||
if(tmp >= std::numeric_limits<char>::min() && tmp <= std::numeric_limits<char>::max())
|
||||
if(tmp >= std::numeric_limits<signed char>::min() && tmp <= std::numeric_limits<signed char>::max())
|
||||
{
|
||||
v = (char)tmp;
|
||||
v = (signed char)tmp;
|
||||
if(ok)
|
||||
{
|
||||
*ok = true;
|
||||
@@ -221,9 +221,9 @@ char UVariant::toChar(bool * ok) const
|
||||
else if(type_ == kUInt)
|
||||
{
|
||||
unsigned int tmp = toUInt();
|
||||
if(tmp <= (unsigned int)std::numeric_limits<char>::max())
|
||||
if(tmp <= (unsigned int)std::numeric_limits<signed char>::max())
|
||||
{
|
||||
v = (char)tmp;
|
||||
v = (signed char)tmp;
|
||||
if(ok)
|
||||
{
|
||||
*ok = true;
|
||||
@@ -395,7 +395,7 @@ unsigned short UVariant::toUShort(bool * ok) const
|
||||
}
|
||||
else if(type_ == kChar)
|
||||
{
|
||||
char tmp = toChar();
|
||||
signed char tmp = toChar();
|
||||
if(tmp >= 0)
|
||||
{
|
||||
v = (unsigned short)tmp;
|
||||
@@ -529,7 +529,7 @@ unsigned int UVariant::toUInt(bool * ok) const
|
||||
}
|
||||
else if(type_ == kChar)
|
||||
{
|
||||
char tmp = toChar();
|
||||
signed char tmp = toChar();
|
||||
if(tmp >= 0)
|
||||
{
|
||||
v = (unsigned int)tmp;
|
||||
@@ -690,14 +690,14 @@ std::string UVariant::toStr(bool * ok) const
|
||||
return v;
|
||||
}
|
||||
|
||||
std::vector<char> UVariant::toCharArray(bool * ok) const
|
||||
std::vector<signed char> UVariant::toCharArray(bool * ok) const
|
||||
{
|
||||
if(ok)
|
||||
{
|
||||
*ok = false;
|
||||
}
|
||||
|
||||
std::vector<char> v;
|
||||
std::vector<signed char> v;
|
||||
if(type_ == kCharArray)
|
||||
{
|
||||
if(ok)
|
||||
@@ -706,7 +706,7 @@ std::vector<char> UVariant::toCharArray(bool * ok) const
|
||||
}
|
||||
if(data_.size())
|
||||
{
|
||||
v.resize(data_.size() / sizeof(char));
|
||||
v.resize(data_.size() / sizeof(signed char));
|
||||
memcpy(v.data(), data_.data(), data_.size());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user