-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathtype_named_number.go
35 lines (31 loc) · 1.14 KB
/
type_named_number.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package smi
import (
"unsafe"
"github.com/sleepinggenius2/gosmi/smi/internal"
"github.com/sleepinggenius2/gosmi/types"
)
// SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr)
func GetFirstNamedNumber(smiTypePtr *types.SmiType) *types.SmiNamedNumber {
if smiTypePtr == nil {
return nil
}
typePtr := (*internal.Type)(unsafe.Pointer(smiTypePtr))
if typePtr.List == nil || typePtr.List.Ptr == nil || (typePtr.BaseType != types.BaseTypeEnum && typePtr.BaseType != types.BaseTypeBits) {
return nil
}
return &typePtr.List.Ptr.(*internal.NamedNumber).SmiNamedNumber
}
// SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *smiNamedNumberPtr)
func GetNextNamedNumber(smiNamedNumberPtr *types.SmiNamedNumber) *types.SmiNamedNumber {
if smiNamedNumberPtr == nil {
return nil
}
nnPtr := (*internal.NamedNumber)(unsafe.Pointer(smiNamedNumberPtr))
if nnPtr.Type == nil || (nnPtr.Type.BaseType != types.BaseTypeEnum && nnPtr.Type.BaseType != types.BaseTypeBits) {
return nil
}
if nnPtr.List == nil || nnPtr.List.Next == nil || nnPtr.List.Next.Ptr == nil {
return nil
}
return &nnPtr.List.Next.Ptr.(*internal.NamedNumber).SmiNamedNumber
}