src/Pure/General/binding.ML
changeset 29006 abe0f11cfa4e
parent 28965 1de908189869
child 29208 b0c81b9a0133
equal deleted inserted replaced
29005:ce378dcfddab 29006:abe0f11cfa4e
    21   val map_base: (string -> string) -> T -> T
    21   val map_base: (string -> string) -> T -> T
    22   val qualify: string -> T -> T
    22   val qualify: string -> T -> T
    23   val add_prefix: bool -> string -> T -> T
    23   val add_prefix: bool -> string -> T -> T
    24   val map_prefix: ((string * bool) list -> T -> T) -> T -> T
    24   val map_prefix: ((string * bool) list -> T -> T) -> T -> T
    25   val is_empty: T -> bool
    25   val is_empty: T -> bool
       
    26   val base_name: T -> string
    26   val pos_of: T -> Position.T
    27   val pos_of: T -> Position.T
    27   val dest: T -> (string * bool) list * string
    28   val dest: T -> (string * bool) list * string
    28   val display: T -> string
    29   val display: T -> string
    29 end
    30 end
    30 
    31 
    54 fun qualify_base path name =
    55 fun qualify_base path name =
    55   if path = "" orelse name = "" then name
    56   if path = "" orelse name = "" then name
    56   else path ^ "." ^ name;
    57   else path ^ "." ^ name;
    57 
    58 
    58 val qualify = map_base o qualify_base;
    59 val qualify = map_base o qualify_base;
    59   (*FIXME should all operations on bare names moved here from name_space.ML ?*)
    60   (*FIXME should all operations on bare names move here from name_space.ML ?*)
    60 
    61 
    61 fun add_prefix sticky prfx b = if prfx = "" then error "empty name prefix"
    62 fun add_prefix sticky prfx b = if prfx = "" then error "empty name prefix"
    62   else (map_binding o apfst) (cons (prfx, sticky)) b;
    63   else (map_binding o apfst) (cons (prfx, sticky)) b;
    63 
    64 
    64 fun map_prefix f (Binding ((prefix, name), pos)) =
    65 fun map_prefix f (Binding ((prefix, name), pos)) =
    65   f prefix (name_pos (name, pos));
    66   f prefix (name_pos (name, pos));
    66 
    67 
    67 fun is_empty (Binding ((_, name), _)) = name = "";
    68 fun is_empty (Binding ((_, name), _)) = name = "";
       
    69 fun base_name (Binding ((_, name), _)) = name;
    68 fun pos_of (Binding (_, pos)) = pos;
    70 fun pos_of (Binding (_, pos)) = pos;
    69 fun dest (Binding (prefix_name, _)) = prefix_name;
    71 fun dest (Binding (prefix_name, _)) = prefix_name;
    70 
    72 
    71 fun display (Binding ((prefix, name), _)) =
    73 fun display (Binding ((prefix, name), _)) =
    72   let
    74   let