blob: 2b217b82ebfd48d1a718dc0ea058048dc2fdcd21 (
plain) (
blame)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
type elt =
| CREATE_INSTANT_INVITE
| KICK_MEMBERS
| BAN_MEMBERS
| ADMINISTRATOR
| MANAGE_CHANNELS
| MANAGE_GUILD
| ADD_REACTIONS
| VIEW_AUDIT_LOG
| PRIORITY_SPEAKER
| READ_MESSAGES
| SEND_MESSAGES
| SEND_TTS_MESSAGES
| MANAGE_MESSAGES
| EMBED_LINKS
| ATTACH_FILES
| READ_MESSAGE_HISTORY
| MENTION_EVERYONE
| USE_EXTERNAL_EMOJIS
| CONNECT
| SPEAK
| MUTE_MEMBERS
| DEAFEN_MEMBERS
| MOVE_MEMBERS
| USE_VAD
| CHANGE_NICKNAME
| MANAGE_NICKNAMES
| MANAGE_ROLES
| MANAGE_WEBHOOKS
| MANAGE_EMOJIS
[@@deriving sexp]
include BitMaskSet.Make(struct
include BitMaskSet.Int
type t = elt
let mask = 0b0111_1111_1111_0111_1111_1101_1111_1111
end)
let sexp_of_t = Core.Int.sexp_of_t
let t_of_sexp = Core.Int.t_of_sexp
let of_yojson_exn j = create @@ Yojson.Safe.Util.to_int j
let of_yojson j =
try Ok (of_yojson_exn j)
with Yojson.Safe.Util.Type_error (why,_) -> Error why
let to_yojson t : Yojson.Safe.t = `Int t
let of_seq seq = List.of_seq seq |> of_list
let to_seq mask = elements mask |> List.to_seq
let to_seq_from elt init =
let _, _, r = split elt init in
elt :: elements r |> List.to_seq
let add_seq seq init =
List.of_seq seq
|> of_list
|> (lor) init
|