package hack_parallel
Source file prefix.ml
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(** * Copyright (c) 2015, 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. * *) (*****************************************************************************) (* The prefix is used to guarantee that we are not mixing different kind of * keys in the heap. * It just creates a new prefix every time its called. * The $ at the end of the prefix ensures that we don't have ambiguities if a key * happens to start with a digit. *) (*****************************************************************************) type t = string let make = let prefix_count = ref 0 in fun () -> incr prefix_count; string_of_int !prefix_count ^ "$" let make_key prefix k = prefix ^ k let remove prefix k = let prefix_size = String.length prefix in assert (String.sub k 0 prefix_size = prefix); String.sub k prefix_size (String.length k - prefix_size)