MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / listAttribute

Function listAttribute

tensorflow/go/attrs.go:54–182  ·  view source on GitHub ↗
(op *Operation, cname *C.char, meta C.TF_AttrMetadata)

Source from the content-addressed store, hash-verified

52}
53
54func listAttribute(op *Operation, cname *C.char, meta C.TF_AttrMetadata) (interface{}, error) {
55 status := newStatus()
56
57 switch meta._type {
58 case C.TF_ATTR_STRING:
59 if meta.list_size == 0 {
60 return []string(nil), nil
61 }
62 values := make([]unsafe.Pointer, meta.list_size)
63 lengths := make([]C.size_t, meta.list_size)
64 // Add one element in case total_size is zero.
65 storage := make([]C.char, meta.total_size+1)
66 C.TF_OperationGetAttrStringList(op.c, cname, &values[0], &lengths[0], C.int(meta.list_size), unsafe.Pointer(&storage[0]), C.size_t(meta.total_size), status.c)
67 if err := status.Err(); err != nil {
68 return nil, err
69 }
70 list := make([]string, meta.list_size)
71 for i, val := range values {
72 length := lengths[i]
73 list[i] = C.GoStringN((*C.char)(val), C.int(length))
74 }
75 return list, nil
76
77 case C.TF_ATTR_INT:
78 if meta.list_size == 0 {
79 return []int64(nil), nil
80 }
81 list := make([]C.int64_t, meta.list_size)
82 C.TF_OperationGetAttrIntList(op.c, cname, &list[0], C.int(meta.list_size), status.c)
83 if err := status.Err(); err != nil {
84 return nil, err
85 }
86 vals := make([]int64, meta.list_size)
87 for i, val := range list {
88 vals[i] = int64(val)
89 }
90 return vals, nil
91
92 case C.TF_ATTR_FLOAT:
93 if meta.list_size == 0 {
94 return []float32(nil), nil
95 }
96 list := make([]C.float, meta.list_size)
97 C.TF_OperationGetAttrFloatList(op.c, cname, &list[0], C.int(meta.list_size), status.c)
98 if err := status.Err(); err != nil {
99 return nil, err
100 }
101 vals := make([]float32, meta.list_size)
102 for i, val := range list {
103 vals[i] = float32(val)
104 }
105 return vals, nil
106
107 case C.TF_ATTR_BOOL:
108 if meta.list_size == 0 {
109 return []bool(nil), nil
110 }
111 list := make([]C.uchar, meta.list_size)

Callers 1

AttrMethod · 0.85

Calls 7

newStatusFunction · 0.85
makeFunction · 0.85
int64Function · 0.85
newTensorFromCFunction · 0.85
makeCShapeFunction · 0.85
DataTypeTypeAlias · 0.70
ErrMethod · 0.45

Tested by

no test coverage detected