+
+let is_generated obj = List.exists ((=) `Generated) (attributes_of_obj obj)
+
+let arity_of_composed_coercion obj =
+ let attrs = attributes_of_obj obj in
+ try
+ let tag=List.find (function `Class (`Coercion _) -> true|_->false) attrs in
+ match tag with
+ | `Class (`Coercion n) -> n
+ | _-> assert false
+ with Not_found -> 0
+;;
+
+let projections_of_record obj uri =
+ let attrs = attributes_of_obj obj in
+ try
+ let tag=List.find (function `Class (`Record _) -> true|_->false) attrs in
+ match tag with
+ | `Class (`Record l) ->
+ List.map (fun (name,_,_) ->
+ let buri = UriManager.buri_of_uri uri in
+ let puri = UriManager.uri_of_string (buri ^ "/" ^ name ^ ".con") in
+ puri) l
+ | _-> assert false
+ with Not_found -> []
+;;
+