This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch main
in repository ego.
View the commit online.
commit b127ecd942c3a40375d0d4277fd0d4d817c7e168
Author: [email protected] <[email protected]>
AuthorDate: Tue Mar 31 14:42:26 2026 -0600
fix(ego-stats): sync blocklist with ego-gen, add Eina_Value support
Remove 5 entries from stats blocklist that ego-gen now generates
(Eina_Slice setters + Eina_Value message_send). Add Eina_Value
to known structs. Coverage now 91.8% (1179/1284).
---
cmd/ego-stats/main.go | 8 --------
cmd/ego-stats/typemap.go | 8 +++++++-
ego-stats | Bin 2793792 -> 2793600 bytes
3 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/cmd/ego-stats/main.go b/cmd/ego-stats/main.go
index 37caf58..4cde0ee 100644
--- a/cmd/ego-stats/main.go
+++ b/cmd/ego-stats/main.go
@@ -100,23 +100,16 @@ var methodBlocklistAnnotated = []blockedEntry{
{"efl_gfx_buffer_managed_get", ReasonOutParamStruct},
// efl.Gfx.Path
{"efl_gfx_path_bounds_get", ReasonOutParamStruct},
- // efl.Input_Text — struct-by-value param
- {"efl_input_text_input_panel_imdata_set", ReasonStructByValue},
- // efl.Io.Copier — line_delimiter takes Eina_Slice by value (struct parameter)
- {"efl_io_copier_line_delimiter_set", ReasonStructByValue},
// efl.Io — returns/takes Eina_Slice or Eina_Error
{"efl_io_reader_read", ReasonOutParamStruct},
{"efl_io_writer_write", ReasonOutParamStruct},
{"efl_io_queue_slice_get", ReasonOutParamStruct},
- // efl.Io.BufferedStream
- {"efl_io_buffered_stream_line_delimiter_set", ReasonStructByValue},
// efl.Io.Model — callback filter; class also blocklisted
{"efl_io_model_children_filter_set", ReasonCallback},
{"efl_io_model_path_set", ReasonNotInHeader},
// efl.Layout — struct-valued or wrong arg count
{"efl_layout_calc_size_min", ReasonOutParamStruct},
{"efl_layout_calc_parts_extends", ReasonOutParamStruct},
- {"efl_layout_signal_message_send", ReasonStructByValue},
// efl.Net — internal state setters; not in public header
{"efl_net_dialer_address_dial_set", ReasonNotInHeader},
{"efl_net_dialer_connected_set", ReasonNotInHeader},
@@ -133,7 +126,6 @@ var methodBlocklistAnnotated = []blockedEntry{
{"efl_net_socket_fd_family_set", ReasonNotInHeader},
// efl.Net.Socket.Udp — ECORE_CON_API visibility (not EAPI)
{"efl_net_socket_udp_init", ReasonNotInHeader},
- {"efl_net_ip_address_set", ReasonStructByValue},
{"efl_net_ip_address_sockaddr_set", ReasonGlobalFunction},
{"efl_net_ip_address_create", ReasonGlobalFunction},
{"efl_net_ip_address_create_sockaddr", ReasonGlobalFunction},
diff --git a/cmd/ego-stats/typemap.go b/cmd/ego-stats/typemap.go
index ead6885..0cb06c8 100644
--- a/cmd/ego-stats/typemap.go
+++ b/cmd/ego-stats/typemap.go
@@ -61,13 +61,15 @@ func NeedsStringConversion(ctype string) bool {
// IsKnownStruct reports whether a C type is a known struct type that can be
// marshalled field-by-field between Go and C.
+// Eina_Value is included because ego-gen maps it to *efl.Value and generates
+// proper bindings via the .Ptr() indirection — it is not an unknown struct.
func IsKnownStruct(ctype string) bool {
ct := strings.TrimSpace(ctype)
ct = strings.TrimPrefix(ct, "const ")
ct = strings.TrimSpace(ct)
switch ct {
case "Eina_Size2D", "Eina_Position2D", "Eina_Rect", "Eina_Vector2",
- "Eina_Slice", "Eina_Rw_Slice":
+ "Eina_Slice", "Eina_Rw_Slice", "Eina_Value":
return true
}
return false
@@ -114,6 +116,10 @@ func isMultiValueCompatible(ctype string) bool {
if NeedsStringConversion(ctype) {
return true
}
+ // Eina_Value is mapped to *efl.Value by ego-gen and is fully supported.
+ if IsKnownStruct(ctype) {
+ return true
+ }
// Enum typedef: non-pointer, non-struct type mapping to unsafe.Pointer.
if CTypeToGo(ctype) == "unsafe.Pointer" && !isCPointerType(ctype) && !IsStructType(ctype) {
return true
diff --git a/ego-stats b/ego-stats
index c411ba3..2a1bdcd 100755
Binary files a/ego-stats and b/ego-stats differ
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.