52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package model
|
||
|
||
// attribute bit. priority black > following > whisper > no relation.
|
||
const (
|
||
AttrNoRelation = uint32(0)
|
||
AttrWhisper = uint32(1)
|
||
AttrFollowing = uint32(1) << 1
|
||
AttrFriend = uint32(1) << 2
|
||
AttrBlack = uint32(1) << 7
|
||
// 128,129,130 变为 0 时候,status = 1
|
||
StatusOK = 0
|
||
StatusDel = 1
|
||
)
|
||
|
||
// relation act type.
|
||
const (
|
||
ActAddFollowing = int8(1)
|
||
ActDelFollowing = int8(2)
|
||
ActAddWhisper = int8(3)
|
||
ActDelWhisper = int8(4)
|
||
ActAddBlack = int8(5)
|
||
ActDelBalck = int8(6)
|
||
ActDelFollower = int8(7)
|
||
)
|
||
|
||
// Attr get real attribute by the specified priority.
|
||
func Attr(attribute uint32) uint32 {
|
||
if attribute&AttrBlack > 0 {
|
||
return AttrBlack
|
||
}
|
||
if attribute&AttrFriend > 0 {
|
||
return AttrFriend
|
||
}
|
||
if attribute&AttrFollowing > 0 {
|
||
return AttrFollowing
|
||
}
|
||
if attribute&AttrWhisper > 0 {
|
||
return AttrWhisper
|
||
}
|
||
return AttrNoRelation
|
||
}
|
||
|
||
// SetAttr set attribute.
|
||
func SetAttr(attribute uint32, mask uint32) uint32 {
|
||
return attribute | mask
|
||
}
|
||
|
||
// UnsetAttr unset attribute.
|
||
func UnsetAttr(attribute uint32, mask uint32) uint32 {
|
||
return attribute & ^mask // ^ 按位取反
|
||
}
|