kou commented on code in PR #48522:
URL: https://github.com/apache/arrow/pull/48522#discussion_r2654937545
##########
c_glib/arrow-glib/compute.cpp:
##########
@@ -7091,6 +7094,205 @@ garrow_extract_regex_options_new(void)
return GARROW_EXTRACT_REGEX_OPTIONS(options);
}
+enum {
+ PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN = 1,
+ PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT,
+ PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS,
+};
+
+typedef struct _GArrowReplaceSubstringOptionsPrivate
GArrowReplaceSubstringOptionsPrivate;
+struct _GArrowReplaceSubstringOptionsPrivate
+{
+ gchar *pattern;
+ gchar *replacement;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(GArrowReplaceSubstringOptions,
+ garrow_replace_substring_options,
+ GARROW_TYPE_FUNCTION_OPTIONS)
+
+#define GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object)
\
+ static_cast<GArrowReplaceSubstringOptionsPrivate *>(
\
+ garrow_replace_substring_options_get_instance_private(
\
+ GARROW_REPLACE_SUBSTRING_OPTIONS(object)))
+
+static void
+garrow_replace_substring_options_dispose(GObject *object)
+{
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+ if (priv->pattern) {
+ g_free(priv->pattern);
+ priv->pattern = nullptr;
+ }
+ if (priv->replacement) {
+ g_free(priv->replacement);
+ priv->replacement = nullptr;
+ }
+
G_OBJECT_CLASS(garrow_replace_substring_options_parent_class)->dispose(object);
+}
+
+static void
+garrow_replace_substring_options_set_property(GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ auto options =
+
garrow_replace_substring_options_get_raw(GARROW_REPLACE_SUBSTRING_OPTIONS(object));
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN:
+ {
+ const gchar *pattern = g_value_get_string(value);
+ if (priv->pattern) {
+ g_free(priv->pattern);
+ }
+ priv->pattern = g_strdup(pattern);
+ options->pattern = pattern ? pattern : "";
+ }
Review Comment:
Can we simplify this?
```suggestion
options->pattern = g_value_get_string(value);
```
##########
c_glib/arrow-glib/compute.cpp:
##########
@@ -7091,6 +7094,205 @@ garrow_extract_regex_options_new(void)
return GARROW_EXTRACT_REGEX_OPTIONS(options);
}
+enum {
+ PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN = 1,
+ PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT,
+ PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS,
+};
+
+typedef struct _GArrowReplaceSubstringOptionsPrivate
GArrowReplaceSubstringOptionsPrivate;
+struct _GArrowReplaceSubstringOptionsPrivate
+{
+ gchar *pattern;
+ gchar *replacement;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(GArrowReplaceSubstringOptions,
+ garrow_replace_substring_options,
+ GARROW_TYPE_FUNCTION_OPTIONS)
+
+#define GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object)
\
+ static_cast<GArrowReplaceSubstringOptionsPrivate *>(
\
+ garrow_replace_substring_options_get_instance_private(
\
+ GARROW_REPLACE_SUBSTRING_OPTIONS(object)))
+
+static void
+garrow_replace_substring_options_dispose(GObject *object)
+{
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+ if (priv->pattern) {
+ g_free(priv->pattern);
+ priv->pattern = nullptr;
+ }
+ if (priv->replacement) {
+ g_free(priv->replacement);
+ priv->replacement = nullptr;
+ }
+
G_OBJECT_CLASS(garrow_replace_substring_options_parent_class)->dispose(object);
+}
+
+static void
+garrow_replace_substring_options_set_property(GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ auto options =
+
garrow_replace_substring_options_get_raw(GARROW_REPLACE_SUBSTRING_OPTIONS(object));
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN:
+ {
+ const gchar *pattern = g_value_get_string(value);
+ if (priv->pattern) {
+ g_free(priv->pattern);
+ }
+ priv->pattern = g_strdup(pattern);
+ options->pattern = pattern ? pattern : "";
+ }
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT:
+ {
+ const gchar *replacement = g_value_get_string(value);
+ if (priv->replacement) {
+ g_free(priv->replacement);
+ }
+ priv->replacement = g_strdup(replacement);
+ options->replacement = replacement ? replacement : "";
+ }
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS:
+ options->max_replacements = g_value_get_int64(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+garrow_replace_substring_options_get_property(GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ auto options =
+
garrow_replace_substring_options_get_raw(GARROW_REPLACE_SUBSTRING_OPTIONS(object));
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN:
+ g_value_set_string(value, priv->pattern ? priv->pattern :
options->pattern.c_str());
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT:
+ g_value_set_string(value,
+ priv->replacement ? priv->replacement
+ : options->replacement.c_str());
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS:
+ g_value_set_int64(value, options->max_replacements);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+garrow_replace_substring_options_init(GArrowReplaceSubstringOptions *object)
+{
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+ priv->pattern = nullptr;
+ priv->replacement = nullptr;
+ auto arrow_priv = GARROW_FUNCTION_OPTIONS_GET_PRIVATE(object);
+ arrow_priv->options = static_cast<arrow::compute::FunctionOptions *>(
+ new arrow::compute::ReplaceSubstringOptions());
+ // Sync the private strings with the C++ options
+ auto arrow_options =
+
garrow_replace_substring_options_get_raw(GARROW_REPLACE_SUBSTRING_OPTIONS(object));
+ priv->pattern = g_strdup(arrow_options->pattern.c_str());
+ priv->replacement = g_strdup(arrow_options->replacement.c_str());
+}
+
+static void
+garrow_replace_substring_options_class_init(GArrowReplaceSubstringOptionsClass
*klass)
+{
+ auto gobject_class = G_OBJECT_CLASS(klass);
+
+ gobject_class->dispose = garrow_replace_substring_options_dispose;
+ gobject_class->set_property = garrow_replace_substring_options_set_property;
+ gobject_class->get_property = garrow_replace_substring_options_get_property;
+
+ arrow::compute::ReplaceSubstringOptions options;
+
+ GParamSpec *spec;
+ /**
+ * GArrowReplaceSubstringOptions:pattern:
+ *
+ * Pattern to match, literal, or regular expression depending on which
kernel is used.
+ *
+ * Since: 23.0.0
+ */
+ spec = g_param_spec_string(
+ "pattern",
+ "Pattern",
+ "Pattern to match, literal, or regular expression depending on which
kernel is used",
+ options.pattern.c_str(),
+ static_cast<GParamFlags>(G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class,
+ PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN,
+ spec);
+
+ /**
+ * GArrowReplaceSubstringOptions:replacement:
+ *
+ * String to replace the pattern with.
+ *
+ * Since: 23.0.0
+ */
+ spec = g_param_spec_string("replacement",
+ "Replacement",
+ "String to replace the pattern with",
+ options.replacement.c_str(),
+ static_cast<GParamFlags>(G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class,
+ PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT,
+ spec);
+
+ /**
+ * GArrowReplaceSubstringOptions:max_replacements:
+ *
+ * Max number of substrings to replace (-1 means unbounded).
+ *
+ * Since: 23.0.0
+ */
+ spec = g_param_spec_int64("max_replacements",
+ "Max Replacements",
+ "Max number of substrings to replace (-1 means
unbounded)",
+ G_MININT64,
+ G_MAXINT64,
+ options.max_replacements,
+ static_cast<GParamFlags>(G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class,
+
PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS,
+ spec);
+}
+
+/**
+ * garrow_replace_substring_options_new:
+ *
+ * Returns: A newly created #GArrowReplaceSubstringOptions.
+ *
+ * Since: 23.0.0
+ */
+GArrowReplaceSubstringOptions *
+garrow_replace_substring_options_new(void)
+{
+ return GARROW_REPLACE_SUBSTRING_OPTIONS(
+ g_object_new(GARROW_TYPE_REPLACE_SUBSTRING_OPTIONS, NULL));
Review Comment:
```suggestion
g_object_new(GARROW_TYPE_REPLACE_SUBSTRING_OPTIONS, nullptr));
```
##########
c_glib/arrow-glib/compute.cpp:
##########
@@ -7091,6 +7094,205 @@ garrow_extract_regex_options_new(void)
return GARROW_EXTRACT_REGEX_OPTIONS(options);
}
+enum {
+ PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN = 1,
+ PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT,
+ PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS,
+};
+
+typedef struct _GArrowReplaceSubstringOptionsPrivate
GArrowReplaceSubstringOptionsPrivate;
+struct _GArrowReplaceSubstringOptionsPrivate
+{
+ gchar *pattern;
+ gchar *replacement;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(GArrowReplaceSubstringOptions,
+ garrow_replace_substring_options,
+ GARROW_TYPE_FUNCTION_OPTIONS)
+
+#define GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object)
\
+ static_cast<GArrowReplaceSubstringOptionsPrivate *>(
\
+ garrow_replace_substring_options_get_instance_private(
\
+ GARROW_REPLACE_SUBSTRING_OPTIONS(object)))
+
+static void
+garrow_replace_substring_options_dispose(GObject *object)
+{
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+ if (priv->pattern) {
+ g_free(priv->pattern);
+ priv->pattern = nullptr;
+ }
+ if (priv->replacement) {
+ g_free(priv->replacement);
+ priv->replacement = nullptr;
+ }
+
G_OBJECT_CLASS(garrow_replace_substring_options_parent_class)->dispose(object);
+}
+
+static void
+garrow_replace_substring_options_set_property(GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ auto options =
+
garrow_replace_substring_options_get_raw(GARROW_REPLACE_SUBSTRING_OPTIONS(object));
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN:
+ {
+ const gchar *pattern = g_value_get_string(value);
+ if (priv->pattern) {
+ g_free(priv->pattern);
+ }
+ priv->pattern = g_strdup(pattern);
+ options->pattern = pattern ? pattern : "";
+ }
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT:
+ {
+ const gchar *replacement = g_value_get_string(value);
+ if (priv->replacement) {
+ g_free(priv->replacement);
+ }
+ priv->replacement = g_strdup(replacement);
+ options->replacement = replacement ? replacement : "";
+ }
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS:
+ options->max_replacements = g_value_get_int64(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+garrow_replace_substring_options_get_property(GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ auto options =
+
garrow_replace_substring_options_get_raw(GARROW_REPLACE_SUBSTRING_OPTIONS(object));
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN:
+ g_value_set_string(value, priv->pattern ? priv->pattern :
options->pattern.c_str());
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT:
+ g_value_set_string(value,
+ priv->replacement ? priv->replacement
+ : options->replacement.c_str());
+ break;
+ case PROP_REPLACE_SUBSTRING_OPTIONS_MAX_REPLACEMENTS:
+ g_value_set_int64(value, options->max_replacements);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+garrow_replace_substring_options_init(GArrowReplaceSubstringOptions *object)
+{
+ auto priv = GARROW_REPLACE_SUBSTRING_OPTIONS_GET_PRIVATE(object);
+ priv->pattern = nullptr;
+ priv->replacement = nullptr;
+ auto arrow_priv = GARROW_FUNCTION_OPTIONS_GET_PRIVATE(object);
+ arrow_priv->options = static_cast<arrow::compute::FunctionOptions *>(
+ new arrow::compute::ReplaceSubstringOptions());
+ // Sync the private strings with the C++ options
+ auto arrow_options =
+
garrow_replace_substring_options_get_raw(GARROW_REPLACE_SUBSTRING_OPTIONS(object));
+ priv->pattern = g_strdup(arrow_options->pattern.c_str());
+ priv->replacement = g_strdup(arrow_options->replacement.c_str());
+}
+
+static void
+garrow_replace_substring_options_class_init(GArrowReplaceSubstringOptionsClass
*klass)
+{
+ auto gobject_class = G_OBJECT_CLASS(klass);
+
+ gobject_class->dispose = garrow_replace_substring_options_dispose;
+ gobject_class->set_property = garrow_replace_substring_options_set_property;
+ gobject_class->get_property = garrow_replace_substring_options_get_property;
+
+ arrow::compute::ReplaceSubstringOptions options;
+
+ GParamSpec *spec;
+ /**
+ * GArrowReplaceSubstringOptions:pattern:
+ *
+ * Pattern to match, literal, or regular expression depending on which
kernel is used.
+ *
+ * Since: 23.0.0
+ */
+ spec = g_param_spec_string(
+ "pattern",
+ "Pattern",
+ "Pattern to match, literal, or regular expression depending on which
kernel is used",
+ options.pattern.c_str(),
+ static_cast<GParamFlags>(G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class,
+ PROP_REPLACE_SUBSTRING_OPTIONS_PATTERN,
+ spec);
+
+ /**
+ * GArrowReplaceSubstringOptions:replacement:
+ *
+ * String to replace the pattern with.
+ *
+ * Since: 23.0.0
+ */
+ spec = g_param_spec_string("replacement",
+ "Replacement",
+ "String to replace the pattern with",
+ options.replacement.c_str(),
+ static_cast<GParamFlags>(G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class,
+ PROP_REPLACE_SUBSTRING_OPTIONS_REPLACEMENT,
+ spec);
+
+ /**
+ * GArrowReplaceSubstringOptions:max_replacements:
+ *
+ * Max number of substrings to replace (-1 means unbounded).
+ *
+ * Since: 23.0.0
+ */
+ spec = g_param_spec_int64("max_replacements",
+ "Max Replacements",
+ "Max number of substrings to replace (-1 means
unbounded)",
+ G_MININT64,
Review Comment:
How about using `-1` as the minimum value?
##########
c_glib/arrow-glib/compute.cpp:
##########
@@ -7893,3 +8101,25 @@
garrow_extract_regex_options_get_raw(GArrowExtractRegexOptions *options)
return static_cast<arrow::compute::ExtractRegexOptions *>(
garrow_function_options_get_raw(GARROW_FUNCTION_OPTIONS(options)));
}
+
+GArrowReplaceSubstringOptions *
+garrow_replace_substring_options_new_raw(
+ const arrow::compute::ReplaceSubstringOptions *arrow_options)
+{
+ return GARROW_REPLACE_SUBSTRING_OPTIONS(
+ g_object_new(GARROW_TYPE_REPLACE_SUBSTRING_OPTIONS,
+ "pattern",
+ arrow_options->pattern.c_str(),
+ "replacement",
+ arrow_options->replacement.c_str(),
+ "max_replacements",
+ arrow_options->max_replacements,
+ NULL));
Review Comment:
```suggestion
nullptr));
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]