From 48be04793af0dc1ef534cd5bd8660430345b7e30 Mon Sep 17 00:00:00 2001 From: Lilis Iskandar Date: Wed, 1 Aug 2018 02:44:04 +0000 Subject: [PATCH] Add examples/rwops/memory.go example Signed-off-by: Lilis Iskandar --- examples/rwops/memory.go | 81 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 examples/rwops/memory.go diff --git a/examples/rwops/memory.go b/examples/rwops/memory.go new file mode 100644 index 0000000..42f3437 --- /dev/null +++ b/examples/rwops/memory.go @@ -0,0 +1,81 @@ +package main + +import ( + "fmt" + "io" + "log" + + "github.com/veandco/go-sdl2/sdl" +) + +var rwops *sdl.RWops +var writer io.Writer +var reader io.Reader +var seeker io.Seeker +var closer io.Closer +var data = []byte{0, 10, 20, 30} +var err error + +func size() { + if n, err := rwops.Size(); err != nil { + log.Fatal(err) + } else { + fmt.Println("size:", n) + } +} + +func read() { + buf := make([]byte, 4) + reader.Read(buf[:]) + fmt.Println("read:", buf[0], buf[1], buf[2], buf[3]) +} + +func tell() { + if n, err := rwops.Tell(); err != nil { + log.Fatal(err) + } else { + fmt.Println("tell:", n) + } +} + +func seek() { + // Seek + if n, err := seeker.Seek(0, io.SeekStart); err != nil { + log.Fatal(err) + } else { + fmt.Println("seek: offset is", n) + } +} + +func write() { + if n, err := writer.Write([]byte{40, 50, 60, 70}); err != nil { + log.Fatal(err) + } else { + fmt.Println("write:", n, "bytes") + } +} + +func main() { + rwops, err = sdl.RWFromMem(data) + if err != nil { + log.Println(err) + } + + writer = rwops + reader = rwops + seeker = rwops + closer = rwops + + defer closer.Close() + + size() // Print RWops data size + tell() // Print current data offset + read() // Read data via RWops + tell() // Print current data offset + seek() // Seek to start of the data + write() // Write some data via RWops + tell() // Print current data offset + seek() // Seek to start of the data + tell() // Print current data offset + read() // Read data via RWops again +}