X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2FmatitaGtkMisc.ml;h=6407ae35d1e8654fb89022b574704f50fea84422;hb=8752fac73a864c821b6954f0572bce2052924183;hp=a41dbffe373713d3ca3fa5858e215f801afe5a58;hpb=863eeec8251791046ea6ea487286eb1434520725;p=helm.git diff --git a/helm/software/matita/matitaGtkMisc.ml b/helm/software/matita/matitaGtkMisc.ml index a41dbffe3..6407ae35d 100644 --- a/helm/software/matita/matitaGtkMisc.ml +++ b/helm/software/matita/matitaGtkMisc.ml @@ -439,3 +439,21 @@ let ask_record_choice ~(gui:#gui) ?(title= "") ?(message = "") GtkThread.main (); (match !record_no with Some n -> n | _ -> raise MatitaTypes.Cancel) +let utf8_parsed_text s floc = + let start, stop = HExtlib.loc_of_floc floc in + let start_bytes = Glib.Utf8.offset_to_pos s ~pos:0 ~off:start in + let stop_bytes = Glib.Utf8.offset_to_pos s ~pos:0 ~off:stop in + assert(stop_bytes >= start_bytes); + let bytes = stop_bytes - start_bytes in + try + String.sub s start_bytes bytes, bytes + with Invalid_argument _ -> + Printf.eprintf "%s/%d/%d\n" s start_bytes bytes; + assert false + + +let utf8_string_length s = + if BuildTimeConf.debug then + assert(Glib.Utf8.validate s); + Glib.Utf8.length s +