Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file odoc_loader.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184openOdoc_compatopenResultmoduleError=Odoc_model.Errorletread_stringparent_definitionlocationtext=Error.catch(fun()->Doc_attr.pageparent_definitionlocationtext)letcorrupted:string->Error.t=Error.filename_only"corrupted"letnot_a_typedtree:string->Error.t=Error.filename_only"not a Typedtree"letnot_an_implementation:string->Error.t=Error.filename_only"not an implementation"letnot_an_interface:string->Error.t=Error.filename_only"not an interface"letwrong_version:string->Error.t=Error.filename_only"wrong OCaml version"letread_cmti~make_root~filename=matchCmt_format.read_cmtfilenamewith|exceptionCmi_format.Error(Not_an_interface_)->Error(not_an_interfacefilename)|exceptionCmt_format.Error(Not_a_typedtree_)->Error(not_a_typedtreefilename)|cmt_info->matchcmt_info.cmt_annotswith|Interfaceintf->beginmatchcmt_info.cmt_interface_digestwith|None->Error(corruptedfilename)|Somedigest->Error.catchbeginfun()->letname=cmt_info.cmt_modnameinletroot=make_root~module_name:name~digestinlet(id,doc,items)=Cmti.read_interfacerootnameintfinletimports=List.filter(fun(name',_)->name<>name')cmt_info.cmt_importsinletimports=List.map(fun(s,d)->Odoc_model.Lang.Compilation_unit.Import.Unresolved(s,d))importsinletinterface=trueinlethidden=Odoc_model.Root.contains_double_underscorenameinletsource=matchcmt_info.cmt_sourcefile,cmt_info.cmt_source_digestwith|Somefile,Somedigest->letbuild_dir=cmt_info.cmt_builddirinSome{Odoc_model.Lang.Compilation_unit.Source.file;digest;build_dir}|_,_->Noneinletcontent=Odoc_model.Lang.Compilation_unit.Moduleitemsin{Odoc_model.Lang.Compilation_unit.id;doc;digest;imports;source;interface;hidden;content;expansion=None}endend|_->Error(not_an_interfacefilename)letread_cmt~make_root~filename=matchCmt_format.read_cmtfilenamewith|exceptionCmi_format.Error(Not_an_interface_)->Error(not_an_implementationfilename)|exceptionCmi_format.Error(Wrong_version_interface_)->Error(wrong_versionfilename)|exceptionCmi_format.Error(Corrupted_interface_)->Error(corruptedfilename)|exceptionCmt_format.Error(Not_a_typedtree_)->Error(not_a_typedtreefilename)|cmt_info->matchcmt_info.cmt_annotswith|Packed(_,files)->letname=cmt_info.cmt_modnameinletinterface,digest=matchcmt_info.cmt_interface_digestwith|Somedigest->true,digest|None->matchList.assocnamecmt_info.cmt_importswith|Somedigest->false,digest|None->assertfalse|exceptionNot_found->assertfalseinlethidden=Odoc_model.Root.contains_double_underscorenameinletroot=make_root~module_name:name~digestinletid=`Root(root,Odoc_model.Names.UnitName.of_stringname)inletitems=List.map(funfile->letpref=Misc.chop_extensionsfileinString.capitalize_ascii(Filename.basenamepref))filesinletitems=List.sortString.compareitemsinletitems=List.map(funname->letid=`Module(id,Odoc_model.Names.ModuleName.of_stringname)inletpath=`Rootnamein{Odoc_model.Lang.Compilation_unit.Packed.id;path})itemsinletimports=List.filter(fun(name',_)->name<>name')cmt_info.cmt_importsinletimports=List.map(fun(s,d)->Odoc_model.Lang.Compilation_unit.Import.Unresolved(s,d))importsinletdoc=Doc_attr.emptyinletsource=Noneinletcontent=Odoc_model.Lang.Compilation_unit.PackitemsinOk{Odoc_model.Lang.Compilation_unit.id;doc;digest;imports;source;interface;hidden;content;expansion=None}|Implementationimpl->Error.catchbeginfun()->letname=cmt_info.cmt_modnameinletinterface,digest=matchcmt_info.cmt_interface_digestwith|Somedigest->true,digest|None->matchList.assocnamecmt_info.cmt_importswith|Somedigest->false,digest|None->assertfalse|exceptionNot_found->assertfalseinlethidden=Odoc_model.Root.contains_double_underscorenameinletroot=make_root~module_name:name~digestinlet(id,doc,items)=Cmt.read_implementationrootnameimplinletimports=List.filter(fun(name',_)->name<>name')cmt_info.cmt_importsinletimports=List.map(fun(s,d)->Odoc_model.Lang.Compilation_unit.Import.Unresolved(s,d))importsinletsource=matchcmt_info.cmt_sourcefile,cmt_info.cmt_source_digestwith|Somefile,Somedigest->letbuild_dir=cmt_info.cmt_builddirinSome{Odoc_model.Lang.Compilation_unit.Source.file;digest;build_dir}|_,_->Noneinletcontent=Odoc_model.Lang.Compilation_unit.Moduleitemsin{Odoc_model.Lang.Compilation_unit.id;doc;digest;imports;source;interface;hidden;content;expansion=None}end|_->Error(not_an_implementationfilename)letread_cmi~make_root~filename=matchCmi_format.read_cmifilenamewith|exceptionCmi_format.Error(Not_an_interface_)->Error(not_an_interfacefilename)|exceptionCmi_format.Error(Wrong_version_interface_)->Error(wrong_versionfilename)|exceptionCmi_format.Error(Corrupted_interface_)->Error(corruptedfilename)|cmi_info->matchcmi_info.cmi_crcswith|(name,Somedigest)::importswhenname=cmi_info.cmi_name->Error.catchbeginfun()->letroot=make_root~module_name:name~digest:digestinlet(id,doc,items)=Cmi.read_interfacerootname(Odoc_model.Compat.signaturecmi_info.cmi_sign)inletimports=List.map(fun(s,d)->Odoc_model.Lang.Compilation_unit.Import.Unresolved(s,d))importsinletinterface=trueinlethidden=Odoc_model.Root.contains_double_underscorenameinletsource=Noneinletcontent=Odoc_model.Lang.Compilation_unit.Moduleitemsin{Odoc_model.Lang.Compilation_unit.id;doc;digest;imports;source;interface;hidden;content;expansion=None}end|_->Error(corruptedfilename)