本文整理汇总了Golang中v/io/v23/vdl.Type.Key方法的典型用法代码示例。如果您正苦于以下问题:Golang Type.Key方法的具体用法?Golang Type.Key怎么用?Golang Type.Key使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类v/io/v23/vdl.Type
的用法示例。
在下文中一共展示了Type.Key方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: vdlToMojomTypeInternal
func vdlToMojomTypeInternal(t *vdl.Type, outermostType bool, nullable bool, mp map[string]mojom_types.UserDefinedType) (mojomtype mojom_types.Type) {
switch t.Kind() {
case vdl.Bool, vdl.Float64, vdl.Float32, vdl.Int8, vdl.Int16, vdl.Int32, vdl.Int64, vdl.Byte, vdl.Uint16, vdl.Uint32, vdl.Uint64:
return &mojom_types.TypeSimpleType{
simpleTypeCode(t.Kind()),
}
case vdl.String:
return &mojom_types.TypeStringType{
stringType(nullable),
}
case vdl.Array:
elem := vdlToMojomTypeInternal(t.Elem(), false, false, mp)
return &mojom_types.TypeArrayType{
arrayType(elem, nullable, t.Len()),
}
case vdl.List:
elem := vdlToMojomTypeInternal(t.Elem(), false, false, mp)
return &mojom_types.TypeArrayType{
listType(elem, nullable),
}
case vdl.Map:
key := vdlToMojomTypeInternal(t.Key(), false, false, mp)
elem := vdlToMojomTypeInternal(t.Elem(), false, false, mp)
return &mojom_types.TypeMapType{
mapType(key, elem, nullable),
}
case vdl.Struct, vdl.Union, vdl.Enum:
udtKey := addUserDefinedType(t, mp)
ret := &mojom_types.TypeTypeReference{
mojom_types.TypeReference{
Nullable: nullable,
TypeKey: &udtKey,
},
}
if !outermostType {
// This is needed to match the output of the generator exactly, the outermost type
// is not given an identifier.
ret.Value.Identifier = ret.Value.TypeKey
}
return ret
case vdl.Optional:
return vdlToMojomTypeInternal(t.Elem(), false, true, mp)
default:
panic(fmt.Sprintf("conversion from VDL kind %v to mojom type not implemented", t.Kind()))
}
}
示例2: StartMap
func (t target) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
if tt.Kind() == vdl.Optional {
tt = tt.Elem()
}
pointerBlock := t.allocator().Allocate(16, 0)
t.writePointer(pointerBlock)
st := target{
current: pointerBlock.Slice(0, 8),
}
keys, err := st.StartSet(vdl.SetType(tt.Key()), len)
if err != nil {
return nil, err
}
valuePlaceholder := target{
current: pointerBlock.Slice(8, 16),
}
return &mapTarget{
keys: keys,
valuePlaceholder: valuePlaceholder,
valueType: tt.Elem(),
}, nil
}
示例3: StartSet
// TODO(bprosnitz) This uses list, should we use map instead?
func (t target) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
if tt.Kind() == vdl.Optional {
tt = tt.Elem()
}
bitsNeeded := baseTypeSizeBits(tt.Key()) * uint32(len)
block := t.allocator().Allocate((bitsNeeded+7)/8, uint32(len))
t.writePointer(block)
if tt.Key().Kind() == vdl.Bool {
return &bitListTarget{
block: block,
}, nil
} else {
return &listTarget{
incrementSize: baseTypeSizeBits(tt.Key()) / 8,
block: block,
}, nil
}
}
示例4: transcodeValue
//.........这里部分代码省略.........
return err
}
listTarget, err := target.StartList(vt, int(numElems))
if err != nil {
return err
}
for i := 0; i < int(numElems); i++ {
elemTarget, err := listTarget.StartElem(i)
if err != nil {
return err
}
if err := mtv.transcodeValue(vt.Elem(), elemTarget, false, false); err != nil {
return err
}
if err := listTarget.FinishElem(elemTarget); err != nil {
return err
}
}
if err := target.FinishList(listTarget); err != nil {
return err
}
}
return mtv.modec.Finish()
case vdl.Set:
panic("unimplemented")
/*switch ptr, err := d.dec.ReadPointer(); {
case err != nil:
return err
case ptr == 0 && isNullable:
return target.FromNil(vdl.OptionalType(vt))
case ptr == 0 && !isNullable:
return fmt.Errorf("invalid null struct pointer")
}
keyBitSize := baseTypeSizeBits(vt.Key())
numKeys, err := d.dec.StartArray(keyBitSize)
if err != nil {
return err
}
setTarget, err := target.StartSet(vt, int(numKeys))
if err != nil {
return err
}
for i := 0; i < int(numKeys); i++ {
keyTarget, err := setTarget.StartKey()
if err != nil {
return err
}
if err := d.decodeValue(mt.Key, keyTarget, false, false); err != nil {
return err
}
if err := setTarget.FinishKey(keyTarget); err != nil {
return err
}
}
if err := target.FinishSet(setTarget); err != nil {
return err
}
return d.dec.Finish()*/
case vdl.Map:
switch ptr, err := mtv.modec.ReadPointer(); {
case err != nil:
return err
case ptr == 0 && isNullable:
return target.FromNil(vdl.OptionalType(vt))
case ptr == 0 && !isNullable:
return fmt.Errorf("invalid null struct pointer")