diff options
| author | Paul Buetow <paul@buetow.org> | 2024-02-21 00:16:48 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-02-21 00:16:48 +0200 |
| commit | 345afe0c39a3dcee33fd733a00432c055eeb2b55 (patch) | |
| tree | c773df882d62825294b902242932984a0dda5705 /internal/generated | |
| parent | 8d6c94f8681aea43620e2b4eebb6c7b46e2926dc (diff) | |
also generate String methods for Go structs
Diffstat (limited to 'internal/generated')
| -rw-r--r-- | internal/generated/nqc.raku | 18 | ||||
| -rw-r--r-- | internal/generated/types/types.go | 26 |
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) +} + + |
