Caml1999I0374_(Odoc_sigӠ0Signature_search@#ele;@@@A@@@@@5ocamldoc/odoc_sig.mliU U@@@@@@A@#tab;@@@A&Stdlib'Hashtbl!t@@@Š%Types.signature_item@@@@@@@@@@$V%VL@@@@5A@A@%table@)signature@@@1@@@@@@9Z:Z@@JC@@,search_value@@@@@&stringQ@@@4)type_expr@@@@@@@@U_V_@@fD@@0search_extension@+@@@@@@@N5extension_constructor@@@@@@@@odlrpdl@@E@@+search_type@E@@@@6@@@h0type_declaration@@@@@@@@iX^iX@@F@@,search_class@_@@@@P@@@1class_declaration@@@@@@@@n < Bn < }@@G@@1search_class_type@y@@@@j@@@6class_type_declaration@@@@@@@@s , 2s , w@@H@@-search_module@@@@@@@@+module_type@@@@@@@@x  x  S@@I@@2search_module_type@@@@@@@@&optionL+module_type@@@@@@@@@@@}  }  I@@ J@@5search_attribute_type@$Vars#key@@@@/class_signature@@@)type_expr@@@@@@@@B  C  J@@*K@@2search_method_type@@@@@/class_signature@@@)type_expr@@@@@@@@6H  7I@@@GL@@@@:S;JAH@KM@@@.Info_retriever+all_special@@@@@ @@@@#intA@@@@$listK*Odoc_types$info@@@@@@@@@@@@@qReirS{@@N@@9blank_line_outside_simple@3@@@@9@@@$boolE@@@@@@@@VW9@@O@@2just_after_special@N@@@@T@@@@K@@@@G$info@@@@@@@@@@@@@]ae^~@@P@@-first_special@x@@@@~@@@@u@@@@q$info@@@@@@@@@@@@@de@@Q@@,get_comments@@$text@@@!a@@@@@@@@@@@@$info@@@@@@@%@@@@@@@@@@@@kCGlZ@@*R@@@@Mn@.S@@.analyze_alerts@=$info@@@@@@@)Parsetree*attributes@@@R$info@@@@@@@@@@@HpIq@@YV@@Ӡ(Analyser@@$fileN#ref@@@@@@@ey &fy ;@@vW@@)file_namea#ref*@@@@@@@x|ioy|i@@X@@2get_string_of_file@)@@@@/@@@D@@@@@@@@||@@Y@@,prepare_file@S@@@ @Y@@@!$unitF@@@"@@#@@$@#)#T@@Z@@(preamble@n@@@%@t@@@&@@!a@)(Location!t@@@'@@(@q@@@*@@@@-@~$info@@@+@@@,@@.@@/@@0@@1@@2@.@@[@@5get_comments_in_class@@@@3@@@@4@$info@@@7@@@8@*Odoc_class-class_element@@@5@@@6@@9@@:@@;@ ou!@@1\@@6get_comments_in_module@@@@<@@@@=@N$info@@@@@@@A@+Odoc_module.module_element@@@>@@@?@@B@@C@@D@S!'TR@@d]@@;name_comment_from_type_decl@@@@E@ @@@F@50type_declaration@@@G@@@@M@@9@@@J@$$info@@@H@@@I@@K@@@L@@N@@O@@P@@Q@ @@^@@2manifest_structure@(Odoc_env#env@@@R@G@h@@@U@̠S$info@@@S@@@T@@V@@@W@)type_expr@@@X)Odoc_type-type_manifest@@@Y@@Z@@[@@\@U@@_@@-get_type_kind@?#env@@@]@@@@@`@ $info@@@^@@@_@@a@@@b@.type_decl_kind@@@c=)type_kind@@@d@@e@@f@@g@   h @@`@@-get_cstr_args@z#env@@@h@@@@i@)Typedtree5constructor_arguments@@@jd0constructor_args@@@k@@l@@m@@n@5!s!y6!!@@Fd@@+merge_infos@U$info@@@o@@@p@b$info@@@q@@@rm$info@@@s@@@t@@u@@v@c"2"8d""@@te@@8analyse_module_type_kind&erased)Odoc_name#Map!tР'Removed@+Constrained(Y/with_constraint@@@w@@@x@@@yA@@@z@@@{@@@|@#env@@@}@-!t@@@~@u+module_type@@@@+module_type@@@n0module_type_kind@@@@@@@@@@@@@@##$$/@@f@@7analyse_class_type_kind@*#env@@@@\!t@@@@@@@@*class_type@@@@*class_type@@@/class_type_kind@@@@@@@@@@@@@@$$%%?@@g@@1analyse_signature@@@@@@@@@)signature@@@@)signature@@@(t_module@@@@@@@@@@@@&&&'#@@/h@@@@"u#'$'+@3i@@@@ (Odoc_sig0~ L *9ŀ`(Warnings0mJɒkgrs-Stdlib__Uchar056uf4[_+Stdlib__Sys0 -ռ鱦s5/.Stdlib__String0*%"e+Outcometree0euWS~d栠*Odoc_value0IlX+KE`*Odoc_types0fX cx3H~)Odoc_type0~b:x_B.Odoc_parameter0ץ~D3vNm)Odoc_name0{Y/3.+Odoc_module0z8P@ӽX4Id(Odoc_env0*"z1+W*Odoc_class0_"#C{$Misc0ob]6>Vê>)Longident0s `7mɕc(Location0a7cK_H%9)Load_path0I@18 ~,Identifiable0 {d\FX'`%Ident0">WA+9*X*Format_doc0]mWϓ:Mݠ#Env0zV L{YWI*Data_types0I'Ue`wq]Ѡ*Cmi_format0c˯7͗ԩmݠ0CamlinternalLazy0&͂7 Pˆ8CamlinternalFormatBasics0%FU(Q/Tu5Build_path_prefix_map0z HkGs(Asttypes0>n{T8cئ@@@Caml1999T037wb8ZJC(Odoc_sig*ocaml.text&_none_@@A c The module for analysing a signature and source code and creating modules, classes, ..., elements.5ocamldoc/odoc_sig.mliP77P7@@@@@@3@@@@#intA;@@A@@@@@9@A@$charB;@@A@@@@@>@A@&stringQ;@@A@@@@@C@@@%bytesC;@@A@@@@@H@@@%floatD;@@A@@@@@M@@@$boolE;@@%falsec@@W@$trued@@]@@@A@@@@@^@A@$unitF;@@"()e@@h@@@A@@@@@i@A@ #exnG;@@@A@@@@@m@@@#effH;@@O@A@A@@@@@@v@@@,continuationI;@@Q@@P@B A@nY@@@@@@@@@%arrayJ;@@R@AA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AA@Y@@@@@@@@ 5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@AA@Y@@@@@@@@ *atomic_locU;@@Z@AA@@@@@@@@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern@@0Division_by_zero]#@@@A  @+End_of_file\#$@@@A#&&@'FailureY#,@'@@A,//@0Invalid_argumentX#5@0@@A5$8#8@-Match_failureV#>@@=@9@;@@a@@AF5I4I@)Not_foundZ#O@@@AN=Q<Q@-Out_of_memoryW#W@@@AVEYDY@.Stack_overflow^#_@@@A^MaLa@.Sys_blocked_io_#g@@@AfUiTi@)Sys_error[#o@j@@Ao^r]r@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@A0Signature_searchASS@M@@БA+#eleBUU@@;@@@A@@@@@U @@@@@@@@A@@@3@@A@A+#tabCV!V$@@;@@A6'Hashtbl!t$@@@%Types.signature_item@@@ @@@ @@@@VVL@@@@A@@@AгVCVJ@VK@@г!#eleV(V+@@)3@MG;;@@@AC@@@ n@@@@@'@@@$@A@@г2%TypesV-V2@7V3VA@@@A@@@NV'9@@;@@3@@A<;@%tableѠ Z Z@б@гR)signature%TypesZZ@ ZZ@@@@@@ |3!!!!!!!!@C}w@A @@г#tab.Z/Z@@ @@@ }@@@@@ ~@@@9Z @)ocaml.docK e Create a table from a signature. This table is used by some of the search functions below. HXNTIY@@@@@@@aC@@@\@@@@@@3,search_valueҠ__`_@б@г#tabj_k_@@ @@@ 3llllllll@Lj:@A@@б@гE&string{_|_@@ @@@ @@г)type_expr%Types__@ __@@@@@@ ' @@@@@ * @@@0@@ -3 @@@_@f This function returns the type expression for the value whose name is given, in the given signature. @raise Not_found if error.\^a@@@@@@@D@@@v@@@@@@L0search_extensionӠdlvdl@б@г!#tabdldl@@ @@@ 3@ez8@A@@б@г&stringdldl@@ @@@ @@г(5extension_constructor%Typesdldl@ dldl@@@@@@ ' @@@@@ * @@@0@@ -3 @@@dlr@ʐ This function returns the Types.extension_constructor for the extension whose name is given, in the given table. @raise Not_found if error.acFk@@@@@@@)E@@@$@@@@@@L+search_typeԠ'iXb(iXm@б@г#tab2iXp3iXs@@ @@@ 344444444@ez8@A@@б@г &stringCiXwDiX}@@ @@@ @@г0type_declaration%TypesTiXUiX@ XiXYiX@@@@@@ ' @@@@@ * @@@0@@ -3 @@@giX^@. This function returns the Types.type_declaration for the type whose name is given, in the given table. @raise Not_found if error.tfuh2W@@@@@@@F@@@>@@@@@@L,search_classՠn < Fn < R@б@г預#tabn < Un < X@@ @@@ 3@ez8@A@@б@гq&stringn < \n < b@@ @@@ @@г1class_declaration%Typesn < fn < k@ n < ln < }@@@@@@ ' @@@@@ * @@@0@@ -3 @@@n < B@ This function returns the Types.class_declaration for the class whose name is given, in the given table. @raise Not_found if error.km  ;@@@@@@@G@@@쐠@@@@@@L1search_class_type֠s , 6s , G@б@гM#tabs , Js , M@@ @@@ 3@ez8@A@@б@гՠ&string s , Q s , W@@ @@@ @@гT6class_type_declaration%Typess , [s , `@  s , a!s , w@@@@@@ ' @@@@@ * @@@0@@ -3 @@@/s , 2@ This function returns the Types.class_type_declaration for the class type whose name is given, in the given table. @raise Not_found if error.@@ @@@ @@г+module_type%Typesx  Bx  G@ x  Hx  S@@@@@@ ' @@@@@ * @@@0@@ -3 @@@x  @Z This function returns the Types.module_type for the module whose name is given, in the given table. @raise Not_found if error.u y w  @@@@@@@I@@@j@@@@@@L2search_module_typeؠ}  }  @б@г#tab}  }  #@@ @@@ 3@ez8@A@@б@г&string}  '}  -@@ @@@ @@г<&option}  C}  I@г&+module_type%Types}  1}  6@ }  7}  B@@@@@@ 1 @@@ @@@ 6@@@+@@ 9. @@@?@@ <B#@@@}  &@͐ This function returns the optional Types.module_type for the module type whose name is given, in the given table. @raise Not_found if error.z U [|  @@@@@@@,J@@6@'@@@@@@[5search_attribute_type*B  +B  @б@гr$Vars#key%Types=C  >C  @ AC  BC  @@FC  GC  @ @@@@@3IIIIIIII@J@A@@б@г/class_signature%Types\C  "]C  '@ `C  (aC  7@@@@@@ @@г)type_expr%TypesrC  ;sC  @@ vC  AwC  J@@@@@@0 @@@@@3$ @@@9@@6F @@@B  @L This function returns the Types.type_expr for the given val name in the given class signature. @raise Not_found if error. K QA  @@@@@@@K@@@\@@@@@@U2search_method_typeH  H @б@г~&stringII@@ @@@ 3@n8@A@@б@г/class_signature%TypesII@ II-@@@@@@  @@г)type_expr%TypesI1I6@ I7I@@@@@@@ 0 @@@@@ 3$ @@@9@@ 6< @@@H  @ This function returns the Types.type_expr for the given method name in the given class signature. @raise Not_found if error.E L QG  @@@@@@@L@@@@@@@@@U@ysA@icA@ @y@Y@@S@3@@o@@6@@3########@n8@A&*T+JAH@@< > The functions used to retrieve information from a signature. 9R:R@@@@@@@\`@@@@@@@P@@@@@@@@@v-first_specialdd@б@гƠ&stringee@@ @@@3@8@A@@б@гנ&string ee@@ @@@@@В@г#intee@@ @@@"@@@г&option-e.e @гx$info*Odoc_types;e<e@ ?e@e@@@@@@D @@@ @@@I@@@@/@ @@P4$@@@E @@SHUe@@@Z@@W]@@@[d@" [first_special file str] return the pair ([length], [info_opt]) where [info_opt] is the first optional special comment found in [str]. [length] is the number of chars from the beginning of [str] to the end of the special comment. h`ic@@@@@@@Q@@@2|@@@@@@v,get_comments kCKkCW@б@б@г$text*Odoc_typeslZclZm@ lZnlZr@@@@@@3@C@A @@А!a@D@ lZvlZx@@@ @@@@б@г~&stringlZ}lZ@@ @@@@@б@г&stringlZlZ@@ @@@.@@В@г0&optionlZlZ@г$info*Odoc_typeslZlZ@ lZlZ@@@@@@R @@@ @@@W@@@гt$listlZlZ@А!aag lZ lZ@@@g@@@n @@@@ @ @@u.@@@M @@xP lZ@@@`@@|c@@@q@@ lZb@@@ kCG @䐠 ) Return a pair [(comment_opt, element_comment_list)], where [comment_opt] is the last special comment found in the given string and not followed by a blank line, and [element_comment_list] the list of values built from the other special comments found and the given function.  *g +j B@@@@@@@ CR@@@ >@@@@@@@Y@9@t@T@(@@3 @ @ @ @ @ @ @ @@*@A 3 C C C C C C C C@@A HN In@@ Z A Functions to retrieve simple and special comments from strings.  WLJJ XLJ@@@@@@@ ZM@3 X X X X X X X X@@A@.analyze_alertsp ep fp@б@г̠&option pq qq@г$info*Odoc_types ~q q@  q q@@@@@@3        @$H>@T@4@<@|@@]LK@KK@@@K@K@HY@A$@@@9 @@@)6@@б@г)Parsetree*attributes)Parsetree q q@  q q@@@@@@h8 @@г $&option q q@г$info*Odoc_types q q@  q q@@@@@@iX @@@ @@@k]@@@+@@l`3 @@@I@@mcn#@@@ p&@ q Parse alerts from attributes and update the info. Always returns [Some _] if the attributes contain alerts.  r sm@@@@@@@ V@@6@ @@@@@@(AnalyserE u u@ -i@@Т@@ (Рܠ.Info_retriever "v #v@3 " " " " " " " "@;@A@@Б$fileq 3y * 4y .@г#ref <y 8 =y ;@г &string Fy 1 Gy 7@@ @@@n3 H H H H H H H H@&@A@@@@@@p @@@ Ty &@ R This variable is used to load a file as a string and retrieve characters from it. ax bx@@@@@@@ zW@@(@+ u@@@@@@%)file_namer x|is y|i|@г#ref |i |i@г U&string |i |i@@ @@@q3        @lc@@A@@@ @@@s @@@ |io@a The name of the analysed file.  {=C {=h@@@@@@@ X@@)@q @@@@@@&2get_string_of_files | |@б@г #int | |@@ @@@t3        @?\8@A@@б@г #int | |@@ @@@u@@г &string | |@@ @@@v@@@@@w!@@@'@@x$* @@@ |@ This function takes two indexes (start and end) and returns the string corresponding to the indexes in the file global variable. The function prepare_file must have been called to fill the file global variable. ~ ,{@@@@@@@ Y@@@ @@@@@@C,prepare_filet #- #9@б@г &string $#< %#B@@ @@@y3 & & & & & & & &@\q8@A@@б@г &string 5#F 6#L@@ @@@z@@г 점$unit B#P C#T@@ @@@{@@@@@|!@@@'@@}$* @@@ P#)@  f [prepare_file f input_f] sets [file_name] with [f] and loads the file [input_f] into [file]. ] ^"@@@@@@@ vZ@@@ ' q@@@@@@C(preamble t u@б@г I&string  @@ @@@~3        @\q8@A@@б@г Z&string  @@ @@@@@б@б@А!a@F@  @@г(Location!t(Location  @   @@@@@@8 @@@"@@; @@б@г B$list  @А!a2K  @@@8@@@R @@В@г #int  @@ @@@c@@@г M&option ( .@г<$info*Odoc_types  "@  # '@@@@@@ @@@ @@@@@@@/@ @@4$@@@F @@I'@@@^@@ +@@@@@.@@@@@1@@@ %4@ 쐠 _ [preamble f input_f loc ast ] retrieves the position and contents of the preamble for the file [f]: i.e, the first documentation comment before any elements in [ast]. If there is no such preamble, [0,None] is returned. The function [loc] is used to obtain the location of this first element of [ast]. 2V\ 3@@@@@@@ K[@@D@  F@@@@@@5get_comments_in_classѠ Ioy Jo@б@г (#int To Uo@@ @@@3 V V V V V V V V@8@A@@б@г 9#int eo fo@@ @@@@@В@г Ҡ&option v w@г$info*Odoc_types  @   @@@@@@5 @@@ @@@:@@@г $list  @г*Odoc_class-class_element*Odoc_class  @   @@@@@@^ @@@"@@@c@@@@2@ @@j@&@@@_ @@mb @@@t@@qw@@@ ou@ 3 The function used to get the comments in a class.  06 0n@@@@@@@ \@@@  @@@@@@6get_comments_in_module  !+ !A@б@г Р#int !D !G@@ @@@3        @8@A@@б@г ᠐#int !K !N@@ @@@@@В@г z&option Rk Rq@гi$info*Odoc_types ,R[ -Re@  0Rf 1Rj@@@@@@5 @@@ @@@:@@@г $list ER FR@г+Odoc_module.module_element+Odoc_module URt VR@  YR ZR@@@@@@^ @@@"@@@c@@@@2@ @@j@&@@@_ @@mb oR@@@t@@qw@@@ u!'@ < 4 The function used to get the comments in a module.    @@@@@@@ ]@@@ L @@@@@@;name_comment_from_type_decl   @б@г x#int  @@ @@@3        @8@A@@б@г #int  @@ @@@@@б@г0type_declaration)Parsetree  @   @@@@@@) @@В@г #int  @@ @@@:@@@г f$list   @В@г Š&string  @@ @@@W@@@г f&option  @гU$info*Odoc_types@ @@@@@@y @@@ @@@~@@@@/@ @@4$@@@I @@@4G@@@@Y@ @@^N@@@o @@wQ@@@@@T@@@@@W@@@GZ@   [name_comment_from_type_kind pos_end pos_limit type_kind]. This function takes a [Parsetree.type_kind] and returns the list of (name, optional comment) for the various fields/constructors of the type, or an empty list for an abstract type. [pos_end] is last char of the complete type definition. [pos_limit] is the position of the last char we could use to look for a comment, i.e. usually the beginning of the next element.TUF@@@@@@@m^@@j@ h@@@@@@2manifest_structure*kl@б@г(Odoc_env#env(Odoc_env|}@ @@@@@@3@C@A @@б@г $list@В@гj&string@@ @@@@@@г &option@г$info*Odoc_types @  @@@@@@A @@@ @@@F@@@@/@ @@M4$@@@I @@@RG@@б@г )type_expr%Types+0@ 1:@@@@@@k @@г)Odoc_type-type_manifest)Odoc_type>G@ HU@@@@@@# @@@@@$& @@@;@@%7 @@@@@&@@@@ ܐ This function converts a [Types.type_expr] into a [Odoc_type.type_kind], by associating the comment found in the parsetree of each object field, if any. " #`@@@@@@@;_@@"@ 6@@@@@@-get_type_kind+9  :  !@б@г#env(Odoc_envH $ .I $ 6@ L $ 7M $ :@@@@@@'3OOOOOOOO@A@A @@б@гנ$list^ $ `_ $ d@В@г6&stringl $ ?m $ E@@ @@@(@@@гנ&option{ $ X| $ ^@г$info*Odoc_types $ H $ R@  $ S $ W@@@@@@)A @@@ @@@+F@@@@/@ @@,M4$@@@I @@@.R $ >G@@б@г .type_decl_kind%Types h t h y@  h z h @@@@@@/k @@г)type_kind)Odoc_type h  h @  h  h @@@@@@0 @@@@@1$ @@@9@@25 @@@@@3@@@  @ This function converts a [Types.type_kind] into a [Odoc_type.type_kind], by associating the comment found in the parsetree of each constructor/field, if any.W] @@@@@@@`@@"@ @@@@@@-get_cstr_args!s!}!s!@б@г#env(Odoc_env!!!!@ !!!!@@@@@@43@A@A @@б@г#int(!!)!!@@ @@@5@@б@г)Typedtree5constructor_arguments)Typedtree=!!>!!@ A!!B!!@@@@@@%+ @@гV0constructor_args)Odoc_typeS!!T!!@ W!!X!!@@@@@@%A @@@@@%D$ @@@9@@&G< @@@M@@&JU@@@i!s!y@0 This function converts a [Types.constructor_arguments] into a [Odoc_type.constructor_args], by associating the comment found in the parsetree of each inner record field, if any.v  w!2!r@@@@@@@d@@"@@@@@@@@i+merge_infos"2"<"2"G@б@г&option"J"d"J"j@г $info*Odoc_types"J"T"J"^@ "J"_"J"c@@@@@@&3@K@A @@@" @@@&@@б@г&option"J"~"J"@г $info*Odoc_types"J"n"J"x@ "J"y"J"}@@@@@@&) @@@ @@@&.@@гB&option""""@г 1$info*Odoc_types""""@ """"@@@@@@&N @@@ @@@& S@@@,@@& V8 @@@V@@& Yd#@@@ "2"8&@Ӑ 4 This function merges two optional info structures. !!!"1@@@@@@@2e@@6@-@@@@@@x8analyse_module_type_kind٠0##1##*@б&erasedг)Odoc_name#Map!t)Odoc_nameG#p#H#p#@ K#p#L#p#@@P#p#Q#p#@ @з+Constrained\#-#A]#-#M@@гߠ$listf#-#kg#-#o@г/with_constraint)Parsetreet#-#Qu#-#Z@ x#-#[y#-#j@@@@@@(3{{{{{{{{@v@A @@@" @@@(@@@+ @@'Removed#p##p#@A@@@@@@Р @>@@@(A@@@(#-#?#p#@@@h@@@)$R@@б@г6#env(Odoc_env####@ ####@@@@@@)< @@б@г!t)Odoc_name####@ ####@@@@@@)T @@б@г,+module_type)Parsetree####@ ####@@@@@@)l @@б@г0+module_type%Types####@ ###$@@@@@@) @@г0module_type_kind+Odoc_module$$$$@ $$$$/@@@@@@) @@@@@)$ @@@7@@)? @@@R@@)Z@@@m@@) u@@@@@)  @@) -#-#7@@ @0##@ P Return a module_type_kind from a Parsetree.module_type and a Types.module_type ="">"#@@@@@@@Vf@@.@Q@@@@@@7analyse_class_type_kindڠT$$U$$@б@г#env(Odoc_envc$$d$$@ g$$h$$@@@@@@) 3jjjjjjjj@CA@A @@б@г;!t)Odoc_name}$$~$$@ $$$$@@@@@@)  @@б@гe#int$$$$@@ @@@))@@б@г*class_type)Parsetree$$$$@ $$$%@@@@@@)A @@б@г*class_type%Types$%$% @ $% $%@@@@@@)Y @@г'/class_type_kind*Odoc_class%%%%%/@ %%0%%?@@@@@@)o @@@@@)r$ @@@7@@)u? @@@R@@)xU@@@d@@){l@@@@@)~@@@$$@ ` Analysis of a Parsetree.class_type and a Types.class_type to return a class_type_kind.$1$7$x$@@@@@@@g@@(@@@@@@@1analyse_signature۠&&&&@б@г砐&string&&&&@@ @@@)3@8@A@@б@г&string.&&/&&@@ @@@)@@б@г )signature)ParsetreeA&&B&&@ E&&F&&@@@@@@)) @@б@г)signature%TypesY&&Z&'@ ]&'^&' @@@@@@)A @@г(t_module+Odoc_moduleo&'p&'@ s&'t&'#@@@@@@)W @@@@@)Z$ @@@7@@)]? @@@R@@)`U@@@f@@)ci@@@&&@O V This function takes an interface file name, a file containing the code, a parse tree and the signature obtained from the compiler. It goes through the parse tree, creating values for encountered functions, modules, ..., looking in the source file for comments, and in the signature for types information. %A%G&k&@@@@@@@h@@%@_@@@@@@@ w T@ 4 @@^@>@k@?@o@O@@S@3@@p@<@@3@>@A!3@ @Aw'$'+@@@  @@@u@ @@J@  Q D@@   ? } @ w @ @@ @@@3@  @@ đ  @ r N@ .@@|@#@}@]@@@@q@@@z@@@4 @A@ H************************************************************************A@@A@L@ H  BMM BM@ H OCaml CC@ H DD3@ H Maxence Guesdon, projet Cristal, INRIA Rocquencourt E44E4@ H "F#F@ H Copyright 2001 Institut National de Recherche en Informatique et (G)G@ H en Automatique. .H/Hg@ H 4Ihh5Ih@ H All rights reserved. This file is distributed under the terms of :J;J@ H the GNU Lesser General Public License version 2.1, with the @KAKN@ H special exception on linking described in the file LICENSE. FLOOGLO@ H LMMM@ H************************************************************************RNSN5@ d* The module for analysing a signature and source code and creating modules, classes, ..., elements.X ?* The functions used to retrieve information from a signature. " f* Create a table from a signature. This table is used by some of the search functions below.  * This function returns the type expression for the value whose name is given, in the given signature. @raise Not_found if error. * This function returns the Types.extension_constructor for the extension whose name is given, in the given table. @raise Not_found if error.T * This function returns the Types.type_declaration for the type whose name is given, in the given table. @raise Not_found if error. * This function returns the Types.class_declaration for the class whose name is given, in the given table. @raise Not_found if error. * This function returns the Types.class_type_declaration for the class type whose name is given, in the given table. @raise Not_found if error.1 * This function returns the Types.module_type for the module whose name is given, in the given table. @raise Not_found if error.Р * This function returns the optional Types.module_type for the module type whose name is given, in the given table. @raise Not_found if error.` * This function returns the Types.type_expr for the given val name in the given class signature. @raise Not_found if error.䠠 * This function returns the Types.type_expr for the given method name in the given class signature. @raise Not_found if error.z B* Functions to retrieve simple and special comments from strings.  % * Return the couple [(n, list)] where [n] is the number of characters read to retrieve [list], which is the list of special comments found in the string.  9* Return true if the given string contains a blank line.  6 * [just_after_special file str] return the pair ([length], [info_opt]) where [info_opt] is the first optional special comment found in [str], without any blank line before. [length] is the number of chars from the beginning of [str] to the end of the special comment.  * [first_special file str] return the pair ([length], [info_opt]) where [info_opt] is the first optional special comment found in [str]. [length] is the number of chars from the beginning of [str] to the end of the special comment.  ** Return a pair [(comment_opt, element_comment_list)], where [comment_opt] is the last special comment found in the given string and not followed by a blank line, and [element_comment_list] the list of values built from the other special comments found and the given function.  a r* Parse alerts from attributes and update the info. Always returns [Some _] if the attributes contain alerts.  S* This variable is used to load a file as a string and retrieve characters from it. 0 !* The name of the analysed file.  * This function takes two indexes (start and end) and returns the string corresponding to the indexes in the file global variable. The function prepare_file must have been called to fill the file global variable. g* [prepare_file f input_f] sets [file_name] with [f] and loads the file [input_f] into [file]. = `* [preamble f input_f loc ast ] retrieves the position and contents of the preamble for the file [f]: i.e, the first documentation comment before any elements in [ast]. If there is no such preamble, [0,None] is returned. The function [loc] is used to obtain the location of this first element of [ast].k 4* The function used to get the comments in a class. Ơ 5* The function used to get the comments in a module. ! * [name_comment_from_type_kind pos_end pos_limit type_kind]. This function takes a [Parsetree.type_kind] and returns the list of (name, optional comment) for the various fields/constructors of the type, or an empty list for an abstract type. [pos_end] is last char of the complete type definition. [pos_limit] is the position of the last char we could use to look for a comment, i.e. usually the beginning of the next element.R * This function converts a [Types.type_expr] into a [Odoc_type.type_kind], by associating the comment found in the parsetree of each object field, if any.  * This function converts a [Types.type_kind] into a [Odoc_type.type_kind], by associating the comment found in the parsetree of each constructor/field, if any. * This function converts a [Types.constructor_arguments] into a [Odoc_type.constructor_args], by associating the comment found in the parsetree of each inner record field, if any.9 5* This function merges two optional info structures.  Q* Return a module_type_kind from a Parsetree.module_type and a Types.module_type x a* Analysis of a Parsetree.class_type and a Types.class_type to return a class_type_kind. W* This function takes an interface file name, a file containing the code, a parse tree and the signature obtained from the compiler. It goes through the parse tree, creating values for encountered functions, modules, ..., looking in the source file for comments, and in the signature for types information. &@,./ocamlc.opt)-nostdlib"-I(./stdlib"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I(ocamldoc"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c S/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores <10/.-,+*)('&%$#"! @@0ƭx%? F4 k33@ @@(Asttypes0>n{T8cئ5Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ*Cmi_format0c˯7͗ԩmݠ*Data_types0I'Ue`wq]Ѡ#Env0zV L{YWI*Format_doc0]mWϓ:Mݠ%Ident0">WA+9*X,Identifiable0 {d\FX'`)Load_path0I@18 ~(Location0a7cK_H%9)Longident0s `7mɕc$Misc0ob]6>Vê>0_"#C{0*"z1+W.Odoc_exception0>@ӽX4Id.Odoc_extension0?*sR(6]!$.0z8P*%"e$Path0Y2kf֯J._Ϡ)Primitive0²~$xzT෠%Shape0oNՄBH&Stdlib0Lku]8_٠.Stdlib__Buffer08APF< t..Stdlib__Digest0l!LHgErζ .Stdlib__Domain0:M;׉<O$Ġ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ܚ#G7m|/Stdlib__Hashtbl0ѱN][/!,Stdlib__Lazy0* -S$.)"0D.Stdlib__Lexing0e<.V +Stdlib__Map0L5xE|O0~,J-.Stdlib__Result06 ]/J+Stdlib__Seq0nwzG&amg+Stdlib__Set0\$;7 .Stdlib__String0s.Type_immediacy0A^abOhՠĐ0@@C@@ѐL  ݰ bf@@P@/{@-@f @@@ Y @@  @@P@@