|
|
|
@ -16,24 +16,7 @@ open! Utils;
|
|
|
|
|
/** Module for Mangled Names */
|
|
|
|
|
let module F = Format;
|
|
|
|
|
|
|
|
|
|
type t = {plain: string, mangled: option string};
|
|
|
|
|
|
|
|
|
|
let mangled_compare so1 so2 =>
|
|
|
|
|
switch (so1, so2) {
|
|
|
|
|
| (None, None) => 0
|
|
|
|
|
| (None, Some _) => (-1)
|
|
|
|
|
| (Some _, None) => 1
|
|
|
|
|
| (Some s1, Some s2) => string_compare s1 s2
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let compare pn1 pn2 => {
|
|
|
|
|
let n = string_compare pn1.plain pn2.plain;
|
|
|
|
|
if (n != 0) {
|
|
|
|
|
n
|
|
|
|
|
} else {
|
|
|
|
|
mangled_compare pn1.mangled pn2.mangled
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
type t = {plain: string, mangled: option string} [@@deriving compare];
|
|
|
|
|
|
|
|
|
|
let equal pn1 pn2 => compare pn1 pn2 == 0;
|
|
|
|
|
|
|
|
|
@ -81,9 +64,7 @@ let from_package_class package_name class_name =>
|
|
|
|
|
/** Pretty print a mangled name */
|
|
|
|
|
let pp f pn => F.fprintf f "%s" (to_string pn);
|
|
|
|
|
|
|
|
|
|
type mangled_t = t;
|
|
|
|
|
|
|
|
|
|
let module MangledSet = Set.Make {
|
|
|
|
|
type t = mangled_t;
|
|
|
|
|
type nonrec t = t;
|
|
|
|
|
let compare = compare;
|
|
|
|
|
};
|
|
|
|
|