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.

52 lines
1.5 KiB

(*
* Copyright (c) 2017 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*)
open! IStd
module F = Format
(** utilities for importing JSON specifications of sources/sinks into Quandary *)
module Source = struct
type t = { procedure : string; kind : string; }
let of_json = function
| `List sources ->
let parse_source json =
let open Yojson.Basic.Util in
let procedure = json |> member "procedure" |> to_string in
let kind = json |> member "kind" |> to_string in
{ procedure; kind; } in
IList.map parse_source sources
| _ ->
[]
let pp fmt { procedure; kind; } =
F.fprintf fmt "Procedure: %s Kind: %s" procedure kind
end
module Sink = struct
type t = { procedure : string; kind : string; index : string}
let of_json = function
| `List sinks ->
let parse_sink json =
let open Yojson.Basic.Util in
let procedure = json |> member "procedure" |> to_string in
let kind = json |> member "kind" |> to_string in
let index = json |> member "index" |> to_string in
{ procedure; kind; index; } in
IList.map parse_sink sinks
| _ ->
[]
let pp fmt { procedure; kind; index; } =
F.fprintf fmt "Procedure: %s Kind: %s Index %s" procedure kind index
end