mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-24 17:30:44 +02:00
Use 64 bit integers (if available) when int is not big enough
This commit is contained in:
@@ -92,6 +92,12 @@ public:
|
|||||||
/// An integer value is read
|
/// An integer value is read
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(POCO_HAVE_INT64)
|
||||||
|
virtual void value(Int64 v);
|
||||||
|
/// A 64-bit integer value is read
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
virtual void value(const std::string& s);
|
virtual void value(const std::string& s);
|
||||||
/// A string value is read.
|
/// A string value is read.
|
||||||
|
|
||||||
@@ -135,6 +141,13 @@ inline void DefaultHandler::value(int v)
|
|||||||
setValue(v);
|
setValue(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(POCO_HAVE_INT64)
|
||||||
|
inline void DefaultHandler::value(Int64 v)
|
||||||
|
{
|
||||||
|
setValue(v);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
inline void DefaultHandler::value(const std::string& s)
|
inline void DefaultHandler::value(const std::string& s)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
// FOR ANY DAMAGES OR OTHER LIABILITY, W#if defined(POCO_HAVE_INT64)HETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
//
|
//
|
||||||
@@ -80,6 +80,12 @@ public:
|
|||||||
/// An integer value is read
|
/// An integer value is read
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(POCO_HAVE_INT64)
|
||||||
|
virtual void value(Int64 v) = 0;
|
||||||
|
/// A 64-bit integer value is read
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
virtual void value(const std::string& value) = 0;
|
virtual void value(const std::string& value) = 0;
|
||||||
/// A string value is read.
|
/// A string value is read.
|
||||||
|
|
||||||
|
|||||||
@@ -565,9 +565,22 @@ void Parser::readValue(const Token* token)
|
|||||||
{
|
{
|
||||||
case Token::INTEGER_LITERAL_TOKEN:
|
case Token::INTEGER_LITERAL_TOKEN:
|
||||||
if ( _handler != NULL )
|
if ( _handler != NULL )
|
||||||
|
{
|
||||||
|
int value = token->asInteger();
|
||||||
|
#if defined(POCO_HAVE_INT64)
|
||||||
|
if ( value == std::numeric_limits<int>::max()
|
||||||
|
|| value == std::numeric_limits<int>::min() )
|
||||||
|
{
|
||||||
|
_handler->value(NumberParser::parse64(token->asString()));
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
_handler->value(token->asInteger());
|
_handler->value(token->asInteger());
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
_handle->value(value);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Token::KEYWORD_TOKEN:
|
case Token::KEYWORD_TOKEN:
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user