Caml1999I031G-Odoc_comments,simple_blank_&stringO@@@@1odoc_comments.mliRUURUn@@@@&Texter`.text_of_stringd@@@@*Odoc_types$text@@@@@@X X(@@/A@@@#U$Y).@3B@Ӡ4Basic_info_retrievera@9blank_line_outside_simplee@:@@@@@@@@$boolE@@@@@@@@D_E`@@TC@+all_specialf@U@@@@[@@@#intA@@@Ҡ$listIR$info@@@@@@@@@@@@@pccgqcc@@D@2just_after_specialg@@@@@@@@,@@@ڠ&optionJ|$info@@@@@@@@@@@@@ij(@@E@-first_specialh@@@@@@@@V@@@*$info@@@@@@@@@@@@@p 0 4q H @@F@,get_commentsi@@$text@@@!a@@@@@@@@@@@[$info@@@@@@#@@@@@@@@@@@@w  y  -@@ G@@@\ff{ / 4@ H@@.info_of_stringb@@@@$info@@@@@@B  B  5@@"I@4info_of_comment_filec@+Odoc_module(t_module@@@@@@@2@@@$info@@@@@@@@6K  7L  @@FJ@@It-Odoc_comments0#OLM40(Warnings0Ӷ.5S6V%Types0AF3Ai4.Type_immediacy0Xp '-Stdlib__Uchar0 |K?bޣ ˠ.Stdlib__String0L%BWx:6+Stdlib__Set0PSVl8 ;+Stdlib__Seq0yt\eǟ&Q,}+Stdlib__Map0ҭfȨ؜ׇ0,Stdlib__List0E &xa.Stdlib__Lexing0zsc\ZoQ,Stdlib__Lazy0'rruSZY/Stdlib__Hashtbl0!z9ϸ@`VǠ.Stdlib__Format0=z+.m׸.Stdlib__Either0 }rCT0J){9).Stdlib__Digest0@~8x2.Stdlib__Buffer0'ON͋[h#ڗA&Stdlib0>,W:(%Shape0-#\wz5)Primitive0.>}7Fmd*ՠ$Path0"nA_8K 1)Parsetree03p雲Ҳ$+Outcometree0xHU ͧTƠ*Odoc_value0](L8.ђH*Odoc_types0qТ4c)Odoc_type0Ig@;sDphX.Odoc_parameter0OTQ͓5ų#à)Odoc_name07k纤᮵o?+Odoc_module0Vj>S q)Odoc_misc0+[۶r0J.Odoc_extension0^ z $G:A.Odoc_exception0ǕF/!LѠ*Odoc_class0B=1B kKF$Misc0KH(1Xk5o\)Longident0{C 3C(Location0>gc 7پI{YG,Identifiable0g+AbڀO"q,%Ident0T;~-1ѡ0CamlinternalLazy0G -Ϥ;I8CamlinternalFormatBasics0cEXyRUe@г&stringFRUhGRUn@@ @@@H@@@NRUU@@e@@ @@Nб&TexterAYUZU@Б.text_of_stringgXhX @б@гϠ&stringrXsX@@ @@@0tssttttt@s@-@A@@г*Odoc_types$text*Odoc_typesXX(@@@@@\@@@@@]@@@X @)ocaml.doc ( Return a text structure from a string. WW@@@@@@@A@@,@B@@0@/D@A0@1@AVY).@@ 3 The type of modules in argument to Info_retriever TppTp@@@@@@@U@0@D@A@4Basic_info_retriever$B\fm\f@@Б9blank_line_outside_simple__@б@г<&string``@@ @@@^0@n\@@?2B@A @@б@гS&string``@@ @@@_@@гҠ$bool` `@@ @@@`$@@@@@a'@@@-@@b*0 @@@_@ 8 Return true if the given string contains a blank line. ^^@@@@@@@5C@@=+all_special )cck*ccv@б@г&string4ccy5cc@@ @@@c065566666@Vk,@A@@б@г&stringEccFcc@@ @@@d@@Вг#intUccVcc@@ @@@e!@@г$listcccdcc@г$info*Odoc_typespccqcc@@ @@@f<@@@@@@hA @@@' @@iF+@@@;@@jI>@@@O@@kLR"@@@ccg%@ G This function retrieves all the special comments in the given string. bbb@@@@@@@D@4@_2just_after_special!ii@б@г&stringjj@@ @@@l0@x,@A@@б@г&stringjj@@ @@@m@@Вгv#intj j@@ @@@n!@@гN&optionj"j(@гc$info*Odoc_typesjj!@@ @@@o<@@@@@@qA @@@' @@rF+@@@;@@sI>@@@O@@tLR"@@@i%@n  [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.  e h@@@@@@@#E@4@_-first_special"p 0 8p 0 E@б@г&string"q H P#q H V@@ @@@u0$##$$$$$@x,@A@@б@г&string3q H Z4q H `@@ @@@v@@Вг#intCq H dDq H g@@ @@@w!@@гŠ&optionQq H zRq H @г$info*Odoc_types^q H j_q H y@@ @@@x<@@@@@@zA @@@' @@{F+@@@;@@|I>@@@O@@}LR"@@@vp 0 4%@吠 [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. l*.o /@@@@@@@F@4@_,get_comments#w  w  @б@б@г$text*Odoc_typesx  x  @@ @@@~0@}1@A@@А!a@C@ x  x  @@@ @@@@б@г&stringy  y  @@ @@@@@б@г)&stringy  y  @@ @@@.@@ВгP&optiony  y  #@гe$info*Odoc_typesy  y  @@ @@@K@@@@@@P @@г$listy  )y  -@А!aY_y  &y  (@@@_@@@f @@@ @@k&@@@C@@nF@@@U@@qX@@@f@@tx  @@@w  @ ) 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. 's  (v | @@@@@@@?G@.@@]@ @4@ @@@021122222@@A 054455555@T@A:];{ / 4@@ 0 The basic module for special comments analysis.G[00H[0e@@@@@@@J\ff@@.info_of_string%TB  UB  @б@г&string_B  `B  "@@ @@@0a``aaaaa@@[@G@q@]@Y@@6)H@A@@г$info*Odoc_types~B  &B  5@@ @@@@@@%@@"(@@@B   @ [info_of_string s] parses the given string like a regular ocamldoc comment and return an {!Odoc_types.info} structure. @return an empty structure if there was a syntax error. TODO: change this } 6 6A  @@@@@@@I@@54info_of_comment_file]K  K  @б@гA$listL  L  @г+Odoc_module(t_module+Odoc_moduleL  L  @@@@@ W0@]r;@A@@@ @@@ Y @@б@г.&stringL  L  @@ @@@ Z@@г]$info*Odoc_typesL  L  @@ @@@ [&@@@@@ \)@@@)@@ ],2 @@@K  @^ C [info_of_comment_file file] parses the given file and return an {!Odoc_types.info} structure. The content of the file must have the same syntax as the content of a special comment. The given module list is used for cross reference. @raise Failure if the file could not be opened or there is a syntax error. D 7 7J } @@@@@@@J@@?@@^YL@E@@@@o@@0      @Mq!@A@ H************************************************************************A@@A@L@ H BMMBM@ H OCaml CC@ H $D%D3@ H Maxence Guesdon, projet Cristal, INRIA Rocquencourt *E44+E4@ H 0F1F@ H Copyright 2001 Institut National de Recherche en Informatique et 6G7G@ H en Automatique. gc 7پI{YG)Longident0{C 3C$Misc0KH(1Xk5o\*Odoc_class0B=1B kKF0#OLM40.Odoc_exception0ǕF/!LѠ.Odoc_extension0^ z $G:A)Odoc_misc0+[۶r0JM0Vj>S q)Odoc_name07k纤᮵o?.Odoc_parameter0OTQ͓5ų#à)Odoc_type0Ig@;sDphX0qТ4c*Odoc_value0](L8.ђH+Outcometree0xHU ͧTƠ)Parsetree03p雲Ҳ$$Path0"nA_8K 1)Primitive0.>}7Fmd*ՠ%Shape0-#\wz5&Stdlib0>,W:(.Stdlib__Buffer0'ON͋[h#ڗA.Stdlib__Digest0@~8x2.Stdlib__Either0 }rCT0J){9).Stdlib__Format0=z+.m׸/Stdlib__Hashtbl0!z9ϸ@`VǠ,Stdlib__Lazy0'rruSZY.Stdlib__Lexing0zsc\ZoQ,Stdlib__List0E &xa+Stdlib__Map0ҭfȨ؜ׇ0+Stdlib__Seq0yt\eǟ&Q,}+Stdlib__Set0PSVl8 ;.Stdlib__String0L%BWx:6-Stdlib__Uchar0 |K?bޣ ˠ.Type_immediacy0Xp '%Types0AF3Ai4(Warnings0Ӷ.5S6V@0#OLM40AK@@@@$M@@@@IH@@@zy@@@@sr@@@P@