You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

51 lines
1.1 KiB

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 // ^ 按位取反
}