[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[COMMITTED] poke: do not show getters/setters/pretty-printers in .info t
From: |
Jose E. Marchesi |
Subject: |
[COMMITTED] poke: do not show getters/setters/pretty-printers in .info type |
Date: |
Sat, 28 Oct 2023 06:21:31 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
2023-10-27 Jose E. Marchesi <jemarch@gnu.org>
* poke/pk-info.pk (pk_info_type): Do not list computed field
setters and getters nor pretty printers as methods.
---
ChangeLog | 5 +++++
poke/pk-info.pk | 23 +++++++++++++++++++++--
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e2295797..0b4deadd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2023-10-27 Jose E. Marchesi <jemarch@gnu.org>
+
+ * poke/pk-info.pk (pk_info_type): Do not list computed field
+ setters and getters nor pretty printers as methods.
+
2023-10-23 Jose E. Marchesi <jemarch@gnu.org>
* pickles/gcov.pk: GCOV_Length now stores length in number of
diff --git a/poke/pk-info.pk b/poke/pk-info.pk
index 125be88e..3322dd45 100644
--- a/poke/pk-info.pk
+++ b/poke/pk-info.pk
@@ -100,6 +100,8 @@ fun pk_info_type = (Pk_Type typ) void:
/* Some kind of types need to print additional info. */
if (typ.code == PK_TYPE_STRUCT)
{
+ var computed_field_names = string[]();
+
if (typ.nfields > 0)
{
print "Fields:\n";
@@ -142,6 +144,7 @@ fun pk_info_type = (Pk_Type typ) void:
table.row;
table.column (typ.fnames[i]);
table.column (typ.ftypes[i]);
+ apush (computed_field_names, typ.fnames[i]);
}
table.print_table;
}
@@ -149,19 +152,35 @@ fun pk_info_type = (Pk_Type typ) void:
if (typ.nmethods > 0)
{
- print "Methods:\n";
var table = Pk_Table { num_columns = 2, indent = 2, max_column_size = 80
};
+ var nmethods_to_print = 0;
table.row ("table-header");
table.column ("Name");
table.column ("Type");
for (var i = 0; i < typ.nmethods; ++i)
{
+ /* Do not include getters and setters of computed fields. */
+ var mname = typ.mnames[i];
+ if (mname'length > 4
+ && (mname[0:4] == "get_" || mname[0:4] == "set_")
+ && mname[4:] in computed_field_names)
+ continue;
+ /* Ditto for pretty-printers. */
+ if (mname == "_print")
+ continue;
+
table.row;
table.column (typ.mnames[i]);
table.column (typ.mtypes[i]);
+ nmethods_to_print++;
}
- table.print_table;
+
+ if (nmethods_to_print > 0)
+ {
+ print "Methods:\n";
+ table.print_table;
+ }
}
}
}
--
2.30.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [COMMITTED] poke: do not show getters/setters/pretty-printers in .info type,
Jose E. Marchesi <=