126 lines
3.2 KiB
Go
126 lines
3.2 KiB
Go
// +build !nocapnpstrings
|
|
|
|
package capnp
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// String returns the address in hex format.
|
|
func (addr Address) String() string {
|
|
return fmt.Sprintf("%#08x", uint64(addr))
|
|
}
|
|
|
|
// GoString returns the address in hex format.
|
|
func (addr Address) GoString() string {
|
|
return fmt.Sprintf("capnp.Address(%#08x)", uint64(addr))
|
|
}
|
|
|
|
// String returns the size in the format "X bytes".
|
|
func (sz Size) String() string {
|
|
if sz == 1 {
|
|
return "1 byte"
|
|
}
|
|
return fmt.Sprintf("%d bytes", sz)
|
|
}
|
|
|
|
// GoString returns the size as a Go expression.
|
|
func (sz Size) GoString() string {
|
|
return fmt.Sprintf("capnp.Size(%d)", sz)
|
|
}
|
|
|
|
// String returns the offset in the format "+X bytes".
|
|
func (off DataOffset) String() string {
|
|
if off == 1 {
|
|
return "+1 byte"
|
|
}
|
|
return fmt.Sprintf("+%d bytes", off)
|
|
}
|
|
|
|
// GoString returns the offset as a Go expression.
|
|
func (off DataOffset) GoString() string {
|
|
return fmt.Sprintf("capnp.DataOffset(%d)", off)
|
|
}
|
|
|
|
// String returns a short, human readable representation of the object
|
|
// size.
|
|
func (sz ObjectSize) String() string {
|
|
return fmt.Sprintf("{datasz=%d ptrs=%d}", sz.DataSize, sz.PointerCount)
|
|
}
|
|
|
|
// GoString formats the ObjectSize as a keyed struct literal.
|
|
func (sz ObjectSize) GoString() string {
|
|
return fmt.Sprintf("capnp.ObjectSize{DataSize: %d, PointerCount: %d}", sz.DataSize, sz.PointerCount)
|
|
}
|
|
|
|
// String returns the offset in the format "bit X".
|
|
func (bit BitOffset) String() string {
|
|
return fmt.Sprintf("bit %d", bit)
|
|
}
|
|
|
|
// GoString returns the offset as a Go expression.
|
|
func (bit BitOffset) GoString() string {
|
|
return fmt.Sprintf("capnp.BitOffset(%d)", bit)
|
|
}
|
|
|
|
// String returns the ID in the format "capability X".
|
|
func (id CapabilityID) String() string {
|
|
return fmt.Sprintf("capability %d", id)
|
|
}
|
|
|
|
// GoString returns the ID as a Go expression.
|
|
func (id CapabilityID) GoString() string {
|
|
return fmt.Sprintf("capnp.CapabilityID(%d)", id)
|
|
}
|
|
|
|
// GoString formats the pointer as a call to one of the rawPointer
|
|
// construction functions.
|
|
func (p rawPointer) GoString() string {
|
|
if p == 0 {
|
|
return "rawPointer(0)"
|
|
}
|
|
switch p.pointerType() {
|
|
case structPointer:
|
|
return fmt.Sprintf("rawStructPointer(%d, %#v)", p.offset(), p.structSize())
|
|
case listPointer:
|
|
var lt string
|
|
switch p.listType() {
|
|
case voidList:
|
|
lt = "voidList"
|
|
case bit1List:
|
|
lt = "bit1List"
|
|
case byte1List:
|
|
lt = "byte1List"
|
|
case byte2List:
|
|
lt = "byte2List"
|
|
case byte4List:
|
|
lt = "byte4List"
|
|
case byte8List:
|
|
lt = "byte8List"
|
|
case pointerList:
|
|
lt = "pointerList"
|
|
case compositeList:
|
|
lt = "compositeList"
|
|
}
|
|
return fmt.Sprintf("rawListPointer(%d, %s, %d)", p.offset(), lt, p.numListElements())
|
|
case farPointer:
|
|
return fmt.Sprintf("rawFarPointer(%d, %v)", p.farSegment(), p.farAddress())
|
|
case doubleFarPointer:
|
|
return fmt.Sprintf("rawDoubleFarPointer(%d, %v)", p.farSegment(), p.farAddress())
|
|
default:
|
|
// other pointer
|
|
if p.otherPointerType() != 0 {
|
|
return fmt.Sprintf("rawPointer(%#016x)", uint64(p))
|
|
}
|
|
return fmt.Sprintf("rawInterfacePointer(%d)", p.capabilityIndex())
|
|
}
|
|
}
|
|
|
|
func (ssa *singleSegmentArena) String() string {
|
|
return fmt.Sprintf("single-segment arena [len=%d cap=%d]", len(*ssa), cap(*ssa))
|
|
}
|
|
|
|
func (msa *multiSegmentArena) String() string {
|
|
return fmt.Sprintf("multi-segment arena [%d segments]", len(*msa))
|
|
}
|