tbotd/vendor/src/github.com/Sereal/Sereal/Go/sereal/perl.go

50 lines
1.2 KiB
Go

package sereal
// types for emulating perl data structure
// PerlObject represents a perl blessed reference
type PerlObject struct {
Class string
Reference interface{}
}
// PerlAlias represents an aliased value
type PerlAlias struct {
Alias interface{}
}
// PerlWeakRef represents a weak reference
type PerlWeakRef struct {
Reference interface{}
}
// PerlUndef represents perl's "undef" value
type PerlUndef struct {
canonical bool
}
// perlCanonicalUndef is the value that represents the perl's PL_sv_undef and
// is encoded via the CANONICAL_UNDEF tag. It must be the only instance having
// the canonical field set to true.
var perlCanonicalUndef = &PerlUndef{canonical: true}
// PerlCanonicalUndef returns a value that represents perl's shared undef (PL_sv_undef).
//
// For more details see
// https://github.com/Sereal/Sereal/blob/master/sereal_spec.pod#user-content-dealing-with-undefined-values
func PerlCanonicalUndef() *PerlUndef {
return perlCanonicalUndef
}
// PerlRegexp represents a perl regular expression
type PerlRegexp struct {
Pattern []byte
Modifiers []byte
}
// PerlFreeze represents an object's custom Freeze implementation
type PerlFreeze struct {
Class string
Data []byte
}