Skip to content

Commit 61e5ec2

Browse files
Apply clang-format
1 parent 32085b5 commit 61e5ec2

2 files changed

Lines changed: 87 additions & 84 deletions

File tree

cpp/src/gandiva/gdv_function_stubs_test.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,8 @@ TEST(TestGdvFnStubs, TestCastVARCHARFromDouble) {
490490
EXPECT_FALSE(ctx.has_error());
491491

492492
// test exponential notation with large negative exponent (24 chars)
493-
out_str = gdv_fn_castVARCHAR_float64_int64(ctx_ptr, -1.2345678901234567e-100, 100, &out_len);
493+
out_str =
494+
gdv_fn_castVARCHAR_float64_int64(ctx_ptr, -1.2345678901234567e-100, 100, &out_len);
494495
EXPECT_EQ(std::string(out_str, out_len), "-1.2345678901234567E-100");
495496
EXPECT_FALSE(ctx.has_error());
496497
}

cpp/src/gandiva/gdv_string_function_stubs.cc

Lines changed: 85 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -88,106 +88,108 @@ const char* gdv_fn_regexp_extract_utf8_utf8_int32(int64_t ptr, int64_t holder_pt
8888

8989
// Helper: arena allocation + null check
9090
#define GDV_FN_CAST_VARLEN_ALLOC(SIZE) \
91-
char* ret = reinterpret_cast<char*>( \
92-
gdv_fn_context_arena_malloc(context, SIZE)); \
93-
if (ret == nullptr) { \
94-
gdv_fn_context_set_error_msg(context, "Could not allocate memory"); \
95-
*out_len = 0; \
96-
return ""; \
97-
}
91+
char* ret = reinterpret_cast<char*>(gdv_fn_context_arena_malloc(context, SIZE)); \
92+
if (ret == nullptr) { \
93+
gdv_fn_context_set_error_msg(context, "Could not allocate memory"); \
94+
*out_len = 0; \
95+
return ""; \
96+
}
9897

9998
// Helper: function signature + len validation
100-
#define GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
101-
GANDIVA_EXPORT \
102-
const char* gdv_fn_cast##CAST_NAME##_##IN_TYPE##_int64( \
103-
int64_t context, gdv_##IN_TYPE value, int64_t len, int32_t * out_len) { \
104-
if (len < 0) { \
105-
gdv_fn_context_set_error_msg(context, "Buffer length cannot be negative"); \
106-
*out_len = 0; \
107-
return ""; \
108-
} \
109-
if (len == 0) { \
110-
*out_len = 0; \
111-
return ""; \
99+
#define GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
100+
GANDIVA_EXPORT \
101+
const char* gdv_fn_cast##CAST_NAME##_##IN_TYPE##_int64( \
102+
int64_t context, gdv_##IN_TYPE value, int64_t len, int32_t * out_len) { \
103+
if (len < 0) { \
104+
gdv_fn_context_set_error_msg(context, "Buffer length cannot be negative"); \
105+
*out_len = 0; \
106+
return ""; \
107+
} \
108+
if (len == 0) { \
109+
*out_len = 0; \
110+
return ""; \
112111
}
113112

114113
// Macro for integer types (int32/int64). Uses optimized digit-pair conversion.
115114
// Max string: 11 chars for int32 ("-2147483648"), 20 chars for int64.
116-
#define GDV_FN_CAST_VARLEN_TYPE_FROM_INTEGER(IN_TYPE, CAST_NAME, ARROW_TYPE) \
117-
GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
118-
constexpr int32_t max_int_str_len = std::numeric_limits<gdv_##IN_TYPE>::digits10 + 2; \
119-
char stack_buffer[max_int_str_len]; \
120-
char* cursor = stack_buffer + max_int_str_len; \
121-
/* Convert using optimized digit-pair method */ \
122-
auto abs_value = value < 0 ? static_cast<std::make_unsigned_t<gdv_##IN_TYPE>>( \
123-
~static_cast<std::make_unsigned_t<gdv_##IN_TYPE>>(value) + 1) \
124-
: static_cast<std::make_unsigned_t<gdv_##IN_TYPE>>(value); \
125-
const char* digit_pairs = arrow::internal::detail::digit_pairs; \
126-
while (abs_value >= 100) { \
127-
auto idx = (abs_value % 100) * 2; \
128-
abs_value /= 100; \
129-
*--cursor = digit_pairs[idx + 1]; \
130-
*--cursor = digit_pairs[idx]; \
131-
} \
132-
if (abs_value >= 10) { \
133-
auto idx = abs_value * 2; \
134-
*--cursor = digit_pairs[idx + 1]; \
135-
*--cursor = digit_pairs[idx]; \
136-
} else { \
137-
*--cursor = '0' + static_cast<char>(abs_value); \
138-
} \
139-
if (value < 0) { \
140-
*--cursor = '-'; \
141-
} \
142-
int32_t str_len = static_cast<int32_t>(stack_buffer + max_int_str_len - cursor); \
143-
*out_len = static_cast<int32_t>(len < str_len ? len : str_len); \
144-
GDV_FN_CAST_VARLEN_ALLOC(*out_len) \
145-
memcpy(ret, cursor, *out_len); \
146-
return ret; \
115+
#define GDV_FN_CAST_VARLEN_TYPE_FROM_INTEGER(IN_TYPE, CAST_NAME, ARROW_TYPE) \
116+
GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
117+
constexpr int32_t max_int_str_len = std::numeric_limits<gdv_##IN_TYPE>::digits10 + 2; \
118+
char stack_buffer[max_int_str_len]; \
119+
char* cursor = stack_buffer + max_int_str_len; \
120+
/* Convert using optimized digit-pair method */ \
121+
auto abs_value = \
122+
value < 0 ? static_cast<std::make_unsigned_t<gdv_##IN_TYPE>>( \
123+
~static_cast<std::make_unsigned_t<gdv_##IN_TYPE>>(value) + 1) \
124+
: static_cast<std::make_unsigned_t<gdv_##IN_TYPE>>(value); \
125+
const char* digit_pairs = arrow::internal::detail::digit_pairs; \
126+
while (abs_value >= 100) { \
127+
auto idx = (abs_value % 100) * 2; \
128+
abs_value /= 100; \
129+
*--cursor = digit_pairs[idx + 1]; \
130+
*--cursor = digit_pairs[idx]; \
131+
} \
132+
if (abs_value >= 10) { \
133+
auto idx = abs_value * 2; \
134+
*--cursor = digit_pairs[idx + 1]; \
135+
*--cursor = digit_pairs[idx]; \
136+
} else { \
137+
*--cursor = '0' + static_cast<char>(abs_value); \
138+
} \
139+
if (value < 0) { \
140+
*--cursor = '-'; \
141+
} \
142+
int32_t str_len = static_cast<int32_t>(stack_buffer + max_int_str_len - cursor); \
143+
*out_len = static_cast<int32_t>(len < str_len ? len : str_len); \
144+
GDV_FN_CAST_VARLEN_ALLOC(*out_len) \
145+
memcpy(ret, cursor, *out_len); \
146+
return ret; \
147147
}
148148

149149
// Helper: invoke formatter callback, copy result to ret, handle errors
150-
#define GDV_FN_CAST_VARLEN_SUFFIX \
151-
arrow::Status status = formatter(value, [&](std::string_view v) { \
152-
int64_t size = static_cast<int64_t>(v.size()); \
153-
*out_len = static_cast<int32_t>(len < size ? len : size); \
154-
memcpy(ret, v.data(), *out_len); \
155-
return arrow::Status::OK(); \
156-
}); \
157-
if (!status.ok()) { \
158-
std::string err = "Could not cast " + std::to_string(value) + " to string"; \
159-
gdv_fn_context_set_error_msg(context, err.c_str()); \
160-
*out_len = 0; \
161-
return ""; \
162-
} \
163-
return ret; \
150+
#define GDV_FN_CAST_VARLEN_SUFFIX \
151+
arrow::Status status = formatter(value, [&](std::string_view v) { \
152+
int64_t size = static_cast<int64_t>(v.size()); \
153+
*out_len = static_cast<int32_t>(len < size ? len : size); \
154+
memcpy(ret, v.data(), *out_len); \
155+
return arrow::Status::OK(); \
156+
}); \
157+
if (!status.ok()) { \
158+
std::string err = "Could not cast " + std::to_string(value) + " to string"; \
159+
gdv_fn_context_set_error_msg(context, err.c_str()); \
160+
*out_len = 0; \
161+
return ""; \
162+
} \
163+
return ret; \
164164
}
165165

166166
// Macro for date types (date64). Output is always "YYYY-MM-DD" = 10 chars max.
167-
#define GDV_FN_CAST_VARLEN_TYPE_FROM_TYPE(IN_TYPE, CAST_NAME, ARROW_TYPE) \
168-
GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
169-
constexpr int32_t max_date_str_len = 10; \
170-
int32_t alloc_len = static_cast<int32_t>(len < max_date_str_len ? len : max_date_str_len); \
171-
GDV_FN_CAST_VARLEN_ALLOC(alloc_len) \
172-
arrow::internal::StringFormatter<arrow::ARROW_TYPE> formatter; \
173-
GDV_FN_CAST_VARLEN_SUFFIX
167+
#define GDV_FN_CAST_VARLEN_TYPE_FROM_TYPE(IN_TYPE, CAST_NAME, ARROW_TYPE) \
168+
GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
169+
constexpr int32_t max_date_str_len = 10; \
170+
int32_t alloc_len = \
171+
static_cast<int32_t>(len < max_date_str_len ? len : max_date_str_len); \
172+
GDV_FN_CAST_VARLEN_ALLOC(alloc_len) \
173+
arrow::internal::StringFormatter<arrow::ARROW_TYPE> formatter; \
174+
GDV_FN_CAST_VARLEN_SUFFIX
174175

175176
// Macro for float types (float32/float64). Uses Java-compatible formatting.
176177
// Max string: "-1.2345678901234567E-308" = 24 chars.
177-
#define GDV_FN_CAST_VARLEN_TYPE_FROM_REAL(IN_TYPE, CAST_NAME, ARROW_TYPE) \
178-
GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
179-
constexpr int32_t max_real_str_len = 24; \
180-
int32_t alloc_len = static_cast<int32_t>(len < max_real_str_len ? len : max_real_str_len); \
181-
GDV_FN_CAST_VARLEN_ALLOC(alloc_len) \
182-
gandiva::GdvStringFormatter<arrow::ARROW_TYPE> formatter; \
183-
GDV_FN_CAST_VARLEN_SUFFIX
178+
#define GDV_FN_CAST_VARLEN_TYPE_FROM_REAL(IN_TYPE, CAST_NAME, ARROW_TYPE) \
179+
GDV_FN_CAST_VARLEN_PREFIX(IN_TYPE, CAST_NAME) \
180+
constexpr int32_t max_real_str_len = 24; \
181+
int32_t alloc_len = \
182+
static_cast<int32_t>(len < max_real_str_len ? len : max_real_str_len); \
183+
GDV_FN_CAST_VARLEN_ALLOC(alloc_len) \
184+
gandiva::GdvStringFormatter<arrow::ARROW_TYPE> formatter; \
185+
GDV_FN_CAST_VARLEN_SUFFIX
184186

185187
// Use optimized integer macro for int32/int64, generic macro for date64
186-
#define CAST_VARLEN_TYPE_FROM_NUMERIC(VARLEN_TYPE) \
187-
GDV_FN_CAST_VARLEN_TYPE_FROM_INTEGER(int32, VARLEN_TYPE, Int32Type) \
188-
GDV_FN_CAST_VARLEN_TYPE_FROM_INTEGER(int64, VARLEN_TYPE, Int64Type) \
189-
GDV_FN_CAST_VARLEN_TYPE_FROM_TYPE(date64, VARLEN_TYPE, Date64Type) \
190-
GDV_FN_CAST_VARLEN_TYPE_FROM_REAL(float32, VARLEN_TYPE, FloatType) \
188+
#define CAST_VARLEN_TYPE_FROM_NUMERIC(VARLEN_TYPE) \
189+
GDV_FN_CAST_VARLEN_TYPE_FROM_INTEGER(int32, VARLEN_TYPE, Int32Type) \
190+
GDV_FN_CAST_VARLEN_TYPE_FROM_INTEGER(int64, VARLEN_TYPE, Int64Type) \
191+
GDV_FN_CAST_VARLEN_TYPE_FROM_TYPE(date64, VARLEN_TYPE, Date64Type) \
192+
GDV_FN_CAST_VARLEN_TYPE_FROM_REAL(float32, VARLEN_TYPE, FloatType) \
191193
GDV_FN_CAST_VARLEN_TYPE_FROM_REAL(float64, VARLEN_TYPE, DoubleType)
192194

193195
CAST_VARLEN_TYPE_FROM_NUMERIC(VARCHAR)

0 commit comments

Comments
 (0)