123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- //go:build windows || appengine || tinygo
- // +build windows appengine tinygo
- package msgp
- import (
- "io/ioutil"
- "os"
- )
- // MarshalSizer is the combination
- // of the Marshaler and Sizer
- // interfaces.
- type MarshalSizer interface {
- Marshaler
- Sizer
- }
- func ReadFile(dst Unmarshaler, file *os.File) error {
- if u, ok := dst.(Decodable); ok {
- return u.DecodeMsg(NewReader(file))
- }
- data, err := ioutil.ReadAll(file)
- if err != nil {
- return err
- }
- _, err = dst.UnmarshalMsg(data)
- return err
- }
- func WriteFile(src MarshalSizer, file *os.File) error {
- if e, ok := src.(Encodable); ok {
- w := NewWriter(file)
- err := e.EncodeMsg(w)
- if err == nil {
- err = w.Flush()
- }
- return err
- }
- raw, err := src.MarshalMsg(nil)
- if err != nil {
- return err
- }
- _, err = file.Write(raw)
- return err
- }
|