10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-11-09 07:33:53 +01:00
quantum_package/ocaml/MO_class.ml

64 lines
1.7 KiB
OCaml
Raw Normal View History

2017-08-18 18:28:33 +02:00
open Core
2017-06-13 12:20:55 +02:00
open Qptypes
type t =
2017-06-13 12:20:55 +02:00
| Core of MO_number.t list
| Inactive of MO_number.t list
| Active of MO_number.t list
| Virtual of MO_number.t list
| Deleted of MO_number.t list
2017-08-18 18:28:33 +02:00
[@@deriving sexp]
let to_string x =
let print_list l =
let s = List.map ~f:(fun x-> MO_number.to_int x |> string_of_int )l
2017-06-13 12:20:55 +02:00
|> (String.concat ~sep:", ")
in
"("^s^")"
in
2017-06-13 12:20:55 +02:00
match x with
2017-06-13 12:20:55 +02:00
| Core [] -> "Core"
| Inactive [] -> "Inactive"
| Active [] -> "Active"
| Virtual [] -> "Virtual"
| Deleted [] -> "Deleted"
| Core l -> "Core : "^(print_list l)
| Inactive l -> "Inactive : "^(print_list l)
2017-06-13 12:20:55 +02:00
| Active l -> "Active : "^(print_list l)
| Virtual l -> "Virtual : "^(print_list l)
| Deleted l -> "Deleted : "^(print_list l)
2017-06-13 12:20:55 +02:00
let of_string s =
match (String.lowercase s) with
| "core" -> Core []
| "inactive" -> Inactive []
| "active" -> Active []
| "virtual" -> Virtual []
| "deleted" -> Deleted []
| _ -> failwith "MO_class should be (Core|Inactive|Active|Virtual|Deleted)"
let _mo_number_list_of_range range =
2017-06-13 12:20:55 +02:00
Range.of_string range |> List.map ~f:MO_number.of_int
let create_core range = Core (_mo_number_list_of_range range)
let create_inactive range = Inactive (_mo_number_list_of_range range)
let create_active range = Active (_mo_number_list_of_range range)
let create_virtual range = Virtual (_mo_number_list_of_range range)
let create_deleted range = Deleted (_mo_number_list_of_range range)
2014-09-17 00:39:21 +02:00
let to_bitlist n_int x =
2017-06-13 12:20:55 +02:00
match x with
| Core l
| Inactive l
| Active l
| Virtual l
| Deleted l -> Bitlist.of_mo_number_list n_int l