diff options
| -rw-r--r-- | lib/models/permissions.ml | 14 | ||||
| -rw-r--r-- | lib/models/permissions.mli | 9 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/models/permissions.ml b/lib/models/permissions.ml index 1521a0e..2b217b8 100644 --- a/lib/models/permissions.ml +++ b/lib/models/permissions.ml @@ -28,13 +28,25 @@ type elt = | MANAGE_ROLES | MANAGE_WEBHOOKS | MANAGE_EMOJIS +[@@deriving sexp] include BitMaskSet.Make(struct include BitMaskSet.Int type t = elt - let mask = 0b0111_1111_1111_1111_0111_1101_1111_1111 + 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 diff --git a/lib/models/permissions.mli b/lib/models/permissions.mli index 74ed563..6e4d30a 100644 --- a/lib/models/permissions.mli +++ b/lib/models/permissions.mli @@ -28,7 +28,14 @@ type elt = | MANAGE_ROLES | MANAGE_WEBHOOKS | MANAGE_EMOJIS +[@@deriving sexp] include BitMaskSet.S with type elt := elt with type storage = int - with type t = private int
\ No newline at end of file + with type t = private int + +val sexp_of_t : t -> Sexplib.Sexp.t +val t_of_sexp : Sexplib.Sexp.t -> t +val of_yojson_exn : Yojson.Safe.t -> t +val of_yojson : Yojson.Safe.t -> (t, string) result +val to_yojson : t -> Yojson.Safe.t
\ No newline at end of file |