MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / transformIntegerLiteral

Method transformIntegerLiteral

src/parser/transform/transform_expression.cpp:669–688  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

667}
668
669std::unique_ptr<ParsedExpression> Transformer::transformIntegerLiteral(
670 CypherParser::OC_IntegerLiteralContext& ctx, bool negative) {
671 auto text = ctx.DecimalInteger()->getText();
672 if (negative) {
673 text = '-' + text;
674 }
675 string_t literal{text.c_str(), text.length()};
676 int64_t result = 0;
677 if (function::CastString::tryCast(literal, result)) {
678 return std::make_unique<ParsedLiteralExpression>(Value(result), ctx.getText());
679 }
680 int128_t result128 = 0;
681 if (function::trySimpleIntegerCast(reinterpret_cast<const char*>(literal.getData()),
682 literal.len, result128)) {
683 return std::make_unique<ParsedLiteralExpression>(Value(result128), ctx.getText());
684 }
685 uint128_t resultu128 = 0;
686 function::CastString::operation(literal, resultu128);
687 return std::make_unique<ParsedLiteralExpression>(Value(resultu128), ctx.getText());
688}
689
690std::unique_ptr<ParsedExpression> Transformer::transformDoubleLiteral(
691 CypherParser::OC_DoubleLiteralContext& ctx, bool negative) {

Callers

nothing calls this directly

Calls 6

tryCastFunction · 0.85
trySimpleIntegerCastFunction · 0.85
operationFunction · 0.85
lengthMethod · 0.80
ValueClass · 0.50
getDataMethod · 0.45

Tested by

no test coverage detected