Spart.xml 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668
  1. <?xml version="1.0"?>
  2. <doc>
  3. <assembly>
  4. <name>Spart</name>
  5. </assembly>
  6. <members>
  7. <member name="T:Spart.Actions.ActionEventArgs">
  8. <summary>
  9. Action event argument class
  10. </summary>
  11. </member>
  12. <member name="M:Spart.Actions.ActionEventArgs.#ctor(Spart.Parsers.ParserMatch)">
  13. <summary>
  14. Construct a new event argument instance
  15. </summary>
  16. <param name="match"></param>
  17. </member>
  18. <member name="M:Spart.Actions.ActionEventArgs.#ctor(Spart.Parsers.ParserMatch,System.Object)">
  19. <summary>
  20. Construct a new event argument instance
  21. </summary>
  22. <param name="match"></param>
  23. <param name="typedValue"></param>
  24. </member>
  25. <member name="P:Spart.Actions.ActionEventArgs.Match">
  26. <summary>
  27. The parser match
  28. </summary>
  29. </member>
  30. <member name="P:Spart.Actions.ActionEventArgs.Value">
  31. <summary>
  32. The parser match value
  33. </summary>
  34. </member>
  35. <member name="P:Spart.Actions.ActionEventArgs.TypeValue">
  36. <summary>
  37. The typed parse result
  38. </summary>
  39. </member>
  40. <member name="T:Spart.Actions.ActionHandler">
  41. <summary>
  42. Action handler delegate
  43. </summary>
  44. </member>
  45. <member name="T:Spart.Actions.Actor">
  46. <summary>
  47. Static helper class that creates actors
  48. </summary>
  49. </member>
  50. <member name="M:Spart.Actions.Actor.Append(System.Collections.IList)">
  51. <summary>
  52. Create an actor that append the parse result to a <see cref="T:System.Collections.IList"/>.
  53. </summary>
  54. <param name="list"></param>
  55. <returns></returns>
  56. </member>
  57. <member name="M:Spart.Actions.Actor.Assign(System.Object)">
  58. <summary>
  59. Create an actor that assign the parse result to an object
  60. </summary>
  61. <param name="o"></param>
  62. <returns></returns>
  63. </member>
  64. <member name="M:Spart.Actions.Actor.Throw(System.Exception)">
  65. <summary>
  66. Creates an actor that throws an exception
  67. </summary>
  68. <param name="ex"></param>
  69. <returns></returns>
  70. </member>
  71. <member name="T:Spart.Actions.Actors.AppendActor">
  72. <summary>
  73. Actor that appends parse result to <see cref="T:System.Collections.IList"/>.
  74. </summary>
  75. </member>
  76. <member name="T:Spart.Actions.Actors.IActor">
  77. <summary>
  78. Actor interface
  79. </summary>
  80. </member>
  81. <member name="M:Spart.Actions.Actors.IActor.DoAction(System.Object,Spart.Actions.ActionEventArgs)">
  82. <summary>
  83. Handler method.
  84. <seealso cref="T:Spart.Actions.ActionHandler"/>
  85. <seealso cref="T:Spart.Actions.ActionEventArgs"/>
  86. </summary>
  87. <param name="sender"></param>
  88. <param name="args"></param>
  89. </member>
  90. <member name="T:Spart.Parsers.Composite.DifferenceParser">
  91. <summary>
  92. Summary description for DifferenceParser.
  93. </summary>
  94. </member>
  95. <member name="T:Spart.Parsers.Dirs">
  96. <summary>
  97. Static helper class to create directives
  98. </summary>
  99. </member>
  100. <member name="T:Spart.Parsers.NonTerminal.NonTerminalParser">
  101. <summary>
  102. NonTerminal parser abstract class
  103. </summary>
  104. </member>
  105. <member name="M:Spart.Parsers.NonTerminal.NonTerminalParser.#ctor">
  106. <summary>
  107. Default constructor
  108. </summary>
  109. </member>
  110. <member name="P:Spart.Parsers.NonTerminal.NonTerminalParser.ID">
  111. <summary>
  112. Rule ID, used for debugging
  113. </summary>
  114. </member>
  115. <member name="E:Spart.Parsers.NonTerminal.NonTerminalParser.PreParse">
  116. <summary>
  117. Pre parse event
  118. </summary>
  119. </member>
  120. <member name="E:Spart.Parsers.NonTerminal.NonTerminalParser.PostParse">
  121. <summary>
  122. Post parse event
  123. </summary>
  124. </member>
  125. <member name="M:Spart.Parsers.NonTerminal.NonTerminalParser.OnPreParse(Spart.Scanners.IScanner)">
  126. <summary>
  127. Preparse event caller
  128. </summary>
  129. <param name="scan"></param>
  130. </member>
  131. <member name="M:Spart.Parsers.NonTerminal.NonTerminalParser.OnPostParse(Spart.Parsers.ParserMatch,Spart.Scanners.IScanner)">
  132. <summary>
  133. Post parse event caller
  134. </summary>
  135. <param name="match"></param>
  136. <param name="scan"></param>
  137. </member>
  138. <member name="M:Spart.Parsers.NonTerminal.NonTerminalParser.AddContext(Spart.Parsers.NonTerminal.IParserContext)">
  139. <summary>
  140. Adds event handlers
  141. </summary>
  142. <param name="context"></param>
  143. </member>
  144. <member name="M:Spart.Parsers.NonTerminal.NonTerminalParser.RemoveContext(Spart.Parsers.NonTerminal.IParserContext)">
  145. <summary>
  146. Removes event handlers
  147. </summary>
  148. <param name="context"></param>
  149. </member>
  150. <member name="T:Spart.Parsers.NonTerminal.PreParseEventArgs">
  151. <summary>
  152. Summary description for PostParseEventArgs.
  153. </summary>
  154. </member>
  155. <member name="T:Spart.Parsers.NonTerminal.Rule">
  156. <summary>
  157. A rule is a parser holder.
  158. </summary>
  159. </member>
  160. <member name="M:Spart.Parsers.NonTerminal.Rule.#ctor">
  161. <summary>
  162. Empty rule creator
  163. </summary>
  164. </member>
  165. <member name="M:Spart.Parsers.NonTerminal.Rule.#ctor(Spart.Parsers.Parser)">
  166. <summary>
  167. Creates a rule and assign parser
  168. </summary>
  169. <param name="p"></param>
  170. </member>
  171. <member name="P:Spart.Parsers.NonTerminal.Rule.Parser">
  172. <summary>
  173. Rule parser
  174. </summary>
  175. </member>
  176. <member name="M:Spart.Parsers.NonTerminal.Rule.AssignParser(Spart.Parsers.NonTerminal.Rule,Spart.Parsers.Parser)">
  177. <summary>
  178. Assign a parser to a rule, if r is null, a new rule is created
  179. </summary>
  180. <param name="r"></param>
  181. <param name="p"></param>
  182. <returns></returns>
  183. </member>
  184. <member name="M:Spart.Parsers.NonTerminal.Rule.Parse(Spart.Scanners.IScanner)">
  185. <summary>
  186. Parse the input
  187. </summary>
  188. <param name="scanner"></param>
  189. <returns></returns>
  190. </member>
  191. <member name="M:Spart.Parsers.NonTerminal.Rule.ParseMain(Spart.Scanners.IScanner)">
  192. <summary>
  193. Inner parse method
  194. </summary>
  195. <param name="scanner"></param>
  196. <returns></returns>
  197. </member>
  198. <member name="T:Spart.Parsers.Ops">
  199. <summary>
  200. Static helper class to create new parser operators
  201. </summary>
  202. </member>
  203. <member name="M:Spart.Parsers.Ops.Seq(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  204. <summary>
  205. &gt;&gt; operator
  206. </summary>
  207. <param name="first"></param>
  208. <param name="second"></param>
  209. <returns></returns>
  210. </member>
  211. <member name="M:Spart.Parsers.Ops.Klenee(Spart.Parsers.Parser)">
  212. <summary>
  213. * operators
  214. </summary>
  215. <param name="parser"></param>
  216. <returns></returns>
  217. </member>
  218. <member name="M:Spart.Parsers.Ops.Positive(Spart.Parsers.Parser)">
  219. <summary>
  220. + operator
  221. </summary>
  222. <param name="parser"></param>
  223. <returns></returns>
  224. </member>
  225. <member name="M:Spart.Parsers.Ops.Optional(Spart.Parsers.Parser)">
  226. <summary>
  227. ! operator
  228. </summary>
  229. <param name="parser"></param>
  230. <returns></returns>
  231. </member>
  232. <member name="M:Spart.Parsers.Ops.Alternative(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  233. <summary>
  234. | operator
  235. </summary>
  236. <param name="first"></param>
  237. <param name="second"></param>
  238. <returns></returns>
  239. </member>
  240. <!-- Badly formed XML comment ignored for member "M:Spart.Parsers.Ops.Intersection(Spart.Parsers.Parser,Spart.Parsers.Parser)" -->
  241. <member name="M:Spart.Parsers.Ops.Difference(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  242. <summary>
  243. - operator
  244. </summary>
  245. <param name="first"></param>
  246. <param name="second"></param>
  247. <returns></returns>
  248. </member>
  249. <member name="M:Spart.Parsers.Ops.List(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  250. <summary>
  251. % operator
  252. </summary>
  253. <param name="first"></param>
  254. <param name="second"></param>
  255. <returns></returns>
  256. </member>
  257. <member name="T:Spart.Parsers.Parser">
  258. <summary>
  259. Abstract parser class
  260. </summary>
  261. </member>
  262. <member name="M:Spart.Parsers.Parser.#ctor">
  263. <summary>
  264. Default constructor
  265. </summary>
  266. </member>
  267. <member name="M:Spart.Parsers.Parser.ParseMain(Spart.Scanners.IScanner)">
  268. <summary>
  269. Inner parse method
  270. </summary>
  271. <param name="scan">scanner</param>
  272. <returns>the match</returns>
  273. </member>
  274. <member name="M:Spart.Parsers.Parser.Parse(Spart.Scanners.IScanner)">
  275. <summary>
  276. Outer parse method
  277. </summary>
  278. <param name="scan"></param>
  279. <returns></returns>
  280. </member>
  281. <member name="E:Spart.Parsers.Parser.Act">
  282. <summary>
  283. Action event
  284. </summary>
  285. </member>
  286. <member name="M:Spart.Parsers.Parser.OnAction(Spart.Parsers.ParserMatch)">
  287. <summary>
  288. Action caller method
  289. </summary>
  290. <param name="m"></param>
  291. </member>
  292. <member name="M:Spart.Parsers.Parser.op_UnaryPlus(Spart.Parsers.Parser)">
  293. <summary>
  294. Positive operator
  295. </summary>
  296. <param name="p"></param>
  297. <returns></returns>
  298. </member>
  299. <member name="M:Spart.Parsers.Parser.op_LogicalNot(Spart.Parsers.Parser)">
  300. <summary>
  301. Optional operator
  302. </summary>
  303. <param name="p"></param>
  304. <returns></returns>
  305. </member>
  306. <member name="M:Spart.Parsers.Parser.op_BitwiseOr(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  307. <summary>
  308. Alternative operator
  309. </summary>
  310. <param name="left"></param>
  311. <param name="right"></param>
  312. <returns></returns>
  313. </member>
  314. <member name="M:Spart.Parsers.Parser.op_BitwiseAnd(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  315. <summary>
  316. Intersection operator
  317. </summary>
  318. <param name="left"></param>
  319. <param name="right"></param>
  320. <returns></returns>
  321. </member>
  322. <member name="M:Spart.Parsers.Parser.op_Subtraction(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  323. <summary>
  324. Difference operator
  325. </summary>
  326. <param name="left"></param>
  327. <param name="right"></param>
  328. <returns></returns>
  329. </member>
  330. <member name="M:Spart.Parsers.Parser.op_Modulus(Spart.Parsers.Parser,Spart.Parsers.Parser)">
  331. <summary>
  332. List operator
  333. </summary>
  334. <param name="left"></param>
  335. <param name="right"></param>
  336. <returns></returns>
  337. </member>
  338. <member name="T:Spart.Parsers.ParserMatch">
  339. <summary>
  340. A parser match
  341. </summary>
  342. </member>
  343. <member name="M:Spart.Parsers.ParserMatch.#ctor(Spart.Scanners.IScanner,System.Int64,System.Int32)">
  344. <summary>
  345. Builds a new match
  346. </summary>
  347. <param name="scanner"></param>
  348. <param name="offset"></param>
  349. <param name="length"></param>
  350. </member>
  351. <member name="P:Spart.Parsers.ParserMatch.Scanner">
  352. <summary>
  353. Scanner
  354. </summary>
  355. </member>
  356. <member name="P:Spart.Parsers.ParserMatch.Offset">
  357. <summary>
  358. Offset
  359. </summary>
  360. </member>
  361. <member name="P:Spart.Parsers.ParserMatch.Length">
  362. <summary>
  363. Length
  364. </summary>
  365. </member>
  366. <member name="P:Spart.Parsers.ParserMatch.Value">
  367. <summary>
  368. Extracts the match value
  369. </summary>
  370. </member>
  371. <member name="P:Spart.Parsers.ParserMatch.Success">
  372. <summary>
  373. True if match successfull
  374. </summary>
  375. </member>
  376. <member name="P:Spart.Parsers.ParserMatch.Empty">
  377. <summary>
  378. True if match empty
  379. </summary>
  380. </member>
  381. <member name="M:Spart.Parsers.ParserMatch.Concat(Spart.Parsers.ParserMatch)">
  382. <summary>
  383. Concatenates match with m
  384. </summary>
  385. <param name="m"></param>
  386. </member>
  387. <member name="T:Spart.Parsers.Prims">
  388. <summary>
  389. Static helper class to create primitive parsers
  390. </summary>
  391. </member>
  392. <member name="M:Spart.Parsers.Prims.Ch(System.Char)">
  393. <summary>
  394. Creates a parser that matches a single character
  395. </summary>
  396. <param name="c">character to match</param>
  397. <returns></returns>
  398. </member>
  399. <member name="M:Spart.Parsers.Prims.Str(System.String)">
  400. <summary>
  401. Creates a parser that matches a string
  402. </summary>
  403. <param name="s">string to match</param>
  404. <returns></returns>
  405. </member>
  406. <member name="M:Spart.Parsers.Prims.Range(System.Char,System.Char)">
  407. <summary>
  408. Creates a parser that matches a range of character
  409. </summary>
  410. <param name="first"></param>
  411. <param name="last"></param>
  412. <returns></returns>
  413. </member>
  414. <member name="P:Spart.Parsers.Prims.AnyChar">
  415. <summary>
  416. Creates a parser that matches any character
  417. </summary>
  418. </member>
  419. <member name="P:Spart.Parsers.Prims.Control">
  420. <summary>
  421. Creates a parser that matches control characters
  422. </summary>
  423. </member>
  424. <member name="P:Spart.Parsers.Prims.Digit">
  425. <summary>
  426. Creates a parser that matches digit characters
  427. </summary>
  428. </member>
  429. <member name="P:Spart.Parsers.Prims.Letter">
  430. <summary>
  431. Creates a parser that matches letter characters
  432. </summary>
  433. </member>
  434. <member name="P:Spart.Parsers.Prims.LetterOrDigit">
  435. <summary>
  436. Creates a parser that matches letter or digit characters
  437. </summary>
  438. </member>
  439. <member name="P:Spart.Parsers.Prims.Lower">
  440. <summary>
  441. Creates a parser that matches lower case characters
  442. </summary>
  443. </member>
  444. <member name="P:Spart.Parsers.Prims.Punctuation">
  445. <summary>
  446. Creates a parser that matches punctuation characters
  447. </summary>
  448. </member>
  449. <member name="P:Spart.Parsers.Prims.Separator">
  450. <summary>
  451. Creates a parser that matches separator characters
  452. </summary>
  453. </member>
  454. <member name="P:Spart.Parsers.Prims.Symbol">
  455. <summary>
  456. Creates a parser that matches symbol characters
  457. </summary>
  458. </member>
  459. <member name="P:Spart.Parsers.Prims.Upper">
  460. <summary>
  461. Creates a parser that matches upper case characters
  462. </summary>
  463. </member>
  464. <member name="P:Spart.Parsers.Prims.WhiteSpace">
  465. <summary>
  466. Creates a parser that matches whitespace characters
  467. </summary>
  468. </member>
  469. <member name="P:Spart.Parsers.Prims.Eol">
  470. <summary>
  471. Creates a parser that matches and end of line
  472. </summary>
  473. </member>
  474. <member name="P:Spart.Parsers.Prims.End">
  475. <summary>
  476. Creates a parser that matches the end of the input
  477. </summary>
  478. </member>
  479. <member name="T:Spart.Scanners.IFilter">
  480. <summary>
  481. Input filter interface
  482. </summary>
  483. </member>
  484. <member name="M:Spart.Scanners.IFilter.Filter(System.String)">
  485. <summary>
  486. Converts s to lower string
  487. </summary>
  488. <param name="c"></param>
  489. <returns></returns>
  490. </member>
  491. <member name="M:Spart.Scanners.IFilter.Filter(System.Char)">
  492. <summary>
  493. Converts c to lower char
  494. </summary>
  495. <param name="c"></param>
  496. <returns></returns>
  497. </member>
  498. <member name="T:Spart.Scanners.IScanner">
  499. <summary>
  500. Input scanner interface
  501. </summary>
  502. </member>
  503. <member name="P:Spart.Scanners.IScanner.AtEnd">
  504. <summary>
  505. Return true if all input is consummed
  506. </summary>
  507. </member>
  508. <member name="M:Spart.Scanners.IScanner.Read">
  509. <summary>
  510. Reads one character of the input
  511. </summary>
  512. <returns>true if not at end</returns>
  513. </member>
  514. <member name="M:Spart.Scanners.IScanner.Peek">
  515. <summary>
  516. Current character
  517. </summary>
  518. <returns></returns>
  519. </member>
  520. <member name="P:Spart.Scanners.IScanner.Offset">
  521. <summary>
  522. Scanner cursor position
  523. </summary>
  524. </member>
  525. <member name="M:Spart.Scanners.IScanner.Seek(System.Int64)">
  526. <summary>
  527. Move cursor position to the offset
  528. </summary>
  529. <param name="offset"></param>
  530. </member>
  531. <member name="M:Spart.Scanners.IScanner.Substring(System.Int64,System.Int32)">
  532. <summary>
  533. Extracts a substring of the input
  534. </summary>
  535. <param name="offset"></param>
  536. <param name="length"></param>
  537. <returns></returns>
  538. </member>
  539. <member name="P:Spart.Scanners.IScanner.Filter">
  540. <summary>
  541. Sets the input filter
  542. </summary>
  543. </member>
  544. <member name="P:Spart.Scanners.IScanner.NoMatch">
  545. <summary>
  546. Create a failure match
  547. </summary>
  548. </member>
  549. <member name="P:Spart.Scanners.IScanner.EmptyMatch">
  550. <summary>
  551. Create an empty match
  552. </summary>
  553. </member>
  554. <member name="M:Spart.Scanners.IScanner.CreateMatch(System.Int64,System.Int32)">
  555. <summary>
  556. Create a match out of the intput
  557. </summary>
  558. <param name="offset"></param>
  559. <param name="length"></param>
  560. <returns></returns>
  561. </member>
  562. <member name="T:Spart.Scanners.StringScanner">
  563. <summary>
  564. Scanner acting on a string.
  565. <seealso cref="T:Spart.Scanners.IScanner"/>
  566. </summary>
  567. </member>
  568. <member name="M:Spart.Scanners.StringScanner.#ctor(System.String)">
  569. <summary>
  570. Creates a scanner on the string.
  571. </summary>
  572. <param name="inputString">Input string</param>
  573. <exception cref="T:System.ArgumentNullException">input string is null</exception>
  574. </member>
  575. <member name="M:Spart.Scanners.StringScanner.#ctor(System.String,System.Int64)">
  576. <summary>
  577. Creates a scanner on the string at a specified offset
  578. </summary>
  579. <param name="inputString">Input string</param>
  580. <exception cref="T:System.ArgumentNullException">input string is null</exception>
  581. <exception cref="T:System.ArgumentException">offset if out of range</exception>
  582. </member>
  583. <member name="P:Spart.Scanners.StringScanner.InputString">
  584. <summary>
  585. the input string
  586. </summary>
  587. </member>
  588. <member name="P:Spart.Scanners.StringScanner.Offset">
  589. <summary>
  590. Current offset
  591. </summary>
  592. </member>
  593. <member name="P:Spart.Scanners.StringScanner.AtEnd">
  594. <summary>
  595. true if at the end of the string
  596. </summary>
  597. </member>
  598. <member name="M:Spart.Scanners.StringScanner.Read">
  599. <summary>
  600. Advance the cursor once
  601. </summary>
  602. <returns>true if not at end</returns>
  603. <exception cref="T:System.Exception">If called while AtEnd is true</exception>
  604. </member>
  605. <member name="M:Spart.Scanners.StringScanner.Peek">
  606. <summary>
  607. Current character
  608. </summary>
  609. <returns>character at cursor position</returns>
  610. </member>
  611. <member name="M:Spart.Scanners.StringScanner.Substring(System.Int64,System.Int32)">
  612. <summary>
  613. Extracts a substring
  614. </summary>
  615. <param name="offset"></param>
  616. <param name="length"></param>
  617. <returns></returns>
  618. </member>
  619. <member name="M:Spart.Scanners.StringScanner.Seek(System.Int64)">
  620. <summary>
  621. Moves the cursor to the offset position
  622. </summary>
  623. <param name="offset"></param>
  624. </member>
  625. <member name="P:Spart.Scanners.StringScanner.Filter">
  626. <summary>
  627. Current filter
  628. </summary>
  629. </member>
  630. <member name="P:Spart.Scanners.StringScanner.NoMatch">
  631. <summary>
  632. Failure match
  633. </summary>
  634. </member>
  635. <member name="P:Spart.Scanners.StringScanner.EmptyMatch">
  636. <summary>
  637. Empty match
  638. </summary>
  639. </member>
  640. <member name="M:Spart.Scanners.StringScanner.CreateMatch(System.Int64,System.Int32)">
  641. <summary>
  642. Creates a successful match
  643. </summary>
  644. <param name="offset"></param>
  645. <param name="length"></param>
  646. <returns></returns>
  647. </member>
  648. <member name="T:Spart.Scanners.ToLowerFilter">
  649. <summary>
  650. A to lower input filter
  651. </summary>
  652. </member>
  653. <member name="M:Spart.Scanners.ToLowerFilter.Filter(System.String)">
  654. <summary>
  655. Converts s to lower string
  656. </summary>
  657. <param name="s"></param>
  658. <returns></returns>
  659. </member>
  660. <member name="M:Spart.Scanners.ToLowerFilter.Filter(System.Char)">
  661. <summary>
  662. Converts i to lower i
  663. </summary>
  664. <param name="i"></param>
  665. <returns></returns>
  666. </member>
  667. </members>
  668. </doc>