blob: 7ab90100844a595ddf2cb94eab4d75b82e140b89 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package vom
import "v.io/v23/vdl"
// hasChunkLen returns true iff the type t is encoded with a top-level
// chunk length.
func hasChunkLen(t *vdl.Type) bool {
if t.IsBytes() {
// TODO(bprosnitz) This should probably be chunked
return false
}
switch t.Kind() {
case vdl.Array, vdl.List, vdl.Set, vdl.Map, vdl.Struct, vdl.Any, vdl.Union, vdl.Optional:
return true
}
return false
}
// isAllowedVersion returns true if the VOM version specified is supported.
func isAllowedVersion(version Version) bool {
return version >= Version80 && version <= Version81
}
var anyKindList []vdl.Kind = []vdl.Kind{vdl.Any}
var typeObjectKindList []vdl.Kind = []vdl.Kind{vdl.TypeObject}
// containsAny returns true if the provided type contains an any recursively within it.
func containsAny(t *vdl.Type) bool {
return t.ContainsKind(vdl.WalkAll, anyKindList...)
}
// containsTypeObject returns true if the provided type contains an any recursively within it.
func containsTypeObject(t *vdl.Type) bool {
return t.ContainsKind(vdl.WalkAll, typeObjectKindList...)
}