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