summaryrefslogtreecommitdiff
path: root/internal/generated
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-02-21 00:16:48 +0200
committerPaul Buetow <paul@buetow.org>2024-02-21 00:16:48 +0200
commit345afe0c39a3dcee33fd733a00432c055eeb2b55 (patch)
treec773df882d62825294b902242932984a0dda5705 /internal/generated
parent8d6c94f8681aea43620e2b4eebb6c7b46e2926dc (diff)
also generate String methods for Go structs
Diffstat (limited to 'internal/generated')
-rw-r--r--internal/generated/nqc.raku18
-rw-r--r--internal/generated/types/types.go26
2 files changed, 37 insertions, 7 deletions
diff --git a/internal/generated/nqc.raku b/internal/generated/nqc.raku
index 040617f..f358e2a 100644
--- a/internal/generated/nqc.raku
+++ b/internal/generated/nqc.raku
@@ -34,7 +34,23 @@ class NQCToGoActions {
method constant($/) { make 'const ' ~ $<identifier> ~ ' = ' ~ $<number> ~ "\n" }
method struct($/) {
- make 'type ' ~ $<identifier>.made ~ " struct \{\n\t" ~ $<member>.map(*.made).join("\n\t") ~ "\n\}"
+ make 'type ' ~ $<identifier>.made ~ " struct \{\n\t"
+ ~ $<member>.map(*.made).join("\n\t")
+ ~ "\n\}\n\n"
+ ~ self!struct-go-string-method($/);
+ }
+
+ # Generate String() method on the Go struct, for pretty printing.
+ method !struct-go-string-method($/) returns Str {
+ my Str $self-ref = $<identifier>.lc.substr(0,1);
+ my Str @format = $<member>.map({ $_.<identifier>.made ~ ':%v' });
+ my Str @args = $<member>.map({ "$self-ref." ~ $_.<identifier>.made });
+
+ return qq:to/END/;
+ func ({$self-ref} {$<identifier>}) String() string \{
+ \treturn fmt.Sprintf("{@format.join(' ')}", {@args.join(', ')})
+ \}
+ END
}
method member($/) { make $<identifier>.made ~ ' ' ~ ($<arraysize> // '') ~ $<type>.made }
diff --git a/internal/generated/types/types.go b/internal/generated/types/types.go
index 0e3a907..2cee711 100644
--- a/internal/generated/types/types.go
+++ b/internal/generated/types/types.go
@@ -2,17 +2,11 @@
package types
const MAX_FILENAME_LENGTH = 256
-const MAX_PROGNAME_LENGTH = 16
const OPENAT_ENTER_OP_ID = 1
-const OPENAT_EXIT_OP_ID = 2
const OPEN_ENTER_OP_ID = 3
-const OPEN_EXIT_OP_ID = 4
const CLOSE_ENTER_OP_ID = 5
-const CLOSE_EXIT_OP_ID = 6
const WRITE_ENTER_OP_ID = 7
-const WRITE_EXIT_OP_ID = 8
const WRITEV_ENTER_OP_ID = 9
-const WRITEV_EXIT_OP_ID = 10
type NullEvent struct {
OpId uint32
@@ -20,6 +14,11 @@ type NullEvent struct {
Time uint64
}
+func (n null_event) String() string {
+ return fmt.Sprintf("OpId:%v PidTgid:%v Time:%v", n.OpId, n.PidTgid, n.Time)
+}
+
+
type FdEvent struct {
OpId uint32
PidTgid uint32
@@ -27,6 +26,11 @@ type FdEvent struct {
Fd int32
}
+func (f fd_event) String() string {
+ return fmt.Sprintf("OpId:%v PidTgid:%v Time:%v Fd:%v", f.OpId, f.PidTgid, f.Time, f.Fd)
+}
+
+
type OpenatEnterEvent struct {
OpId uint32
PidTgid uint32
@@ -35,7 +39,17 @@ type OpenatEnterEvent struct {
Comm [MAX_PROGNAME_LENGTH]byte
}
+func (o openat_enter_event) String() string {
+ return fmt.Sprintf("OpId:%v PidTgid:%v Time:%v Filename:%v Comm:%v", o.OpId, o.PidTgid, o.Time, o.Filename, o.Comm)
+}
+
+
type Flags struct {
UidFilter uint32
}
+func (f flags) String() string {
+ return fmt.Sprintf("UidFilter:%v", f.UidFilter)
+}
+
+