open Biocaml_internal_pervasives

type t = Minus | Plus

let compare s t =
  match (s,t) with
    | (Minus,Minus-> 0
    | (Minus,Plus-> -1
    | (Plus,Minus-> 1
    | (Plus,Plus-> 0

let equal s t = compare s t  = 0

exception Bad of string
let raise_bad msg = raise (Bad msg)

let of_string_exn = function
  | "-" -> Minus
  | "+" -> Plus
  | s -> raise_bad (sprintf "unrecognized strand %s" s)

let of_string s =
  try Some (of_string_exn s)
  with Bad _ -> None
    
let minus_plus = function
  | Minus -> "-"
  | Plus -> "+"

let rev_fwd = function
  | Minus -> "rev"
  | Plus -> "fwd"

let to_string = minus_plus