50 lines
1.2 KiB
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
|
|
}
|