System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact be296ae3fba22a451b8ecb07e9e82ab79b9c96a0:


0000: 2f 2f 20 4d 73 64 6e 44 6f 63 75 6d 65 6e 74 65  // MsdnDocumente
0010: 72 2e 63 73 20 2d 20 61 20 4d 53 44 4e 2d 6c 69  r.cs - a MSDN-li
0020: 6b 65 20 64 6f 63 75 6d 65 6e 74 65 72 0d 0a 2f  ke documenter../
0030: 2f 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20  / Copyright (C) 
0040: 32 30 30 31 20 20 4b 72 61 6c 20 46 65 72 63 68  2001  Kral Ferch
0050: 2c 20 4a 61 73 6f 6e 20 44 69 61 6d 6f 6e 64 0d  , Jason Diamond.
0060: 0a 2f 2f 0d 0a 2f 2f 20 54 68 69 73 20 70 72 6f  .//..// This pro
0070: 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66  gram is free sof
0080: 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72  tware; you can r
0090: 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61  edistribute it a
00a0: 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0d 0a 2f 2f  nd/or modify..//
00b0: 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65   it under the te
00c0: 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47  rms of the GNU G
00d0: 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69  eneral Public Li
00e0: 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68  cense as publish
00f0: 65 64 20 62 79 0d 0a 2f 2f 20 74 68 65 20 46 72  ed by..// the Fr
0100: 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e  ee Software Foun
0110: 64 61 74 69 6f 6e 3b 20 65 69 74 68 65 72 20 76  dation; either v
0120: 65 72 73 69 6f 6e 20 32 20 6f 66 20 74 68 65 20  ersion 2 of the 
0130: 4c 69 63 65 6e 73 65 2c 20 6f 72 0d 0a 2f 2f 20  License, or..// 
0140: 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29  (at your option)
0150: 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69   any later versi
0160: 6f 6e 2e 0d 0a 2f 2f 0d 0a 2f 2f 20 54 68 69 73  on...//..// This
0170: 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74   program is dist
0180: 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68  ributed in the h
0190: 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c  ope that it will
01a0: 20 62 65 20 75 73 65 66 75 6c 2c 0d 0a 2f 2f 20   be useful,..// 
01b0: 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20  but WITHOUT ANY 
01c0: 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75  WARRANTY; withou
01d0: 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69  t even the impli
01e0: 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0d 0a  ed warranty of..
01f0: 2f 2f 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49  // MERCHANTABILI
0200: 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f  TY or FITNESS FO
0210: 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50  R A PARTICULAR P
0220: 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65  URPOSE.  See the
0230: 0d 0a 2f 2f 20 47 4e 55 20 47 65 6e 65 72 61 6c  ..// GNU General
0240: 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20   Public License 
0250: 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73  for more details
0260: 2e 0d 0a 2f 2f 0d 0a 2f 2f 20 59 6f 75 20 73 68  ...//..// You sh
0270: 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76  ould have receiv
0280: 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  ed a copy of the
0290: 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62   GNU General Pub
02a0: 6c 69 63 20 4c 69 63 65 6e 73 65 0d 0a 2f 2f 20  lic License..// 
02b0: 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20  along with this 
02c0: 70 72 6f 67 72 61 6d 3b 20 69 66 20 6e 6f 74 2c  program; if not,
02d0: 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 46 72   write to the Fr
02e0: 65 65 20 53 6f 66 74 77 61 72 65 0d 0a 2f 2f 20  ee Software..// 
02f0: 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e  Foundation, Inc.
0300: 2c 20 35 39 20 54 65 6d 70 6c 65 20 50 6c 61 63  , 59 Temple Plac
0310: 65 2c 20 53 75 69 74 65 20 33 33 30 2c 20 42 6f  e, Suite 330, Bo
0320: 73 74 6f 6e 2c 20 4d 41 20 20 30 32 31 31 31 2d  ston, MA  02111-
0330: 31 33 30 37 20 20 55 53 41 0d 0a 0d 0a 75 73 69  1307  USA....usi
0340: 6e 67 20 53 79 73 74 65 6d 3b 0d 0a 75 73 69 6e  ng System;..usin
0350: 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74  g System.Collect
0360: 69 6f 6e 73 3b 0d 0a 75 73 69 6e 67 20 53 79 73  ions;..using Sys
0370: 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e  tem.Collections.
0380: 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69 6e 67 20  Generic;..using 
0390: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
03a0: 6e 73 2e 53 70 65 63 69 61 6c 69 7a 65 64 3b 0d  ns.Specialized;.
03b0: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 69  .using System.Di
03c0: 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 75 73 69 6e  agnostics;..usin
03d0: 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 75 73  g System.IO;..us
03e0: 69 6e 67 20 53 79 73 74 65 6d 2e 58 6d 6c 3b 0d  ing System.Xml;.
03f0: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 58 6d  .using System.Xm
0400: 6c 2e 58 50 61 74 68 3b 0d 0a 75 73 69 6e 67 20  l.XPath;..using 
0410: 53 79 73 74 65 6d 2e 58 6d 6c 2e 58 73 6c 3b 0d  System.Xml.Xsl;.
0420: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0430: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a  obalization;....
0440: 75 73 69 6e 67 20 4e 44 6f 63 33 2e 43 6f 72 65  using NDoc3.Core
0450: 3b 0d 0a 75 73 69 6e 67 20 4e 44 6f 63 33 2e 43  ;..using NDoc3.C
0460: 6f 72 65 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d  ore.Reflection;.
0470: 0a 75 73 69 6e 67 20 4e 44 6f 63 33 2e 44 6f 63  .using NDoc3.Doc
0480: 75 6d 65 6e 74 65 72 2e 4d 73 64 6e 2e 6f 6e 6c  umenter.Msdn.onl
0490: 69 6e 65 66 69 6c 65 73 3b 0d 0a 75 73 69 6e 67  inefiles;..using
04a0: 20 4e 44 6f 63 33 2e 44 6f 63 75 6d 65 6e 74 65   NDoc3.Documente
04b0: 72 2e 4d 73 64 6e 2e 6f 6e 6c 69 6e 65 74 65 6d  r.Msdn.onlinetem
04c0: 70 6c 61 74 65 73 3b 0d 0a 75 73 69 6e 67 20 4e  plates;..using N
04d0: 44 6f 63 33 2e 58 6d 6c 3b 0d 0a 0d 0a 6e 61 6d  Doc3.Xml;....nam
04e0: 65 73 70 61 63 65 20 4e 44 6f 63 33 2e 44 6f 63  espace NDoc3.Doc
04f0: 75 6d 65 6e 74 65 72 2e 4d 73 64 6e 0d 0a 7b 0d  umenter.Msdn..{.
0500: 0a 09 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 54  ../// <summary>T
0510: 68 65 20 4d 73 64 6e 44 6f 63 75 6d 65 6e 74 65  he MsdnDocumente
0520: 72 20 63 6c 61 73 73 2e 3c 2f 73 75 6d 6d 61 72  r class.</summar
0530: 79 3e 0d 0a 09 70 75 62 6c 69 63 20 63 6c 61 73  y>...public clas
0540: 73 20 4d 73 64 6e 44 6f 63 75 6d 65 6e 74 65 72  s MsdnDocumenter
0550: 20 3a 20 42 61 73 65 52 65 66 6c 65 63 74 69 6f   : BaseReflectio
0560: 6e 44 6f 63 75 6d 65 6e 74 65 72 0d 0a 09 7b 0d  nDocumenter...{.
0570: 0a 09 09 70 72 69 76 61 74 65 20 65 6e 75 6d 20  ...private enum 
0580: 57 68 69 63 68 54 79 70 65 0d 0a 09 09 7b 0d 0a  WhichType....{..
0590: 09 09 09 43 6c 61 73 73 2c 0d 0a 09 09 09 49 6e  ...Class,.....In
05a0: 74 65 72 66 61 63 65 2c 0d 0a 09 09 09 53 74 72  terface,.....Str
05b0: 75 63 74 75 72 65 2c 0d 0a 09 09 09 45 6e 75 6d  ucture,.....Enum
05c0: 65 72 61 74 69 6f 6e 2c 0d 0a 09 09 09 44 65 6c  eration,.....Del
05d0: 65 67 61 74 65 2c 0d 0a 09 09 09 55 6e 6b 6e 6f  egate,.....Unkno
05e0: 77 6e 0d 0a 09 09 7d 3b 0d 0a 0d 0a 09 09 70 72  wn....};......pr
05f0: 69 76 61 74 65 20 72 65 61 64 6f 6e 6c 79 20 44  ivate readonly D
0600: 69 63 74 69 6f 6e 61 72 79 3c 57 68 69 63 68 54  ictionary<WhichT
0610: 79 70 65 2c 20 73 74 72 69 6e 67 3e 20 6c 6f 77  ype, string> low
0620: 65 72 43 61 73 65 54 79 70 65 4e 61 6d 65 73 3b  erCaseTypeNames;
0630: 0d 0a 09 09 70 72 69 76 61 74 65 20 72 65 61 64  ....private read
0640: 6f 6e 6c 79 20 44 69 63 74 69 6f 6e 61 72 79 3c  only Dictionary<
0650: 57 68 69 63 68 54 79 70 65 2c 20 73 74 72 69 6e  WhichType, strin
0660: 67 3e 20 6d 69 78 65 64 43 61 73 65 54 79 70 65  g> mixedCaseType
0670: 4e 61 6d 65 73 3b 0d 0a 09 09 70 72 69 76 61 74  Names;....privat
0680: 65 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 66  e List<string> f
0690: 69 6c 65 73 54 6f 49 6e 63 6c 75 64 65 20 3d 20  ilesToInclude = 
06a0: 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  new List<string>
06b0: 28 29 3b 0d 0a 0d 0a 09 09 2f 2f 2f 20 3c 73 75  ();....../// <su
06c0: 6d 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 20 49 6e  mmary>..../// In
06d0: 69 74 69 61 6c 69 7a 65 73 20 61 20 6e 65 77 20  itializes a new 
06e0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
06f0: 3c 73 65 65 20 63 72 65 66 3d 22 4d 73 64 6e 44  <see cref="MsdnD
0700: 6f 63 75 6d 65 6e 74 65 72 22 20 2f 3e 0d 0a 09  ocumenter" />...
0710: 09 2f 2f 2f 20 63 6c 61 73 73 2e 0d 0a 09 09 2f  ./// class...../
0720: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 09  // </summary>...
0730: 09 70 75 62 6c 69 63 20 4d 73 64 6e 44 6f 63 75  .public MsdnDocu
0740: 6d 65 6e 74 65 72 28 4d 73 64 6e 44 6f 63 75 6d  menter(MsdnDocum
0750: 65 6e 74 65 72 43 6f 6e 66 69 67 20 63 6f 6e 66  enterConfig conf
0760: 69 67 29 0d 0a 09 09 09 3a 20 62 61 73 65 28 63  ig).....: base(c
0770: 6f 6e 66 69 67 29 0d 0a 09 09 7b 0d 0a 09 09 09  onfig)....{.....
0780: 6c 6f 77 65 72 43 61 73 65 54 79 70 65 4e 61 6d  lowerCaseTypeNam
0790: 65 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  es = new Diction
07a0: 61 72 79 3c 57 68 69 63 68 54 79 70 65 2c 20 73  ary<WhichType, s
07b0: 74 72 69 6e 67 3e 28 29 3b 0d 0a 09 09 09 6c 6f  tring>();.....lo
07c0: 77 65 72 43 61 73 65 54 79 70 65 4e 61 6d 65 73  werCaseTypeNames
07d0: 2e 41 64 64 28 57 68 69 63 68 54 79 70 65 2e 43  .Add(WhichType.C
07e0: 6c 61 73 73 2c 20 22 63 6c 61 73 73 22 29 3b 0d  lass, "class");.
07f0: 0a 09 09 09 6c 6f 77 65 72 43 61 73 65 54 79 70  ....lowerCaseTyp
0800: 65 4e 61 6d 65 73 2e 41 64 64 28 57 68 69 63 68  eNames.Add(Which
0810: 54 79 70 65 2e 49 6e 74 65 72 66 61 63 65 2c 20  Type.Interface, 
0820: 22 69 6e 74 65 72 66 61 63 65 22 29 3b 0d 0a 09  "interface");...
0830: 09 09 6c 6f 77 65 72 43 61 73 65 54 79 70 65 4e  ..lowerCaseTypeN
0840: 61 6d 65 73 2e 41 64 64 28 57 68 69 63 68 54 79  ames.Add(WhichTy
0850: 70 65 2e 53 74 72 75 63 74 75 72 65 2c 20 22 73  pe.Structure, "s
0860: 74 72 75 63 74 75 72 65 22 29 3b 0d 0a 09 09 09  tructure");.....
0870: 6c 6f 77 65 72 43 61 73 65 54 79 70 65 4e 61 6d  lowerCaseTypeNam
0880: 65 73 2e 41 64 64 28 57 68 69 63 68 54 79 70 65  es.Add(WhichType
0890: 2e 45 6e 75 6d 65 72 61 74 69 6f 6e 2c 20 22 65  .Enumeration, "e
08a0: 6e 75 6d 65 72 61 74 69 6f 6e 22 29 3b 0d 0a 09  numeration");...
08b0: 09 09 6c 6f 77 65 72 43 61 73 65 54 79 70 65 4e  ..lowerCaseTypeN
08c0: 61 6d 65 73 2e 41 64 64 28 57 68 69 63 68 54 79  ames.Add(WhichTy
08d0: 70 65 2e 44 65 6c 65 67 61 74 65 2c 20 22 64 65  pe.Delegate, "de
08e0: 6c 65 67 61 74 65 22 29 3b 0d 0a 0d 0a 09 09 09  legate");.......
08f0: 6d 69 78 65 64 43 61 73 65 54 79 70 65 4e 61 6d  mixedCaseTypeNam
0900: 65 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  es = new Diction
0910: 61 72 79 3c 57 68 69 63 68 54 79 70 65 2c 20 73  ary<WhichType, s
0920: 74 72 69 6e 67 3e 28 29 3b 0d 0a 09 09 09 6d 69  tring>();.....mi
0930: 78 65 64 43 61 73 65 54 79 70 65 4e 61 6d 65 73  xedCaseTypeNames
0940: 2e 41 64 64 28 57 68 69 63 68 54 79 70 65 2e 43  .Add(WhichType.C
0950: 6c 61 73 73 2c 20 22 43 6c 61 73 73 22 29 3b 0d  lass, "Class");.
0960: 0a 09 09 09 6d 69 78 65 64 43 61 73 65 54 79 70  ....mixedCaseTyp
0970: 65 4e 61 6d 65 73 2e 41 64 64 28 57 68 69 63 68  eNames.Add(Which
0980: 54 79 70 65 2e 49 6e 74 65 72 66 61 63 65 2c 20  Type.Interface, 
0990: 22 49 6e 74 65 72 66 61 63 65 22 29 3b 0d 0a 09  "Interface");...
09a0: 09 09 6d 69 78 65 64 43 61 73 65 54 79 70 65 4e  ..mixedCaseTypeN
09b0: 61 6d 65 73 2e 41 64 64 28 57 68 69 63 68 54 79  ames.Add(WhichTy
09c0: 70 65 2e 53 74 72 75 63 74 75 72 65 2c 20 22 53  pe.Structure, "S
09d0: 74 72 75 63 74 75 72 65 22 29 3b 0d 0a 09 09 09  tructure");.....
09e0: 6d 69 78 65 64 43 61 73 65 54 79 70 65 4e 61 6d  mixedCaseTypeNam
09f0: 65 73 2e 41 64 64 28 57 68 69 63 68 54 79 70 65  es.Add(WhichType
0a00: 2e 45 6e 75 6d 65 72 61 74 69 6f 6e 2c 20 22 45  .Enumeration, "E
0a10: 6e 75 6d 65 72 61 74 69 6f 6e 22 29 3b 0d 0a 09  numeration");...
0a20: 09 09 6d 69 78 65 64 43 61 73 65 54 79 70 65 4e  ..mixedCaseTypeN
0a30: 61 6d 65 73 2e 41 64 64 28 57 68 69 63 68 54 79  ames.Add(WhichTy
0a40: 70 65 2e 44 65 6c 65 67 61 74 65 2c 20 22 44 65  pe.Delegate, "De
0a50: 6c 65 67 61 74 65 22 29 3b 0d 0a 09 09 7d 0d 0a  legate");....}..
0a60: 0d 0a 09 09 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..../// <summary
0a70: 3e 53 65 65 20 3c 73 65 65 20 63 72 65 66 3d 22  >See <see cref="
0a80: 49 44 6f 63 75 6d 65 6e 74 65 72 22 2f 3e 2e 3c  IDocumenter"/>.<
0a90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 09 09 70 75 62  /summary>....pub
0aa0: 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
0ab0: 69 6e 67 20 4d 61 69 6e 4f 75 74 70 75 74 46 69  ing MainOutputFi
0ac0: 6c 65 0d 0a 09 09 7b 0d 0a 09 09 09 67 65 74 0d  le....{.....get.
0ad0: 0a 09 09 09 7b 0d 0a 09 09 09 09 69 66 20 28 28  ....{......if ((
0ae0: 4d 79 43 6f 6e 66 69 67 2e 4f 75 74 70 75 74 54  MyConfig.OutputT
0af0: 61 72 67 65 74 20 26 20 4f 75 74 70 75 74 54 79  arget & OutputTy
0b00: 70 65 2e 48 74 6d 6c 48 65 6c 70 29 20 3e 20 30  pe.HtmlHelp) > 0
0b10: 29 20 7b 0d 0a 09 09 09 09 09 72 65 74 75 72 6e  ) {.......return
0b20: 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 4d 79   Path.Combine(My
0b30: 43 6f 6e 66 69 67 2e 4f 75 74 70 75 74 44 69 72  Config.OutputDir
0b40: 65 63 74 6f 72 79 2c 0d 0a 09 09 09 09 09 09 4d  ectory,........M
0b50: 79 43 6f 6e 66 69 67 2e 48 74 6d 6c 48 65 6c 70  yConfig.HtmlHelp
0b60: 4e 61 6d 65 20 2b 20 22 2e 63 68 6d 22 29 3b 0d  Name + ".chm");.
0b70: 0a 09 09 09 09 7d 0d 0a 09 09 09 09 72 65 74 75  .....}......retu
0b80: 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28  rn Path.Combine(
0b90: 4d 79 43 6f 6e 66 69 67 2e 4f 75 74 70 75 74 44  MyConfig.OutputD
0ba0: 69 72 65 63 74 6f 72 79 2c 20 22 69 6e 64 65 78  irectory, "index
0bb0: 2e 68 74 6d 6c 22 29 3b 0d 0a 09 09 09 7d 0d 0a  .html");.....}..
0bc0: 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 2f 20 3c 73 75  ..}....../// <su
0bd0: 6d 6d 61 72 79 3e 53 65 65 20 3c 73 65 65 20 63  mmary>See <see c
0be0: 72 65 66 3d 22 49 44 6f 63 75 6d 65 6e 74 65 72  ref="IDocumenter
0bf0: 22 2f 3e 2e 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  "/>.</summary>..
0c00: 09 09 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64  ..public overrid
0c10: 65 20 73 74 72 69 6e 67 20 43 61 6e 42 75 69 6c  e string CanBuil
0c20: 64 28 50 72 6f 6a 65 63 74 20 70 72 6f 6a 65 63  d(Project projec
0c30: 74 2c 20 62 6f 6f 6c 20 63 68 65 63 6b 49 6e 70  t, bool checkInp
0c40: 75 74 4f 6e 6c 79 29 0d 0a 09 09 7b 0d 0a 09 09  utOnly)....{....
0c50: 09 73 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d  .string result =
0c60: 20 62 61 73 65 2e 43 61 6e 42 75 69 6c 64 28 70   base.CanBuild(p
0c70: 72 6f 6a 65 63 74 2c 20 63 68 65 63 6b 49 6e 70  roject, checkInp
0c80: 75 74 4f 6e 6c 79 29 3b 0d 0a 09 09 09 69 66 20  utOnly);.....if 
0c90: 28 72 65 73 75 6c 74 20 21 3d 20 6e 75 6c 6c 29  (result != null)
0ca0: 20 7b 0d 0a 09 09 09 09 72 65 74 75 72 6e 20 72   {......return r
0cb0: 65 73 75 6c 74 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a  esult;.....}....
0cc0: 09 09 09 73 74 72 69 6e 67 20 41 64 64 69 74 69  ...string Additi
0cd0: 6f 6e 61 6c 43 6f 6e 74 65 6e 74 52 65 73 6f 75  onalContentResou
0ce0: 72 63 65 44 69 72 65 63 74 6f 72 79 20 3d 20 4d  rceDirectory = M
0cf0: 79 43 6f 6e 66 69 67 2e 41 64 64 69 74 69 6f 6e  yConfig.Addition
0d00: 61 6c 43 6f 6e 74 65 6e 74 52 65 73 6f 75 72 63  alContentResourc
0d10: 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 09 09 09  eDirectory;.....
0d20: 69 66 20 28 41 64 64 69 74 69 6f 6e 61 6c 43 6f  if (AdditionalCo
0d30: 6e 74 65 6e 74 52 65 73 6f 75 72 63 65 44 69 72  ntentResourceDir
0d40: 65 63 74 6f 72 79 2e 4c 65 6e 67 74 68 20 21 3d  ectory.Length !=
0d50: 20 30 20 26 26 20 21 44 69 72 65 63 74 6f 72 79   0 && !Directory
0d60: 2e 45 78 69 73 74 73 28 41 64 64 69 74 69 6f 6e  .Exists(Addition
0d70: 61 6c 43 6f 6e 74 65 6e 74 52 65 73 6f 75 72 63  alContentResourc
0d80: 65 44 69 72 65 63 74 6f 72 79 29 29 0d 0a 09 09  eDirectory))....
0d90: 09 09 72 65 74 75 72 6e 20 73 74 72 69 6e 67 2e  ..return string.
0da0: 46 6f 72 6d 61 74 28 22 54 68 65 20 41 64 64 69  Format("The Addi
0db0: 74 69 6f 6e 61 6c 20 43 6f 6e 74 65 6e 74 20 52  tional Content R
0dc0: 65 73 6f 75 72 63 65 20 44 69 72 65 63 74 6f 72  esource Director
0dd0: 79 20 7b 30 7d 20 63 6f 75 6c 64 20 6e 6f 74 20  y {0} could not 
0de0: 62 65 20 66 6f 75 6e 64 22 2c 20 41 64 64 69 74  be found", Addit
0df0: 69 6f 6e 61 6c 43 6f 6e 74 65 6e 74 52 65 73 6f  ionalContentReso
0e00: 75 72 63 65 44 69 72 65 63 74 6f 72 79 29 3b 0d  urceDirectory);.
0e10: 0a 0d 0a 09 09 09 73 74 72 69 6e 67 20 45 78 74  ......string Ext
0e20: 65 6e 73 69 62 69 6c 69 74 79 53 74 79 6c 65 73  ensibilityStyles
0e30: 68 65 65 74 20 3d 20 4d 79 43 6f 6e 66 69 67 2e  heet = MyConfig.
0e40: 45 78 74 65 6e 73 69 62 69 6c 69 74 79 53 74 79  ExtensibilitySty
0e50: 6c 65 73 68 65 65 74 3b 0d 0a 09 09 09 69 66 20  lesheet;.....if 
0e60: 28 45 78 74 65 6e 73 69 62 69 6c 69 74 79 53 74  (ExtensibilitySt
0e70: 79 6c 65 73 68 65 65 74 2e 4c 65 6e 67 74 68 20  ylesheet.Length 
0e80: 21 3d 20 30 20 26 26 20 21 46 69 6c 65 2e 45 78  != 0 && !File.Ex
0e90: 69 73 74 73 28 45 78 74 65 6e 73 69 62 69 6c 69  ists(Extensibili
0ea0: 74 79 53 74 79 6c 65 73 68 65 65 74 29 29 0d 0a  tyStylesheet))..
0eb0: 09 09 09 09 72 65 74 75 72 6e 20 73 74 72 69 6e  ....return strin
0ec0: 67 2e 46 6f 72 6d 61 74 28 22 54 68 65 20 45 78  g.Format("The Ex
0ed0: 74 65 6e 73 69 62 69 6c 69 74 79 20 53 74 79 6c  tensibility Styl
0ee0: 65 73 68 65 65 74 20 66 69 6c 65 20 7b 30 7d 20  esheet file {0} 
0ef0: 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 66 6f 75  could not be fou
0f00: 6e 64 22 2c 20 45 78 74 65 6e 73 69 62 69 6c 69  nd", Extensibili
0f10: 74 79 53 74 79 6c 65 73 68 65 65 74 29 3b 0d 0a  tyStylesheet);..
0f20: 0d 0a 09 09 09 69 66 20 28 63 68 65 63 6b 49 6e  .....if (checkIn
0f30: 70 75 74 4f 6e 6c 79 29 20 7b 0d 0a 09 09 09 09  putOnly) {......
0f40: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 09  return null;....
0f50: 09 7d 0d 0a 0d 0a 09 09 09 73 74 72 69 6e 67 20  .}.......string 
0f60: 70 61 74 68 20 3d 20 50 61 74 68 2e 43 6f 6d 62  path = Path.Comb
0f70: 69 6e 65 28 4d 79 43 6f 6e 66 69 67 2e 4f 75 74  ine(MyConfig.Out
0f80: 70 75 74 44 69 72 65 63 74 6f 72 79 2c 0d 0a 09  putDirectory,...
0f90: 09 09 09 4d 79 43 6f 6e 66 69 67 2e 48 74 6d 6c  ...MyConfig.Html
0fa0: 48 65 6c 70 4e 61 6d 65 20 2b 20 22 2e 63 68 6d  HelpName + ".chm
0fb0: 22 29 3b 0d 0a 0d 0a 09 09 09 73 74 72 69 6e 67  ");.......string
0fc0: 20 74 65 6d 70 20 3d 20 50 61 74 68 2e 43 6f 6d   temp = Path.Com
0fd0: 62 69 6e 65 28 4d 79 43 6f 6e 66 69 67 2e 4f 75  bine(MyConfig.Ou
0fe0: 74 70 75 74 44 69 72 65 63 74 6f 72 79 2c 20 22  tputDirectory, "
0ff0: 7e 63 68 6d 2e 74 6d 70 22 29 3b 0d 0a 0d 0a 09  ~chm.tmp");.....
1000: 09 09 74 72 79 20 7b 0d 0a 0d 0a 09 09 09 09 69  ..try {........i
1010: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 70  f (File.Exists(p
1020: 61 74 68 29 29 20 7b 0d 0a 09 09 09 09 09 2f 2f  ath)) {.......//
1030: 69 66 20 77 65 20 63 61 6e 20 6d 6f 76 65 20 74  if we can move t
1040: 68 65 20 66 69 6c 65 2c 20 74 68 65 6e 20 69 74  he file, then it
1050: 20 69 73 20 6e 6f 74 20 6f 70 65 6e 2e 2e 2e 0d   is not open....
1060: 0a 09 09 09 09 09 46 69 6c 65 2e 4d 6f 76 65 28  ......File.Move(
1070: 70 61 74 68 2c 20 74 65 6d 70 29 3b 0d 0a 09 09  path, temp);....
1080: 09 09 09 46 69 6c 65 2e 4d 6f 76 65 28 74 65 6d  ...File.Move(tem
1090: 70 2c 20 70 61 74 68 29 3b 0d 0a 09 09 09 09 7d  p, path);......}
10a0: 0d 0a 09 09 09 7d 20 63 61 74 63 68 20 28 45 78  .....} catch (Ex
10b0: 63 65 70 74 69 6f 6e 29 20 7b 0d 0a 09 09 09 09  ception) {......
10c0: 72 65 73 75 6c 74 20 3d 20 22 54 68 65 20 63 6f  result = "The co
10d0: 6d 70 69 6c 65 64 20 48 54 4d 4c 20 48 65 6c 70  mpiled HTML Help
10e0: 20 66 69 6c 65 20 69 73 20 70 72 6f 62 61 62 6c   file is probabl
10f0: 79 20 6f 70 65 6e 2e 5c 6e 50 6c 65 61 73 65 20  y open.\nPlease 
1100: 63 6c 6f 73 65 20 69 74 20 61 6e 64 20 74 72 79  close it and try
1110: 20 61 67 61 69 6e 2e 22 3b 0d 0a 09 09 09 7d 0d   again.";.....}.
1120: 0a 0d 0a 09 09 09 72 65 74 75 72 6e 20 72 65 73  ......return res
1130: 75 6c 74 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f  ult;....}....../
1140: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 53 65 65 20  // <summary>See 
1150: 3c 73 65 65 20 63 72 65 66 3d 22 49 44 6f 63 75  <see cref="IDocu
1160: 6d 65 6e 74 65 72 22 2f 3e 2e 3c 2f 73 75 6d 6d  menter"/>.</summ
1170: 61 72 79 3e 0d 0a 09 09 70 75 62 6c 69 63 20 6f  ary>....public o
1180: 76 65 72 72 69 64 65 20 76 6f 69 64 20 42 75 69  verride void Bui
1190: 6c 64 28 50 72 6f 6a 65 63 74 20 70 72 6f 6a 65  ld(Project proje
11a0: 63 74 29 0d 0a 09 09 7b 0d 0a 09 09 09 42 75 69  ct)....{.....Bui
11b0: 6c 64 50 72 6f 6a 65 63 74 43 6f 6e 74 65 78 74  ldProjectContext
11c0: 20 62 75 69 6c 64 43 6f 6e 74 65 78 74 20 3d 20   buildContext = 
11d0: 6e 65 77 20 42 75 69 6c 64 50 72 6f 6a 65 63 74  new BuildProject
11e0: 43 6f 6e 74 65 78 74 28 6e 65 77 20 43 75 6c 74  Context(new Cult
11f0: 75 72 65 49 6e 66 6f 28 4d 79 43 6f 6e 66 69 67  ureInfo(MyConfig
1200: 2e 4c 61 6e 67 49 44 29 2c 0d 0a 09 09 09 09 6e  .LangID),......n
1210: 65 77 20 44 69 72 65 63 74 6f 72 79 49 6e 66 6f  ew DirectoryInfo
1220: 28 4d 79 43 6f 6e 66 69 67 2e 4f 75 74 70 75 74  (MyConfig.Output
1230: 44 69 72 65 63 74 6f 72 79 29 2c 20 4d 79 43 6f  Directory), MyCo
1240: 6e 66 69 67 2e 43 6c 65 61 6e 49 6e 74 65 72 6d  nfig.CleanInterm
1250: 65 64 69 61 74 65 73 29 3b 0d 0a 0d 0a 09 09 09  ediates);.......
1260: 74 72 79 20 7b 0d 0a 09 09 09 09 4f 6e 44 6f 63  try {......OnDoc
1270: 42 75 69 6c 64 69 6e 67 53 74 65 70 28 30 2c 20  BuildingStep(0, 
1280: 22 49 6e 69 74 69 61 6c 69 7a 69 6e 67 2e 2e 2e  "Initializing...
1290: 22 29 3b 0d 0a 0d 0a 09 09 09 09 62 75 69 6c 64  ");........build
12a0: 43 6f 6e 74 65 78 74 2e 49 6e 69 74 69 61 6c 69  Context.Initiali
12b0: 7a 65 28 29 3b 0d 0a 0d 0a 09 09 09 09 4f 6e 44  ze();........OnD
12c0: 6f 63 42 75 69 6c 64 69 6e 67 53 74 65 70 28 31  ocBuildingStep(1
12d0: 30 2c 20 22 4d 65 72 67 69 6e 67 20 58 4d 4c 20  0, "Merging XML 
12e0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 2e 2e  documentation...
12f0: 22 29 3b 0d 0a 0d 0a 09 09 09 09 2f 2f 20 57 69  ");........// Wi
1300: 6c 6c 20 68 6f 6c 64 20 74 68 65 20 6e 61 6d 65  ll hold the name
1310: 20 6f 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d   of the file nam
1320: 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  e containing the
1330: 20 58 4d 4c 20 64 6f 63 0d 0a 09 09 09 09 58 6d   XML doc......Xm
1340: 6c 44 6f 63 75 6d 65 6e 74 20 70 72 6f 6a 65 63  lDocument projec
1350: 74 58 6d 6c 20 3d 20 43 72 65 61 74 65 4e 44 6f  tXml = CreateNDo
1360: 63 58 6d 6c 28 70 72 6f 6a 65 63 74 29 3b 0d 0a  cXml(project);..
1370: 09 09 09 09 62 75 69 6c 64 43 6f 6e 74 65 78 74  ....buildContext
1380: 2e 53 65 74 50 72 6f 6a 65 63 74 58 6d 6c 28 70  .SetProjectXml(p
1390: 72 6f 6a 65 63 74 58 6d 6c 2c 20 4d 79 43 6f 6e  rojectXml, MyCon
13a0: 66 69 67 2e 4d 65 72 67 65 41 73 73 65 6d 62 6c  fig.MergeAssembl
13b0: 69 65 73 29 3b 0d 0a 0d 0a 09 09 09 09 4f 6e 44  ies);........OnD
13c0: 6f 63 42 75 69 6c 64 69 6e 67 53 74 65 70 28 33  ocBuildingStep(3
13d0: 30 2c 20 22 4c 6f 61 64 69 6e 67 20 58 53 4c 54  0, "Loading XSLT
13e0: 20 66 69 6c 65 73 2e 2e 2e 22 29 3b 0d 0a 0d 0a   files...");....
13f0: 09 09 09 09 62 75 69 6c 64 43 6f 6e 74 65 78 74  ....buildContext
1400: 2e 73 74 79 6c 65 73 68 65 65 74 73 20 3d 20 53  .stylesheets = S
1410: 74 79 6c 65 53 68 65 65 74 43 6f 6c 6c 65 63 74  tyleSheetCollect
1420: 69 6f 6e 2e 4c 6f 61 64 53 74 79 6c 65 53 68 65  ion.LoadStyleShe
1430: 65 74 73 28 4d 79 43 6f 6e 66 69 67 2e 45 78 74  ets(MyConfig.Ext
1440: 65 6e 73 69 62 69 6c 69 74 79 53 74 79 6c 65 73  ensibilityStyles
1450: 68 65 65 74 29 3b 0d 0a 0d 0a 09 09 09 09 4f 6e  heet);........On
1460: 44 6f 63 42 75 69 6c 64 69 6e 67 53 74 65 70 28  DocBuildingStep(
1470: 34 30 2c 20 22 47 65 6e 65 72 61 74 69 6e 67 20  40, "Generating 
1480: 48 54 4d 4c 20 70 61 67 65 73 2e 2e 2e 22 29 3b  HTML pages...");
1490: 0d 0a 0d 0a 09 09 09 09 2f 2f 20 73 65 74 75 70  ........// setup
14a0: 20 66 6f 72 20 72 6f 6f 74 20 70 61 67 65 0d 0a   for root page..
14b0: 09 09 09 09 73 74 72 69 6e 67 20 64 65 66 61 75  ....string defau
14c0: 6c 74 54 6f 70 69 63 3b 0d 0a 09 09 09 09 73 74  ltTopic;......st
14d0: 72 69 6e 67 20 72 6f 6f 74 50 61 67 65 46 69 6c  ring rootPageFil
14e0: 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 09  eName = null;...
14f0: 09 09 09 73 74 72 69 6e 67 20 72 6f 6f 74 50 61  ...string rootPa
1500: 67 65 54 4f 43 4e 61 6d 65 20 3d 20 6e 75 6c 6c  geTOCName = null
1510: 3b 0d 0a 0d 0a 09 09 09 09 69 66 20 28 21 53 74  ;........if (!St
1520: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
1530: 74 79 28 4d 79 43 6f 6e 66 69 67 2e 52 6f 6f 74  ty(MyConfig.Root
1540: 50 61 67 65 46 69 6c 65 4e 61 6d 65 29 29 20 7b  PageFileName)) {
1550: 0d 0a 09 09 09 09 09 72 6f 6f 74 50 61 67 65 46  .......rootPageF
1560: 69 6c 65 4e 61 6d 65 20 3d 20 4d 79 43 6f 6e 66  ileName = MyConf
1570: 69 67 2e 52 6f 6f 74 50 61 67 65 46 69 6c 65 4e  ig.RootPageFileN
1580: 61 6d 65 3b 0d 0a 09 09 09 09 09 64 65 66 61 75  ame;.......defau
1590: 6c 74 54 6f 70 69 63 20 3d 20 22 64 65 66 61 75  ltTopic = "defau
15a0: 6c 74 2e 68 74 6d 6c 22 3b 0d 0a 0d 0a 09 09 09  lt.html";.......
15b0: 09 09 72 6f 6f 74 50 61 67 65 54 4f 43 4e 61 6d  ..rootPageTOCNam
15c0: 65 20 3d 20 22 4f 76 65 72 76 69 65 77 22 3b 0d  e = "Overview";.
15d0: 0a 09 09 09 09 09 2f 2f 20 77 68 61 74 20 74 6f  ......// what to
15e0: 20 63 61 6c 6c 20 74 68 65 20 74 6f 70 20 70 61   call the top pa
15f0: 67 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20  ge in the table 
1600: 6f 66 20 63 6f 6e 74 65 6e 74 73 3f 0d 0a 09 09  of contents?....
1610: 09 09 09 69 66 20 28 21 53 74 72 69 6e 67 2e 49  ...if (!String.I
1620: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 4d 79 43  sNullOrEmpty(MyC
1630: 6f 6e 66 69 67 2e 52 6f 6f 74 50 61 67 65 54 4f  onfig.RootPageTO
1640: 43 4e 61 6d 65 29 29 20 7b 0d 0a 09 09 09 09 09  CName)) {.......
1650: 09 72 6f 6f 74 50 61 67 65 54 4f 43 4e 61 6d 65  .rootPageTOCName
1660: 20 3d 20 4d 79 43 6f 6e 66 69 67 2e 52 6f 6f 74   = MyConfig.Root
1670: 50 61 67 65 54 4f 43 4e 61 6d 65 3b 0d 0a 09 09  PageTOCName;....
1680: 09 09 09 7d 0d 0a 09 09 09 09 7d 20 65 6c 73 65  ...}......} else
1690: 20 7b 0d 0a 09 09 09 09 09 2f 2f 20 54 4f 44 4f   {.......// TODO
16a0: 20 28 45 45 29 3a 20 63 68 65 63 6b 20 4d 65 72   (EE): check Mer
16b0: 67 65 41 73 73 65 6d 62 6c 69 65 73 20 61 6e 64  geAssemblies and
16c0: 20 61 64 6a 75 73 74 20 64 65 66 61 75 6c 74 54   adjust defaultT
16d0: 6f 70 69 63 20 61 63 63 6f 72 64 69 6e 67 6c 79  opic accordingly
16e0: 0d 0a 09 09 09 09 09 58 6d 6c 4e 6f 64 65 20 64  .......XmlNode d
16f0: 65 66 61 75 6c 74 4e 61 6d 65 73 70 61 63 65 3b  efaultNamespace;
1700: 0d 0a 09 09 09 09 09 69 66 20 28 4d 79 43 6f 6e  .......if (MyCon
1710: 66 69 67 2e 4d 65 72 67 65 41 73 73 65 6d 62 6c  fig.MergeAssembl
1720: 69 65 73 29 0d 0a 09 09 09 09 09 7b 0d 0a 09 09  ies).......{....
1730: 09 09 09 09 58 6d 6c 4e 6f 64 65 4c 69 73 74 20  ....XmlNodeList 
1740: 6e 61 6d 65 73 70 61 63 65 4e 6f 64 65 73 20 3d  namespaceNodes =
1750: 20 62 75 69 6c 64 43 6f 6e 74 65 78 74 2e 53 65   buildContext.Se
1760: 6c 65 63 74 4e 6f 64 65 73 28 22 2f 6e 64 6f 63  lectNodes("/ndoc
1770: 3a 6e 64 6f 63 2f 6e 64 6f 63 3a 61 73 73 65 6d  :ndoc/ndoc:assem
1780: 62 6c 79 2f 6e 64 6f 63 3a 6d 6f 64 75 6c 65 2f  bly/ndoc:module/
1790: 6e 64 6f 63 3a 6e 61 6d 65 73 70 61 63 65 22 29  ndoc:namespace")
17a0: 3b 0d 0a 09 09 09 09 09 09 69 6e 74 5b 5d 20 69  ;........int[] i
17b0: 6e 64 65 78 65 73 20 3d 20 53 6f 72 74 4e 6f 64  ndexes = SortNod
17c0: 65 73 42 79 41 74 74 72 69 62 75 74 65 28 6e 61  esByAttribute(na
17d0: 6d 65 73 70 61 63 65 4e 6f 64 65 73 2c 20 22 6e  mespaceNodes, "n
17e0: 61 6d 65 22 29 3b 0d 0a 0d 0a 09 09 09 09 09 09  ame");..........
17f0: 64 65 66 61 75 6c 74 4e 61 6d 65 73 70 61 63 65  defaultNamespace
1800: 20 3d 20 6e 61 6d 65 73 70 61 63 65 4e 6f 64 65   = namespaceNode
1810: 73 5b 69 6e 64 65 78 65 73 5b 30 5d 5d 3b 0d 0a  s[indexes[0]];..
1820: 09 09 09 09 09 7d 0d 0a 09 09 09 09 09 65 6c 73  .....}.......els
1830: 65 0d 0a 09 09 09 09 09 7b 0d 0a 09 09 09 09 09  e.......{.......
1840: 09 58 6d 6c 4e 6f 64 65 4c 69 73 74 20 61 73 73  .XmlNodeList ass
1850: 65 6d 62 6c 79 4e 6f 64 65 73 20 3d 20 62 75 69  emblyNodes = bui
1860: 6c 64 43 6f 6e 74 65 78 74 2e 53 65 6c 65 63 74  ldContext.Select
1870: 4e 6f 64 65 73 28 22 2f 6e 64 6f 63 3a 6e 64 6f  Nodes("/ndoc:ndo
1880: 63 2f 6e 64 6f 63 3a 61 73 73 65 6d 62 6c 79 22  c/ndoc:assembly"
1890: 29 3b 0d 0a 09 09 09 09 09 09 69 6e 74 5b 5d 20  );........int[] 
18a0: 61 73 73 65 6d 62 6c 79 49 6e 64 65 78 65 73 20  assemblyIndexes 
18b0: 3d 20 53 6f 72 74 4e 6f 64 65 73 42 79 41 74 74  = SortNodesByAtt
18c0: 72 69 62 75 74 65 28 61 73 73 65 6d 62 6c 79 4e  ribute(assemblyN
18d0: 6f 64 65 73 2c 20 22 6e 61 6d 65 22 29 3b 0d 0a  odes, "name");..
18e0: 09 09 09 09 09 09 58 6d 6c 4e 6f 64 65 20 64 65  ......XmlNode de
18f0: 66 61 75 6c 74 41 73 73 65 6d 62 6c 79 4e 6f 64  faultAssemblyNod
1900: 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 6f 64 65  e = assemblyNode
1910: 73 5b 61 73 73 65 6d 62 6c 79 49 6e 64 65 78 65  s[assemblyIndexe
1920: 73 5b 30 5d 5d 3b 0d 0a 09 09 09 09 09 09 58 6d  s[0]];........Xm
1930: 6c 4e 6f 64 65 4c 69 73 74 20 6e 61 6d 65 73 70  lNodeList namesp
1940: 61 63 65 4e 6f 64 65 73 20 3d 20 62 75 69 6c 64  aceNodes = build
1950: 43 6f 6e 74 65 78 74 2e 53 65 6c 65 63 74 4e 6f  Context.SelectNo
1960: 64 65 73 28 64 65 66 61 75 6c 74 41 73 73 65 6d  des(defaultAssem
1970: 62 6c 79 4e 6f 64 65 2c 20 22 6e 64 6f 63 3a 6d  blyNode, "ndoc:m
1980: 6f 64 75 6c 65 2f 6e 64 6f 63 3a 6e 61 6d 65 73  odule/ndoc:names
1990: 70 61 63 65 22 29 3b 0d 0a 09 09 09 09 09 09 69  pace");........i
19a0: 6e 74 5b 5d 20 69 6e 64 65 78 65 73 20 3d 20 53  nt[] indexes = S
19b0: 6f 72 74 4e 6f 64 65 73 42 79 41 74 74 72 69 62  ortNodesByAttrib
19c0: 75 74 65 28 6e 61 6d 65 73 70 61 63 65 4e 6f 64  ute(namespaceNod
19d0: 65 73 2c 20 22 6e 61 6d 65 22 29 3b 0d 0a 09 09  es, "name");....
19e0: 09 09 09 09 64 65 66 61 75 6c 74 4e 61 6d 65 73  ....defaultNames
19f0: 70 61 63 65 20 3d 20 6e 61 6d 65 73 70 61 63 65  pace = namespace
1a00: 4e 6f 64 65 73 5b 69 6e 64 65 78 65 73 5b 30 5d  Nodes[indexes[0]
1a10: 5d 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09 09  ];.......}......
1a20: 09 73 74 72 69 6e 67 20 64 65 66 61 75 6c 74 4e  .string defaultN
1a30: 61 6d 65 73 70 61 63 65 4e 61 6d 65 20 3d 20 47  amespaceName = G
1a40: 65 74 4e 6f 64 65 4e 61 6d 65 28 64 65 66 61 75  etNodeName(defau
1a50: 6c 74 4e 61 6d 65 73 70 61 63 65 29 3b 0d 0a 09  ltNamespace);...
1a60: 09 09 09 09 73 74 72 69 6e 67 20 61 73 73 65 6d  ....string assem
1a70: 62 6c 79 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64  blyName = GetNod
1a80: 65 4e 61 6d 65 28 62 75 69 6c 64 43 6f 6e 74 65  eName(buildConte
1a90: 78 74 2e 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e  xt.SelectSingleN
1aa0: 6f 64 65 28 64 65 66 61 75 6c 74 4e 61 6d 65 73  ode(defaultNames
1ab0: 70 61 63 65 2c 20 22 61 6e 63 65 73 74 6f 72 3a  pace, "ancestor:
1ac0: 3a 6e 64 6f 63 3a 61 73 73 65 6d 62 6c 79 22 29  :ndoc:assembly")
1ad0: 29 3b 0d 0a 09 09 09 09 09 64 65 66 61 75 6c 74  );.......default
1ae0: 54 6f 70 69 63 20 3d 20 62 75 69 6c 64 43 6f 6e  Topic = buildCon
1af0: 74 65 78 74 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76  text._nameResolv
1b00: 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f  er.GetFilenameFo
1b10: 72 4e 61 6d 65 73 70 61 63 65 28 61 73 73 65 6d  rNamespace(assem
1b20: 62 6c 79 4e 61 6d 65 2c 20 64 65 66 61 75 6c 74  blyName, default
1b30: 4e 61 6d 65 73 70 61 63 65 4e 61 6d 65 29 3b 0d  NamespaceName);.
1b40: 0a 09 09 09 09 7d 0d 0a 09 09 09 09 62 75 69 6c  .....}......buil
1b50: 64 43 6f 6e 74 65 78 74 2e 68 74 6d 6c 48 65 6c  dContext.htmlHel
1b60: 70 20 3d 20 53 65 74 75 70 48 74 6d 6c 48 65 6c  p = SetupHtmlHel
1b70: 70 42 75 69 6c 64 65 72 28 62 75 69 6c 64 43 6f  pBuilder(buildCo
1b80: 6e 74 65 78 74 2e 57 6f 72 6b 69 6e 67 44 69 72  ntext.WorkingDir
1b90: 65 63 74 6f 72 79 2c 20 64 65 66 61 75 6c 74 54  ectory, defaultT
1ba0: 6f 70 69 63 29 3b 0d 0a 0d 0a 09 09 09 09 75 73  opic);........us
1bb0: 69 6e 67 20 28 62 75 69 6c 64 43 6f 6e 74 65 78  ing (buildContex
1bc0: 74 2e 68 74 6d 6c 48 65 6c 70 2e 4f 70 65 6e 50  t.htmlHelp.OpenP
1bd0: 72 6f 6a 65 63 74 46 69 6c 65 28 29 29 0d 0a 09  rojectFile())...
1be0: 09 09 09 75 73 69 6e 67 20 28 62 75 69 6c 64 43  ...using (buildC
1bf0: 6f 6e 74 65 78 74 2e 68 74 6d 6c 48 65 6c 70 2e  ontext.htmlHelp.
1c00: 4f 70 65 6e 43 6f 6e 74 65 6e 74 73 46 69 6c 65  OpenContentsFile
1c10: 28 73 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 74  (string.Empty, t
1c20: 72 75 65 29 29 20 7b 0d 0a 09 09 09 09 09 2f 2f  rue)) {.......//
1c30: 20 57 72 69 74 65 20 74 68 65 20 65 6d 62 65 64   Write the embed
1c40: 64 65 64 20 63 73 73 20 66 69 6c 65 73 20 74 6f  ded css files to
1c50: 20 74 68 65 20 68 74 6d 6c 20 6f 75 74 70 75 74   the html output
1c60: 20 64 69 72 65 63 74 6f 72 79 0d 0a 09 09 09 09   directory......
1c70: 09 57 72 69 74 65 48 74 6d 6c 43 6f 6e 74 65 6e  .WriteHtmlConten
1c80: 74 52 65 73 6f 75 72 63 65 73 28 62 75 69 6c 64  tResources(build
1c90: 43 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 09 09 09  Context);.......
1ca0: 09 09 47 65 6e 65 72 61 74 65 48 74 6d 6c 43 6f  ..GenerateHtmlCo
1cb0: 6e 74 65 6e 74 46 69 6c 65 73 28 62 75 69 6c 64  ntentFiles(build
1cc0: 43 6f 6e 74 65 78 74 2c 20 72 6f 6f 74 50 61 67  Context, rootPag
1cd0: 65 46 69 6c 65 4e 61 6d 65 2c 20 72 6f 6f 74 50  eFileName, rootP
1ce0: 61 67 65 54 4f 43 4e 61 6d 65 29 3b 0d 0a 09 09  ageTOCName);....
1cf0: 09 09 7d 0d 0a 0d 0a 09 09 09 09 48 74 6d 6c 48  ..}........HtmlH
1d00: 65 6c 70 20 68 74 6d 6c 48 65 6c 70 20 3d 20 62  elp htmlHelp = b
1d10: 75 69 6c 64 43 6f 6e 74 65 78 74 2e 68 74 6d 6c  uildContext.html
1d20: 48 65 6c 70 3b 0d 0a 09 09 09 09 68 74 6d 6c 48  Help;......htmlH
1d30: 65 6c 70 2e 57 72 69 74 65 45 6d 70 74 79 49 6e  elp.WriteEmptyIn
1d40: 64 65 78 46 69 6c 65 28 29 3b 0d 0a 0d 0a 09 09  dexFile();......
1d50: 09 09 69 66 20 28 28 4d 79 43 6f 6e 66 69 67 2e  ..if ((MyConfig.
1d60: 4f 75 74 70 75 74 54 61 72 67 65 74 20 26 20 4f  OutputTarget & O
1d70: 75 74 70 75 74 54 79 70 65 2e 57 65 62 29 20 3e  utputType.Web) >
1d80: 20 30 29 20 7b 0d 0a 09 09 09 09 09 4f 6e 44 6f   0) {.......OnDo
1d90: 63 42 75 69 6c 64 69 6e 67 53 74 65 70 28 37 35  cBuildingStep(75
1da0: 2c 20 22 47 65 6e 65 72 61 74 69 6e 67 20 48 54  , "Generating HT
1db0: 4d 4c 20 69 6e 64 65 78 20 66 69 6c 65 2e 2e 2e  ML index file...
1dc0: 22 29 3b 0d 0a 0d 0a 09 09 09 09 09 2f 2f 20 57  ");.........// W
1dd0: 72 69 74 65 20 74 68 65 20 65 6d 62 65 64 64 65  rite the embedde
1de0: 64 20 6f 6e 6c 69 6e 65 20 74 65 6d 70 6c 61 74  d online templat
1df0: 65 73 20 74 6f 20 74 68 65 20 68 74 6d 6c 20 6f  es to the html o
1e00: 75 74 70 75 74 20 64 69 72 65 63 74 6f 72 79 0d  utput directory.
1e10: 0a 09 09 09 09 09 47 65 6e 65 72 61 74 65 48 74  ......GenerateHt
1e20: 6d 6c 49 6e 64 65 78 46 69 6c 65 28 62 75 69 6c  mlIndexFile(buil
1e30: 64 43 6f 6e 74 65 78 74 2c 20 64 65 66 61 75 6c  dContext, defaul
1e40: 74 54 6f 70 69 63 29 3b 0d 0a 09 09 09 09 7d 0d  tTopic);......}.
1e50: 0a 0d 0a 09 09 09 09 69 66 20 28 28 4d 79 43 6f  .......if ((MyCo
1e60: 6e 66 69 67 2e 4f 75 74 70 75 74 54 61 72 67 65  nfig.OutputTarge
1e70: 74 20 26 20 4f 75 74 70 75 74 54 79 70 65 2e 48  t & OutputType.H
1e80: 74 6d 6c 48 65 6c 70 29 20 3e 20 30 29 20 7b 0d  tmlHelp) > 0) {.
1e90: 0a 09 09 09 09 09 4f 6e 44 6f 63 42 75 69 6c 64  ......OnDocBuild
1ea0: 69 6e 67 53 74 65 70 28 38 35 2c 20 22 43 6f 6d  ingStep(85, "Com
1eb0: 70 69 6c 69 6e 67 20 48 54 4d 4c 20 48 65 6c 70  piling HTML Help
1ec0: 20 66 69 6c 65 2e 2e 2e 22 29 3b 0d 0a 09 09 09   file...");.....
1ed0: 09 09 68 74 6d 6c 48 65 6c 70 2e 43 6f 6d 70 69  ..htmlHelp.Compi
1ee0: 6c 65 50 72 6f 6a 65 63 74 28 29 3b 0d 0a 09 09  leProject();....
1ef0: 09 09 7d 0d 0a 23 69 66 20 21 44 45 42 55 47 0d  ..}..#if !DEBUG.
1f00: 0a 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 7b  .....else......{
1f10: 0d 0a 09 09 09 09 09 2f 2f 72 65 6d 6f 76 65 20  .......//remove 
1f20: 2e 68 68 63 20 66 69 6c 65 0d 0a 09 09 09 09 09  .hhc file.......
1f30: 46 69 6c 65 2e 44 65 6c 65 74 65 28 68 74 6d 6c  File.Delete(html
1f40: 48 65 6c 70 2e 47 65 74 50 61 74 68 54 6f 43 6f  Help.GetPathToCo
1f50: 6e 74 65 6e 74 73 46 69 6c 65 28 29 29 3b 0d 0a  ntentsFile());..
1f60: 09 09 09 09 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ....}..#endif...
1f70: 0a 09 09 09 09 2f 2f 20 69 66 20 77 65 27 72 65  .....// if we're
1f80: 20 6f 6e 6c 79 20 62 75 69 6c 64 69 6e 67 20 61   only building a
1f90: 20 43 48 4d 2c 20 63 6f 70 79 20 74 68 61 74 20   CHM, copy that 
1fa0: 74 6f 20 74 68 65 20 4f 75 74 70 75 72 20 64 69  to the Outpur di
1fb0: 72 0d 0a 09 09 09 09 69 66 20 28 28 4d 79 43 6f  r......if ((MyCo
1fc0: 6e 66 69 67 2e 4f 75 74 70 75 74 54 61 72 67 65  nfig.OutputTarge
1fd0: 74 20 26 20 4f 75 74 70 75 74 54 79 70 65 2e 48  t & OutputType.H
1fe0: 74 6d 6c 48 65 6c 70 29 20 3e 20 30 20 26 26 20  tmlHelp) > 0 && 
1ff0: 28 4d 79 43 6f 6e 66 69 67 2e 4f 75 74 70 75 74  (MyConfig.Output
2000: 54 61 72 67 65 74 20 26 20 4f 75 74 70 75 74 54  Target & OutputT
2010: 79 70 65 2e 57 65 62 29 20 3d 3d 20 30 29 20 7b  ype.Web) == 0) {
2020: 0d 0a 09 09 09 09 09 62 75 69 6c 64 43 6f 6e 74  .......buildCont
2030: 65 78 74 2e 53 61 76 65 4f 75 74 70 75 74 73 28  ext.SaveOutputs(
2040: 22 2a 2e 63 68 6d 22 29 3b 0d 0a 09 09 09 09 7d  "*.chm");......}
2050: 20 65 6c 73 65 20 7b 0d 0a 09 09 09 09 09 2f 2f   else {.......//
2060: 20 6f 74 68 65 72 77 69 73 65 20 63 6f 70 79 20   otherwise copy 
2070: 65 76 65 72 79 74 68 69 6e 67 20 74 6f 20 74 68  everything to th
2080: 65 20 6f 75 74 70 75 74 20 64 69 72 20 28 63 61  e output dir (ca
2090: 75 73 65 20 74 68 65 20 68 65 6c 70 20 66 69 6c  use the help fil
20a0: 65 20 69 73 20 61 6c 6c 20 74 68 65 20 68 74 6d  e is all the htm
20b0: 6c 2c 20 6e 6f 74 20 6a 75 73 74 20 6f 6e 65 20  l, not just one 
20c0: 63 68 6d 29 0d 0a 09 09 09 09 09 62 75 69 6c 64  chm).......build
20d0: 43 6f 6e 74 65 78 74 2e 53 61 76 65 4f 75 74 70  Context.SaveOutp
20e0: 75 74 73 28 22 2a 2e 2a 22 29 3b 0d 0a 09 09 09  uts("*.*");.....
20f0: 09 7d 0d 0a 0d 0a 09 09 09 09 4f 6e 44 6f 63 42  .}........OnDocB
2100: 75 69 6c 64 69 6e 67 53 74 65 70 28 31 30 30 2c  uildingStep(100,
2110: 20 22 44 6f 6e 65 2e 22 29 3b 0d 0a 09 09 09 7d   "Done.");.....}
2120: 20 63 61 74 63 68 28 44 6f 63 75 6d 65 6e 74 65   catch(Documente
2130: 72 45 78 63 65 70 74 69 6f 6e 29 20 7b 0d 0a 09  rException) {...
2140: 09 09 09 74 68 72 6f 77 3b 0d 0a 09 09 09 7d 20  ...throw;.....} 
2150: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
2160: 20 65 78 29 20 7b 0d 0a 09 09 09 09 74 68 72 6f   ex) {......thro
2170: 77 20 6e 65 77 20 44 6f 63 75 6d 65 6e 74 65 72  w new Documenter
2180: 45 78 63 65 70 74 69 6f 6e 28 65 78 2e 4d 65 73  Exception(ex.Mes
2190: 73 61 67 65 2c 20 65 78 29 3b 0d 0a 09 09 09 7d  sage, ex);.....}
21a0: 20 66 69 6e 61 6c 6c 79 20 7b 0d 0a 09 09 09 09   finally {......
21b0: 62 75 69 6c 64 43 6f 6e 74 65 78 74 2e 44 69 73  buildContext.Dis
21c0: 70 6f 73 65 28 29 3b 0d 0a 09 09 09 7d 0d 0a 09  pose();.....}...
21d0: 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20  .}......private 
21e0: 76 6f 69 64 20 47 65 6e 65 72 61 74 65 48 74 6d  void GenerateHtm
21f0: 6c 49 6e 64 65 78 46 69 6c 65 28 42 75 69 6c 64  lIndexFile(Build
2200: 50 72 6f 6a 65 63 74 43 6f 6e 74 65 78 74 20 63  ProjectContext c
2210: 74 78 2c 20 73 74 72 69 6e 67 20 64 65 66 61 75  tx, string defau
2220: 6c 74 54 6f 70 69 63 29 0d 0a 09 09 7b 0d 0a 09  ltTopic)....{...
2230: 09 09 45 6d 62 65 64 64 65 64 52 65 73 6f 75 72  ..EmbeddedResour
2240: 63 65 73 2e 57 72 69 74 65 45 6d 62 65 64 64 65  ces.WriteEmbedde
2250: 64 52 65 73 6f 75 72 63 65 73 28 74 79 70 65 6f  dResources(typeo
2260: 66 28 4f 6e 6c 69 6e 65 46 69 6c 65 73 4c 6f 63  f(OnlineFilesLoc
2270: 61 74 69 6f 6e 48 69 6e 74 29 2c 20 63 74 78 2e  ationHint), ctx.
2280: 57 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79  WorkingDirectory
2290: 29 3b 0d 0a 0d 0a 09 09 09 75 73 69 6e 67 20 28  );.......using (
22a0: 54 65 6d 70 6c 61 74 65 57 72 69 74 65 72 20 69  TemplateWriter i
22b0: 6e 64 65 78 57 72 69 74 65 72 20 3d 20 6e 65 77  ndexWriter = new
22c0: 20 54 65 6d 70 6c 61 74 65 57 72 69 74 65 72 28   TemplateWriter(
22d0: 0d 0a 09 09 09 09 50 61 74 68 2e 43 6f 6d 62 69  ......Path.Combi
22e0: 6e 65 28 63 74 78 2e 57 6f 72 6b 69 6e 67 44 69  ne(ctx.WorkingDi
22f0: 72 65 63 74 6f 72 79 2e 46 75 6c 6c 4e 61 6d 65  rectory.FullName
2300: 2c 20 22 69 6e 64 65 78 2e 68 74 6d 6c 22 29 2c  , "index.html"),
2310: 0d 0a 09 09 09 09 45 6d 62 65 64 64 65 64 52 65  ......EmbeddedRe
2320: 73 6f 75 72 63 65 73 2e 47 65 74 45 6d 62 65 64  sources.GetEmbed
2330: 64 65 64 52 65 73 6f 75 72 63 65 52 65 61 64 65  dedResourceReade
2340: 72 28 74 79 70 65 6f 66 28 4f 6e 6c 69 6e 65 54  r(typeof(OnlineT
2350: 65 6d 70 6c 61 74 65 73 4c 6f 63 61 74 69 6f 6e  emplatesLocation
2360: 48 69 6e 74 29 2c 20 22 69 6e 64 65 78 2e 68 74  Hint), "index.ht
2370: 6d 6c 22 2c 20 6e 75 6c 6c 29 29 29 20 7b 0d 0a  ml", null))) {..
2380: 09 09 09 09 69 6e 64 65 78 57 72 69 74 65 72 2e  ....indexWriter.
2390: 43 6f 70 79 54 6f 4c 69 6e 65 28 22 5c 74 5c 74  CopyToLine("\t\t
23a0: 3c 74 69 74 6c 65 3e 3c 25 54 49 54 4c 45 25 3e  <title><%TITLE%>
23b0: 3c 2f 74 69 74 6c 65 3e 22 29 3b 0d 0a 09 09 09  </title>");.....
23c0: 09 69 6e 64 65 78 57 72 69 74 65 72 2e 57 72 69  .indexWriter.Wri
23d0: 74 65 4c 69 6e 65 28 22 5c 74 5c 74 3c 74 69 74  teLine("\t\t<tit
23e0: 6c 65 3e 22 20 2b 20 4d 79 43 6f 6e 66 69 67 2e  le>" + MyConfig.
23f0: 48 74 6d 6c 48 65 6c 70 4e 61 6d 65 20 2b 20 22  HtmlHelpName + "
2400: 3c 2f 74 69 74 6c 65 3e 22 29 3b 0d 0a 09 09 09  </title>");.....
2410: 09 69 6e 64 65 78 57 72 69 74 65 72 2e 43 6f 70  .indexWriter.Cop
2420: 79 54 6f 4c 69 6e 65 28 22 5c 74 5c 74 3c 66 72  yToLine("\t\t<fr
2430: 61 6d 65 20 6e 61 6d 65 3d 5c 22 6d 61 69 6e 5c  ame name=\"main\
2440: 22 20 73 72 63 3d 5c 22 3c 25 48 4f 4d 45 5f 50  " src=\"<%HOME_P
2450: 41 47 45 25 3e 5c 22 20 66 72 61 6d 65 62 6f 72  AGE%>\" framebor
2460: 64 65 72 3d 5c 22 31 5c 22 3e 22 29 3b 0d 0a 09  der=\"1\">");...
2470: 09 09 09 69 6e 64 65 78 57 72 69 74 65 72 2e 57  ...indexWriter.W
2480: 72 69 74 65 4c 69 6e 65 28 22 5c 74 5c 74 3c 66  riteLine("\t\t<f
2490: 72 61 6d 65 20 6e 61 6d 65 3d 5c 22 6d 61 69 6e  rame name=\"main
24a0: 5c 22 20 73 72 63 3d 5c 22 22 20 2b 20 64 65 66  \" src=\"" + def
24b0: 61 75 6c 74 54 6f 70 69 63 20 2b 20 22 5c 22 20  aultTopic + "\" 
24c0: 66 72 61 6d 65 62 6f 72 64 65 72 3d 5c 22 31 5c  frameborder=\"1\
24d0: 22 3e 22 29 3b 0d 0a 09 09 09 09 69 6e 64 65 78  ">");......index
24e0: 57 72 69 74 65 72 2e 43 6f 70 79 54 6f 45 6e 64  Writer.CopyToEnd
24f0: 28 29 3b 0d 0a 09 09 09 09 69 6e 64 65 78 57 72  ();......indexWr
2500: 69 74 65 72 2e 43 6c 6f 73 65 28 29 3b 0d 0a 09  iter.Close();...
2510: 09 09 7d 0d 0a 0d 0a 09 09 09 54 72 61 63 65 2e  ..}.......Trace.
2520: 57 72 69 74 65 4c 69 6e 65 28 22 74 72 61 6e 73  WriteLine("trans
2530: 66 6f 72 6d 20 74 68 65 20 48 48 43 20 63 6f 6e  form the HHC con
2540: 74 65 6e 74 73 20 66 69 6c 65 20 69 6e 74 6f 20  tents file into 
2550: 68 74 6d 6c 22 29 3b 0d 0a 23 69 66 20 44 45 42  html");..#if DEB
2560: 55 47 0d 0a 09 09 09 69 6e 74 20 73 74 61 72 74  UG.....int start
2570: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 54   = Environment.T
2580: 69 63 6b 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64 69  ickCount;..#endi
2590: 66 0d 0a 09 09 09 2f 2f 74 72 61 6e 73 66 6f 72  f.....//transfor
25a0: 6d 20 74 68 65 20 48 48 43 20 63 6f 6e 74 65 6e  m the HHC conten
25b0: 74 73 20 66 69 6c 65 20 69 6e 74 6f 20 68 74 6d  ts file into htm
25c0: 6c 0d 0a 09 09 09 75 73 69 6e 67 20 28 53 74 72  l.....using (Str
25d0: 65 61 6d 52 65 61 64 65 72 20 63 6f 6e 74 65 6e  eamReader conten
25e0: 74 73 46 69 6c 65 20 3d 20 6e 65 77 20 53 74 72  tsFile = new Str
25f0: 65 61 6d 52 65 61 64 65 72 28 63 74 78 2e 48 74  eamReader(ctx.Ht
2600: 6d 6c 48 65 6c 70 43 6f 6e 74 65 6e 74 46 69 6c  mlHelpContentFil
2610: 65 50 61 74 68 2e 46 75 6c 6c 4e 61 6d 65 2c 20  ePath.FullName, 
2620: 63 74 78 2e 43 75 72 72 65 6e 74 46 69 6c 65 45  ctx.CurrentFileE
2630: 6e 63 6f 64 69 6e 67 29 29 20 7b 0d 0a 09 09 09  ncoding)) {.....
2640: 09 58 50 61 74 68 44 6f 63 75 6d 65 6e 74 20 78  .XPathDocument x
2650: 70 61 74 68 44 6f 63 75 6d 65 6e 74 20 3d 20 6e  pathDocument = n
2660: 65 77 20 58 50 61 74 68 44 6f 63 75 6d 65 6e 74  ew XPathDocument
2670: 28 63 6f 6e 74 65 6e 74 73 46 69 6c 65 29 3b 0d  (contentsFile);.
2680: 0a 09 09 09 09 73 74 72 69 6e 67 20 63 6f 6e 74  .....string cont
2690: 65 6e 74 73 46 69 6c 65 6e 61 6d 65 20 3d 20 50  entsFilename = P
26a0: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 63 74 78 2e  ath.Combine(ctx.
26b0: 57 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79  WorkingDirectory
26c0: 2e 46 75 6c 6c 4e 61 6d 65 2c 20 22 63 6f 6e 74  .FullName, "cont
26d0: 65 6e 74 73 2e 68 74 6d 6c 22 29 3b 0d 0a 09 09  ents.html");....
26e0: 09 09 75 73 69 6e 67 20 28 53 74 72 65 61 6d 57  ..using (StreamW
26f0: 72 69 74 65 72 20 73 74 72 65 61 6d 57 72 69 74  riter streamWrit
2700: 65 72 20 3d 20 6e 65 77 20 53 74 72 65 61 6d 57  er = new StreamW
2710: 72 69 74 65 72 28 0d 0a 09 09 09 09 09 46 69 6c  riter(.......Fil
2720: 65 2e 4f 70 65 6e 28 63 6f 6e 74 65 6e 74 73 46  e.Open(contentsF
2730: 69 6c 65 6e 61 6d 65 2c 20 46 69 6c 65 4d 6f 64  ilename, FileMod
2740: 65 2e 43 72 65 61 74 65 4e 65 77 2c 20 46 69 6c  e.CreateNew, Fil
2750: 65 41 63 63 65 73 73 2e 57 72 69 74 65 2c 20 46  eAccess.Write, F
2760: 69 6c 65 53 68 61 72 65 2e 4e 6f 6e 65 29 2c 20  ileShare.None), 
2770: 63 74 78 2e 43 75 72 72 65 6e 74 46 69 6c 65 45  ctx.CurrentFileE
2780: 6e 63 6f 64 69 6e 67 29 29 20 7b 0d 0a 09 09 09  ncoding)) {.....
2790: 09 09 58 73 6c 54 72 61 6e 73 66 6f 72 6d 28 63  ..XslTransform(c
27a0: 74 78 2c 20 22 68 74 6d 6c 63 6f 6e 74 65 6e 74  tx, "htmlcontent
27b0: 73 22 2c 20 78 70 61 74 68 44 6f 63 75 6d 65 6e  s", xpathDocumen
27c0: 74 2c 20 6e 75 6c 6c 2c 20 73 74 72 65 61 6d 57  t, null, streamW
27d0: 72 69 74 65 72 2c 20 63 6f 6e 74 65 6e 74 73 46  riter, contentsF
27e0: 69 6c 65 6e 61 6d 65 29 3b 0d 0a 09 09 09 09 7d  ilename);......}
27f0: 0d 0a 09 09 09 7d 0d 0a 23 69 66 20 44 45 42 55  .....}..#if DEBU
2800: 47 0d 0a 09 09 09 54 72 61 63 65 2e 57 72 69 74  G.....Trace.Writ
2810: 65 4c 69 6e 65 28 73 74 72 69 6e 67 2e 46 6f 72  eLine(string.For
2820: 6d 61 74 28 22 7b 30 7d 20 6d 73 65 63 2e 22 2c  mat("{0} msec.",
2830: 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 54 69   (Environment.Ti
2840: 63 6b 43 6f 75 6e 74 20 2d 20 73 74 61 72 74 29  ckCount - start)
2850: 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 09 09 7d  ));..#endif....}
2860: 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 48 74  ......private Ht
2870: 6d 6c 48 65 6c 70 20 53 65 74 75 70 48 74 6d 6c  mlHelp SetupHtml
2880: 48 65 6c 70 42 75 69 6c 64 65 72 28 44 69 72 65  HelpBuilder(Dire
2890: 63 74 6f 72 79 49 6e 66 6f 20 77 6f 72 6b 69 6e  ctoryInfo workin
28a0: 67 44 69 72 65 63 74 6f 72 79 2c 20 73 74 72 69  gDirectory, stri
28b0: 6e 67 20 64 65 66 61 75 6c 74 54 6f 70 69 63 29  ng defaultTopic)
28c0: 0d 0a 09 09 7b 0d 0a 09 09 09 48 74 6d 6c 48 65  ....{.....HtmlHe
28d0: 6c 70 20 68 74 6d 6c 48 65 6c 70 20 3d 20 6e 65  lp htmlHelp = ne
28e0: 77 20 48 74 6d 6c 48 65 6c 70 28 0d 0a 09 09 09  w HtmlHelp(.....
28f0: 09 77 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72  .workingDirector
2900: 79 2c 0d 0a 09 09 09 09 4d 79 43 6f 6e 66 69 67  y,......MyConfig
2910: 2e 48 74 6d 6c 48 65 6c 70 4e 61 6d 65 2c 0d 0a  .HtmlHelpName,..
2920: 09 09 09 09 64 65 66 61 75 6c 74 54 6f 70 69 63  ....defaultTopic
2930: 2c 0d 0a 09 09 09 09 28 28 4d 79 43 6f 6e 66 69  ,......((MyConfi
2940: 67 2e 4f 75 74 70 75 74 54 61 72 67 65 74 20 26  g.OutputTarget &
2950: 20 4f 75 74 70 75 74 54 79 70 65 2e 48 74 6d 6c   OutputType.Html
2960: 48 65 6c 70 29 20 3d 3d 20 30 29 29 3b 0d 0a 09  Help) == 0));...
2970: 09 09 68 74 6d 6c 48 65 6c 70 2e 49 6e 63 6c 75  ..htmlHelp.Inclu
2980: 64 65 46 61 76 6f 72 69 74 65 73 20 3d 20 4d 79  deFavorites = My
2990: 43 6f 6e 66 69 67 2e 49 6e 63 6c 75 64 65 46 61  Config.IncludeFa
29a0: 76 6f 72 69 74 65 73 3b 0d 0a 09 09 09 68 74 6d  vorites;.....htm
29b0: 6c 48 65 6c 70 2e 42 69 6e 61 72 79 54 4f 43 20  lHelp.BinaryTOC 
29c0: 3d 20 4d 79 43 6f 6e 66 69 67 2e 42 69 6e 61 72  = MyConfig.Binar
29d0: 79 54 4f 43 3b 0d 0a 09 09 09 68 74 6d 6c 48 65  yTOC;.....htmlHe
29e0: 6c 70 2e 4c 61 6e 67 49 44 20 3d 20 4d 79 43 6f  lp.LangID = MyCo
29f0: 6e 66 69 67 2e 4c 61 6e 67 49 44 3b 0d 0a 09 09  nfig.LangID;....
2a00: 09 72 65 74 75 72 6e 20 68 74 6d 6c 48 65 6c 70  .return htmlHelp
2a10: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76  ;....}......priv
2a20: 61 74 65 20 76 6f 69 64 20 47 65 6e 65 72 61 74  ate void Generat
2a30: 65 48 74 6d 6c 43 6f 6e 74 65 6e 74 46 69 6c 65  eHtmlContentFile
2a40: 73 28 42 75 69 6c 64 50 72 6f 6a 65 63 74 43 6f  s(BuildProjectCo
2a50: 6e 74 65 78 74 20 62 75 69 6c 64 43 6f 6e 74 65  ntext buildConte
2a60: 78 74 2c 20 73 74 72 69 6e 67 20 72 6f 6f 74 50  xt, string rootP
2a70: 61 67 65 46 69 6c 65 4e 61 6d 65 2c 20 73 74 72  ageFileName, str
2a80: 69 6e 67 20 72 6f 6f 74 50 61 67 65 54 4f 43 4e  ing rootPageTOCN
2a90: 61 6d 65 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66  ame)....{.....if
2aa0: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
2ab0: 4f 72 45 6d 70 74 79 28 4d 79 43 6f 6e 66 69 67  OrEmpty(MyConfig
2ac0: 2e 43 6f 70 79 72 69 67 68 74 48 72 65 66 29 29  .CopyrightHref))
2ad0: 20 7b 0d 0a 09 09 09 09 69 66 20 28 21 4d 79 43   {......if (!MyC
2ae0: 6f 6e 66 69 67 2e 43 6f 70 79 72 69 67 68 74 48  onfig.CopyrightH
2af0: 72 65 66 2e 53 74 61 72 74 73 57 69 74 68 28 22  ref.StartsWith("
2b00: 68 74 74 70 3a 22 29 29 20 7b 0d 0a 09 09 09 09  http:")) {......
2b10: 09 73 74 72 69 6e 67 20 63 6f 70 79 72 69 67 68  .string copyrigh
2b20: 74 46 69 6c 65 20 3d 20 50 61 74 68 2e 43 6f 6d  tFile = Path.Com
2b30: 62 69 6e 65 28 62 75 69 6c 64 43 6f 6e 74 65 78  bine(buildContex
2b40: 74 2e 57 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f  t.WorkingDirecto
2b50: 72 79 2e 46 75 6c 6c 4e 61 6d 65 2c 20 50 61 74  ry.FullName, Pat
2b60: 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 4d 79  h.GetFileName(My
2b70: 43 6f 6e 66 69 67 2e 43 6f 70 79 72 69 67 68 74  Config.Copyright
2b80: 48 72 65 66 29 29 3b 0d 0a 09 09 09 09 09 46 69  Href));.......Fi
2b90: 6c 65 2e 43 6f 70 79 28 4d 79 43 6f 6e 66 69 67  le.Copy(MyConfig
2ba0: 2e 43 6f 70 79 72 69 67 68 74 48 72 65 66 2c 20  .CopyrightHref, 
2bb0: 63 6f 70 79 72 69 67 68 74 46 69 6c 65 2c 20 74  copyrightFile, t
2bc0: 72 75 65 29 3b 0d 0a 09 09 09 09 09 46 69 6c 65  rue);.......File
2bd0: 2e 53 65 74 41 74 74 72 69 62 75 74 65 73 28 63  .SetAttributes(c
2be0: 6f 70 79 72 69 67 68 74 46 69 6c 65 2c 20 46 69  opyrightFile, Fi
2bf0: 6c 65 41 74 74 72 69 62 75 74 65 73 2e 41 72 63  leAttributes.Arc
2c00: 68 69 76 65 29 3b 0d 0a 09 09 09 09 09 62 75 69  hive);.......bui
2c10: 6c 64 43 6f 6e 74 65 78 74 2e 68 74 6d 6c 48 65  ldContext.htmlHe
2c20: 6c 70 2e 41 64 64 46 69 6c 65 54 6f 50 72 6f 6a  lp.AddFileToProj
2c30: 65 63 74 28 50 61 74 68 2e 47 65 74 46 69 6c 65  ect(Path.GetFile
2c40: 4e 61 6d 65 28 4d 79 43 6f 6e 66 69 67 2e 43 6f  Name(MyConfig.Co
2c50: 70 79 72 69 67 68 74 48 72 65 66 29 29 3b 0d 0a  pyrightHref));..
2c60: 09 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a 0d 0a 09  ....}.....}.....
2c70: 09 09 2f 2f 20 61 64 64 20 72 6f 6f 74 20 70 61  ..// add root pa
2c80: 67 65 20 69 66 20 72 65 71 75 65 73 74 65 64 0d  ge if requested.
2c90: 0a 09 09 09 69 66 20 28 72 6f 6f 74 50 61 67 65  ....if (rootPage
2ca0: 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  FileName != null
2cb0: 29 20 7b 0d 0a 09 09 09 09 69 66 20 28 21 46 69  ) {......if (!Fi
2cc0: 6c 65 2e 45 78 69 73 74 73 28 72 6f 6f 74 50 61  le.Exists(rootPa
2cd0: 67 65 46 69 6c 65 4e 61 6d 65 29 29 20 7b 0d 0a  geFileName)) {..
2ce0: 09 09 09 09 09 74 68 72 6f 77 20 6e 65 77 20 44  .....throw new D
2cf0: 6f 63 75 6d 65 6e 74 65 72 45 78 63 65 70 74 69  ocumenterExcepti
2d00: 6f 6e 28 22 43 61 6e 6e 6f 74 20 66 69 6e 64 20  on("Cannot find 
2d10: 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  the documentatio
2d20: 6e 27 73 20 72 6f 6f 74 20 70 61 67 65 20 66 69  n's root page fi
2d30: 6c 65 3a 5c 6e 22 0d 0a 09 09 09 09 09 09 09 09  le:\n"..........
2d40: 09 09 09 09 20 20 2b 20 72 6f 6f 74 50 61 67 65  ....  + rootPage
2d50: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 09 09 09 09  FileName);......
2d60: 7d 0d 0a 0d 0a 09 09 09 09 2f 2f 20 61 64 64 20  }........// add 
2d70: 74 68 65 20 66 69 6c 65 0d 0a 09 09 09 09 73 74  the file......st
2d80: 72 69 6e 67 20 72 6f 6f 74 50 61 67 65 4f 75 74  ring rootPageOut
2d90: 70 75 74 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43  putName = Path.C
2da0: 6f 6d 62 69 6e 65 28 62 75 69 6c 64 43 6f 6e 74  ombine(buildCont
2db0: 65 78 74 2e 57 6f 72 6b 69 6e 67 44 69 72 65 63  ext.WorkingDirec
2dc0: 74 6f 72 79 2e 46 75 6c 6c 4e 61 6d 65 2c 20 22  tory.FullName, "
2dd0: 64 65 66 61 75 6c 74 2e 68 74 6d 6c 22 29 3b 0d  default.html");.
2de0: 0a 09 09 09 09 69 66 20 28 50 61 74 68 2e 47 65  .....if (Path.Ge
2df0: 74 46 75 6c 6c 50 61 74 68 28 72 6f 6f 74 50 61  tFullPath(rootPa
2e00: 67 65 46 69 6c 65 4e 61 6d 65 29 20 21 3d 20 50  geFileName) != P
2e10: 61 74 68 2e 47 65 74 46 75 6c 6c 50 61 74 68 28  ath.GetFullPath(
2e20: 72 6f 6f 74 50 61 67 65 4f 75 74 70 75 74 4e 61  rootPageOutputNa
2e30: 6d 65 29 29 20 7b 0d 0a 09 09 09 09 09 46 69 6c  me)) {.......Fil
2e40: 65 2e 43 6f 70 79 28 72 6f 6f 74 50 61 67 65 46  e.Copy(rootPageF
2e50: 69 6c 65 4e 61 6d 65 2c 20 72 6f 6f 74 50 61 67  ileName, rootPag
2e60: 65 4f 75 74 70 75 74 4e 61 6d 65 2c 20 74 72 75  eOutputName, tru
2e70: 65 29 3b 0d 0a 09 09 09 09 09 46 69 6c 65 2e 53  e);.......File.S
2e80: 65 74 41 74 74 72 69 62 75 74 65 73 28 72 6f 6f  etAttributes(roo
2e90: 74 50 61 67 65 4f 75 74 70 75 74 4e 61 6d 65 2c  tPageOutputName,
2ea0: 20 46 69 6c 65 41 74 74 72 69 62 75 74 65 73 2e   FileAttributes.
2eb0: 41 72 63 68 69 76 65 29 3b 0d 0a 09 09 09 09 7d  Archive);......}
2ec0: 0d 0a 09 09 09 09 62 75 69 6c 64 43 6f 6e 74 65  ......buildConte
2ed0: 78 74 2e 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46  xt.htmlHelp.AddF
2ee0: 69 6c 65 54 6f 50 72 6f 6a 65 63 74 28 50 61 74  ileToProject(Pat
2ef0: 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 72 6f  h.GetFileName(ro
2f00: 6f 74 50 61 67 65 4f 75 74 70 75 74 4e 61 6d 65  otPageOutputName
2f10: 29 29 3b 0d 0a 09 09 09 09 62 75 69 6c 64 43 6f  ));......buildCo
2f20: 6e 74 65 78 74 2e 68 74 6d 6c 48 65 6c 70 2e 41  ntext.htmlHelp.A
2f30: 64 64 46 69 6c 65 54 6f 43 6f 6e 74 65 6e 74 73  ddFileToContents
2f40: 28 72 6f 6f 74 50 61 67 65 54 4f 43 4e 61 6d 65  (rootPageTOCName
2f50: 2c 0d 0a 09 09 09 09 09 09 09 09 09 09 20 20 20  ,............   
2f60: 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65  Path.GetFileName
2f70: 28 72 6f 6f 74 50 61 67 65 4f 75 74 70 75 74 4e  (rootPageOutputN
2f80: 61 6d 65 29 29 3b 0d 0a 0d 0a 09 09 09 09 2f 2f  ame));........//
2f90: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 70 65   depending on pe
2fa0: 65 72 20 73 65 74 74 69 6e 67 2c 20 6d 61 6b 65  er setting, make
2fb0: 20 72 6f 6f 74 20 70 61 67 65 20 74 68 65 20 63   root page the c
2fc0: 6f 6e 74 61 69 6e 65 72 0d 0a 09 09 09 09 69 66  ontainer......if
2fd0: 20 28 4d 79 43 6f 6e 66 69 67 2e 52 6f 6f 74 50   (MyConfig.RootP
2fe0: 61 67 65 43 6f 6e 74 61 69 6e 73 4e 61 6d 65 73  ageContainsNames
2ff0: 70 61 63 65 73 29 0d 0a 09 09 09 09 09 62 75 69  paces).......bui
3000: 6c 64 43 6f 6e 74 65 78 74 2e 68 74 6d 6c 48 65  ldContext.htmlHe
3010: 6c 70 2e 4f 70 65 6e 42 6f 6f 6b 49 6e 43 6f 6e  lp.OpenBookInCon
3020: 74 65 6e 74 73 28 29 3b 0d 0a 09 09 09 7d 0d 0a  tents();.....}..
3030: 0d 0a 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f 72  .....MakeHtmlFor
3040: 41 73 73 65 6d 62 6c 69 65 73 28 62 75 69 6c 64  Assemblies(build
3050: 43 6f 6e 74 65 78 74 2c 20 4d 79 43 6f 6e 66 69  Context, MyConfi
3060: 67 2e 4d 65 72 67 65 41 73 73 65 6d 62 6c 69 65  g.MergeAssemblie
3070: 73 29 3b 0d 0a 09 09 09 66 6f 72 65 61 63 68 20  s);.....foreach 
3080: 28 73 74 72 69 6e 67 20 66 69 6c 65 6e 61 6d 65  (string filename
3090: 20 69 6e 20 66 69 6c 65 73 54 6f 49 6e 63 6c 75   in filesToInclu
30a0: 64 65 29 20 7b 0d 0a 09 09 09 09 62 75 69 6c 64  de) {......build
30b0: 43 6f 6e 74 65 78 74 2e 68 74 6d 6c 48 65 6c 70  Context.htmlHelp
30c0: 2e 41 64 64 46 69 6c 65 54 6f 50 72 6f 6a 65 63  .AddFileToProjec
30d0: 74 28 66 69 6c 65 6e 61 6d 65 29 3b 0d 0a 09 09  t(filename);....
30e0: 09 7d 0d 0a 0d 0a 09 09 09 2f 2f 20 63 6c 6f 73  .}.......// clos
30f0: 65 20 72 6f 6f 74 20 62 6f 6f 6b 20 69 66 20 61  e root book if a
3100: 70 70 6c 69 63 61 62 6c 65 0d 0a 09 09 09 69 66  pplicable.....if
3110: 20 28 72 6f 6f 74 50 61 67 65 46 69 6c 65 4e 61   (rootPageFileNa
3120: 6d 65 20 21 3d 20 6e 75 6c 6c 29 20 7b 0d 0a 09  me != null) {...
3130: 09 09 09 69 66 20 28 4d 79 43 6f 6e 66 69 67 2e  ...if (MyConfig.
3140: 52 6f 6f 74 50 61 67 65 43 6f 6e 74 61 69 6e 73  RootPageContains
3150: 4e 61 6d 65 73 70 61 63 65 73 29 0d 0a 09 09 09  Namespaces).....
3160: 09 09 62 75 69 6c 64 43 6f 6e 74 65 78 74 2e 68  ..buildContext.h
3170: 74 6d 6c 48 65 6c 70 2e 43 6c 6f 73 65 42 6f 6f  tmlHelp.CloseBoo
3180: 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a  kInContents();..
3190: 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70  ...}....}......p
31a0: 72 69 76 61 74 65 20 58 6d 6c 44 6f 63 75 6d 65  rivate XmlDocume
31b0: 6e 74 20 43 72 65 61 74 65 4e 44 6f 63 58 6d 6c  nt CreateNDocXml
31c0: 28 50 72 6f 6a 65 63 74 20 70 72 6f 6a 65 63 74  (Project project
31d0: 29 0d 0a 09 09 7b 0d 0a 09 09 09 73 74 72 69 6e  )....{.....strin
31e0: 67 20 74 65 6d 70 46 69 6c 65 4e 61 6d 65 20 3d  g tempFileName =
31f0: 20 6e 75 6c 6c 3b 0d 0a 09 09 09 74 72 79 20 7b   null;.....try {
3200: 0d 0a 09 09 09 09 2f 2f 20 64 65 74 65 72 6d 69  ......// determi
3210: 6e 65 20 74 65 6d 70 20 66 69 6c 65 20 6e 61 6d  ne temp file nam
3220: 65 0d 0a 09 09 09 09 74 65 6d 70 46 69 6c 65 4e  e......tempFileN
3230: 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 54 65  ame = Path.GetTe
3240: 6d 70 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 09  mpFileName();...
3250: 09 09 09 2f 2f 20 4c 65 74 20 74 68 65 20 44 6f  ...// Let the Do
3260: 63 75 6d 65 6e 74 65 72 20 62 61 73 65 20 63 6c  cumenter base cl
3270: 61 73 73 20 64 6f 20 69 74 27 73 20 74 68 69 6e  ass do it's thin
3280: 67 2e 0d 0a 09 09 09 09 4d 61 6b 65 58 6d 6c 46  g.......MakeXmlF
3290: 69 6c 65 28 70 72 6f 6a 65 63 74 2c 20 6e 65 77  ile(project, new
32a0: 20 46 69 6c 65 49 6e 66 6f 28 74 65 6d 70 46 69   FileInfo(tempFi
32b0: 6c 65 4e 61 6d 65 29 29 3b 0d 0a 0d 0a 09 09 09  leName));.......
32c0: 09 2f 2f 20 4c 6f 61 64 20 74 68 65 20 58 4d 4c  .// Load the XML
32d0: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 69   documentation i
32e0: 6e 74 6f 20 44 4f 4d 20 61 6e 64 20 58 50 41 54  nto DOM and XPAT
32f0: 48 20 64 6f 63 2e 0d 0a 09 09 09 09 75 73 69 6e  H doc.......usin
3300: 67 20 28 46 69 6c 65 53 74 72 65 61 6d 20 74 65  g (FileStream te
3310: 6d 70 46 69 6c 65 20 3d 20 46 69 6c 65 2e 4f 70  mpFile = File.Op
3320: 65 6e 28 74 65 6d 70 46 69 6c 65 4e 61 6d 65 2c  en(tempFileName,
3330: 20 46 69 6c 65 4d 6f 64 65 2e 4f 70 65 6e 2c 20   FileMode.Open, 
3340: 46 69 6c 65 41 63 63 65 73 73 2e 52 65 61 64 29  FileAccess.Read)
3350: 29 20 7b 0d 0a 0d 0a 09 09 09 09 09 58 6d 6c 44  ) {.........XmlD
3360: 6f 63 75 6d 65 6e 74 20 78 6d 6c 20 3d 20 6e 65  ocument xml = ne
3370: 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b  w XmlDocument();
3380: 0d 0a 09 09 09 09 09 78 6d 6c 2e 4c 6f 61 64 28  .......xml.Load(
3390: 74 65 6d 70 46 69 6c 65 29 3b 0d 0a 09 09 09 09  tempFile);......
33a0: 09 72 65 74 75 72 6e 20 78 6d 6c 3b 0d 0a 09 09  .return xml;....
33b0: 09 09 7d 0d 0a 09 09 09 7d 20 66 69 6e 61 6c 6c  ..}.....} finall
33c0: 79 20 7b 0d 0a 09 09 09 09 69 66 20 28 74 65 6d  y {......if (tem
33d0: 70 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c  pFileName != nul
33e0: 6c 20 26 26 20 46 69 6c 65 2e 45 78 69 73 74 73  l && File.Exists
33f0: 28 74 65 6d 70 46 69 6c 65 4e 61 6d 65 29 29 20  (tempFileName)) 
3400: 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 09 09  {..#if DEBUG....
3410: 09 09 09 46 69 6c 65 2e 43 6f 70 79 28 74 65 6d  ...File.Copy(tem
3420: 70 46 69 6c 65 4e 61 6d 65 2c 20 4d 79 43 6f 6e  pFileName, MyCon
3430: 66 69 67 2e 4f 75 74 70 75 74 44 69 72 65 63 74  fig.OutputDirect
3440: 6f 72 79 2e 54 72 69 6d 45 6e 64 28 27 5c 5c 27  ory.TrimEnd('\\'
3450: 2c 20 27 2f 27 29 20 2b 20 22 5c 5c 6e 64 6f 63  , '/') + "\\ndoc
3460: 2e 78 6d 6c 22 2c 20 74 72 75 65 29 3b 0d 0a 23  .xml", true);..#
3470: 65 6e 64 69 66 0d 0a 09 09 09 09 09 46 69 6c 65  endif.......File
3480: 2e 44 65 6c 65 74 65 28 74 65 6d 70 46 69 6c 65  .Delete(tempFile
3490: 4e 61 6d 65 29 3b 0d 0a 09 09 09 09 7d 0d 0a 09  Name);......}...
34a0: 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72  ..}....}......pr
34b0: 69 76 61 74 65 20 76 6f 69 64 20 57 72 69 74 65  ivate void Write
34c0: 48 74 6d 6c 43 6f 6e 74 65 6e 74 52 65 73 6f 75  HtmlContentResou
34d0: 72 63 65 73 28 42 75 69 6c 64 50 72 6f 6a 65 63  rces(BuildProjec
34e0: 74 43 6f 6e 74 65 78 74 20 62 75 69 6c 64 43 6f  tContext buildCo
34f0: 6e 74 65 78 74 29 0d 0a 09 09 7b 0d 0a 09 09 09  ntext)....{.....
3500: 45 6d 62 65 64 64 65 64 52 65 73 6f 75 72 63 65  EmbeddedResource
3510: 73 2e 57 72 69 74 65 45 6d 62 65 64 64 65 64 52  s.WriteEmbeddedR
3520: 65 73 6f 75 72 63 65 73 28 0d 0a 09 09 09 09 47  esources(......G
3530: 65 74 54 79 70 65 28 29 2e 4d 6f 64 75 6c 65 2e  etType().Module.
3540: 41 73 73 65 6d 62 6c 79 2c 0d 0a 09 09 09 09 47  Assembly,......G
3550: 65 74 54 79 70 65 28 29 2e 4e 61 6d 65 73 70 61  etType().Namespa
3560: 63 65 20 2b 20 22 2e 63 73 73 22 2c 0d 0a 09 09  ce + ".css",....
3570: 09 09 62 75 69 6c 64 43 6f 6e 74 65 78 74 2e 57  ..buildContext.W
3580: 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79 29  orkingDirectory)
3590: 3b 0d 0a 0d 0a 09 09 09 2f 2f 20 57 72 69 74 65  ;.......// Write
35a0: 20 74 68 65 20 65 6d 62 65 64 64 65 64 20 69 63   the embedded ic
35b0: 6f 6e 73 20 74 6f 20 74 68 65 20 68 74 6d 6c 20  ons to the html 
35c0: 6f 75 74 70 75 74 20 64 69 72 65 63 74 6f 72 79  output directory
35d0: 0d 0a 09 09 09 45 6d 62 65 64 64 65 64 52 65 73  .....EmbeddedRes
35e0: 6f 75 72 63 65 73 2e 57 72 69 74 65 45 6d 62 65  ources.WriteEmbe
35f0: 64 64 65 64 52 65 73 6f 75 72 63 65 73 28 0d 0a  ddedResources(..
3600: 09 09 09 09 47 65 74 54 79 70 65 28 29 2e 4d 6f  ....GetType().Mo
3610: 64 75 6c 65 2e 41 73 73 65 6d 62 6c 79 2c 0d 0a  dule.Assembly,..
3620: 09 09 09 09 47 65 74 54 79 70 65 28 29 2e 4e 61  ....GetType().Na
3630: 6d 65 73 70 61 63 65 20 2b 20 22 2e 69 6d 61 67  mespace + ".imag
3640: 65 73 22 2c 0d 0a 09 09 09 09 62 75 69 6c 64 43  es",......buildC
3650: 6f 6e 74 65 78 74 2e 57 6f 72 6b 69 6e 67 44 69  ontext.WorkingDi
3660: 72 65 63 74 6f 72 79 29 3b 0d 0a 0d 0a 09 09 09  rectory);.......
3670: 2f 2f 20 57 72 69 74 65 20 74 68 65 20 65 6d 62  // Write the emb
3680: 65 64 64 65 64 20 73 63 72 69 70 74 73 20 74 6f  edded scripts to
3690: 20 74 68 65 20 68 74 6d 6c 20 6f 75 74 70 75 74   the html output
36a0: 20 64 69 72 65 63 74 6f 72 79 0d 0a 09 09 09 45   directory.....E
36b0: 6d 62 65 64 64 65 64 52 65 73 6f 75 72 63 65 73  mbeddedResources
36c0: 2e 57 72 69 74 65 45 6d 62 65 64 64 65 64 52 65  .WriteEmbeddedRe
36d0: 73 6f 75 72 63 65 73 28 0d 0a 09 09 09 09 47 65  sources(......Ge
36e0: 74 54 79 70 65 28 29 2e 4d 6f 64 75 6c 65 2e 41  tType().Module.A
36f0: 73 73 65 6d 62 6c 79 2c 0d 0a 09 09 09 09 47 65  ssembly,......Ge
3700: 74 54 79 70 65 28 29 2e 4e 61 6d 65 73 70 61 63  tType().Namespac
3710: 65 20 2b 20 22 2e 73 63 72 69 70 74 73 22 2c 0d  e + ".scripts",.
3720: 0a 09 09 09 09 62 75 69 6c 64 43 6f 6e 74 65 78  .....buildContex
3730: 74 2e 57 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f  t.WorkingDirecto
3740: 72 79 29 3b 0d 0a 0d 0a 09 09 09 69 66 20 28 28  ry);.......if ((
3750: 28 73 74 72 69 6e 67 29 4d 79 43 6f 6e 66 69 67  (string)MyConfig
3760: 2e 41 64 64 69 74 69 6f 6e 61 6c 43 6f 6e 74 65  .AdditionalConte
3770: 6e 74 52 65 73 6f 75 72 63 65 44 69 72 65 63 74  ntResourceDirect
3780: 6f 72 79 29 2e 4c 65 6e 67 74 68 20 3e 20 30 29  ory).Length > 0)
3790: 0d 0a 09 09 09 09 62 75 69 6c 64 43 6f 6e 74 65  ......buildConte
37a0: 78 74 2e 43 6f 70 79 54 6f 57 6f 72 6b 69 6e 67  xt.CopyToWorking
37b0: 44 69 72 65 63 74 6f 72 79 28 6e 65 77 20 44 69  Directory(new Di
37c0: 72 65 63 74 6f 72 79 49 6e 66 6f 28 4d 79 43 6f  rectoryInfo(MyCo
37d0: 6e 66 69 67 2e 41 64 64 69 74 69 6f 6e 61 6c 43  nfig.AdditionalC
37e0: 6f 6e 74 65 6e 74 52 65 73 6f 75 72 63 65 44 69  ontentResourceDi
37f0: 72 65 63 74 6f 72 79 29 29 3b 0d 0a 0d 0a 09 09  rectory));......
3800: 09 2f 2f 20 57 72 69 74 65 20 74 68 65 20 65 78  .// Write the ex
3810: 74 65 72 6e 61 6c 20 66 69 6c 65 73 20 28 46 69  ternal files (Fi
3820: 6c 65 73 54 6f 49 6e 63 6c 75 64 65 29 20 74 6f  lesToInclude) to
3830: 20 74 68 65 20 68 74 6d 6c 20 6f 75 74 70 75 74   the html output
3840: 20 64 69 72 65 63 74 6f 72 79 0d 0a 0d 0a 09 09   directory......
3850: 09 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67  .foreach (string
3860: 20 73 72 63 46 69 6c 65 50 61 74 74 65 72 6e 20   srcFilePattern 
3870: 69 6e 20 4d 79 43 6f 6e 66 69 67 2e 46 69 6c 65  in MyConfig.File
3880: 73 54 6f 49 6e 63 6c 75 64 65 2e 53 70 6c 69 74  sToInclude.Split
3890: 28 27 7c 27 29 29 20 7b 0d 0a 09 09 09 09 69 66  ('|')) {......if
38a0: 20 28 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (string.IsNullO
38b0: 72 45 6d 70 74 79 28 73 72 63 46 69 6c 65 50 61  rEmpty(srcFilePa
38c0: 74 74 65 72 6e 29 29 0d 0a 09 09 09 09 09 63 6f  ttern)).......co
38d0: 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 09 09 09 09 73  ntinue;........s
38e0: 74 72 69 6e 67 20 70 61 74 68 20 3d 20 50 61 74  tring path = Pat
38f0: 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61  h.GetDirectoryNa
3900: 6d 65 28 73 72 63 46 69 6c 65 50 61 74 74 65 72  me(srcFilePatter
3910: 6e 29 3b 0d 0a 09 09 09 09 73 74 72 69 6e 67 20  n);......string 
3920: 70 61 74 74 65 72 6e 20 3d 20 50 61 74 68 2e 47  pattern = Path.G
3930: 65 74 46 69 6c 65 4e 61 6d 65 28 73 72 63 46 69  etFileName(srcFi
3940: 6c 65 50 61 74 74 65 72 6e 29 3b 0d 0a 0d 0a 09  lePattern);.....
3950: 09 09 09 2f 2f 20 50 61 74 68 2e 47 65 74 44 69  ...// Path.GetDi
3960: 72 65 63 74 6f 72 79 4e 61 6d 65 20 63 61 6e 20  rectoryName can 
3970: 72 65 74 75 72 6e 20 6e 75 6c 6c 20 69 6e 20 73  return null in s
3980: 6f 6d 65 20 63 61 73 65 73 2e 0d 0a 09 09 09 09  ome cases.......
3990: 2f 2f 20 54 72 65 61 74 20 74 68 69 73 20 61 73  // Treat this as
39a0: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
39b0: 2e 0d 0a 09 09 09 09 69 66 20 28 70 61 74 68 20  .......if (path 
39c0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 09 09 09 09 09 70  == null).......p
39d0: 61 74 68 20 3d 20 73 74 72 69 6e 67 2e 45 6d 70  ath = string.Emp
39e0: 74 79 3b 0d 0a 0d 0a 09 09 09 09 2f 2f 20 4d 61  ty;........// Ma
39f0: 6b 65 20 73 75 72 65 20 77 65 20 68 61 76 65 20  ke sure we have 
3a00: 61 20 66 75 6c 6c 79 2d 71 75 61 6c 69 66 69 65  a fully-qualifie
3a10: 64 20 70 61 74 68 20 6e 61 6d 65 0d 0a 09 09 09  d path name.....
3a20: 09 69 66 20 28 21 50 61 74 68 2e 49 73 50 61 74  .if (!Path.IsPat
3a30: 68 52 6f 6f 74 65 64 28 70 61 74 68 29 29 0d 0a  hRooted(path))..
3a40: 09 09 09 09 09 70 61 74 68 20 3d 20 50 61 74 68  .....path = Path
3a50: 2e 43 6f 6d 62 69 6e 65 28 45 6e 76 69 72 6f 6e  .Combine(Environ
3a60: 6d 65 6e 74 2e 43 75 72 72 65 6e 74 44 69 72 65  ment.CurrentDire
3a70: 63 74 6f 72 79 2c 20 70 61 74 68 29 3b 0d 0a 0d  ctory, path);...
3a80: 0a 09 09 09 09 2f 2f 20 44 69 72 65 63 74 6f 72  .....// Director
3a90: 79 2e 47 65 74 46 69 6c 65 73 20 64 6f 65 73 20  y.GetFiles does 
3aa0: 6e 6f 74 20 61 63 63 65 70 74 20 6e 75 6c 6c 20  not accept null 
3ab0: 6f 72 20 65 6d 70 74 79 20 73 74 72 69 6e 67 0d  or empty string.
3ac0: 0a 09 09 09 09 2f 2f 20 66 6f 72 20 74 68 65 20  .....// for the 
3ad0: 73 65 61 72 63 68 50 61 74 74 65 72 6e 20 70 61  searchPattern pa
3ae0: 72 61 6d 65 74 65 72 2e 20 57 68 65 6e 20 6e 6f  rameter. When no
3af0: 20 70 61 74 74 65 72 6e 20 77 61 73 0d 0a 09 09   pattern was....
3b00: 09 09 2f 2f 20 73 70 65 63 69 66 69 65 64 2c 20  ..// specified, 
3b10: 61 73 73 75 6d 65 20 61 6c 6c 20 66 69 6c 65 73  assume all files
3b20: 20 28 2a 29 20 61 72 65 20 77 61 6e 74 65 64 2e   (*) are wanted.
3b30: 0d 0a 09 09 09 09 69 66 20 28 73 74 72 69 6e 67  ......if (string
3b40: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70  .IsNullOrEmpty(p
3b50: 61 74 74 65 72 6e 29 29 0d 0a 09 09 09 09 09 70  attern)).......p
3b60: 61 74 74 65 72 6e 20 3d 20 22 2a 22 3b 0d 0a 0d  attern = "*";...
3b70: 0a 09 09 09 09 66 6f 72 65 61 63 68 20 28 73 74  .....foreach (st
3b80: 72 69 6e 67 20 73 72 63 46 69 6c 65 20 69 6e 20  ring srcFile in 
3b90: 44 69 72 65 63 74 6f 72 79 2e 47 65 74 46 69 6c  Directory.GetFil
3ba0: 65 73 28 70 61 74 68 2c 20 70 61 74 74 65 72 6e  es(path, pattern
3bb0: 29 29 20 7b 0d 0a 09 09 09 09 09 73 74 72 69 6e  )) {.......strin
3bc0: 67 20 64 73 74 46 69 6c 65 20 3d 20 50 61 74 68  g dstFile = Path
3bd0: 2e 43 6f 6d 62 69 6e 65 28 62 75 69 6c 64 43 6f  .Combine(buildCo
3be0: 6e 74 65 78 74 2e 57 6f 72 6b 69 6e 67 44 69 72  ntext.WorkingDir
3bf0: 65 63 74 6f 72 79 2e 46 75 6c 6c 4e 61 6d 65 2c  ectory.FullName,
3c00: 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d   Path.GetFileNam
3c10: 65 28 73 72 63 46 69 6c 65 29 29 3b 0d 0a 09 09  e(srcFile));....
3c20: 09 09 09 46 69 6c 65 2e 43 6f 70 79 28 73 72 63  ...File.Copy(src
3c30: 46 69 6c 65 2c 20 64 73 74 46 69 6c 65 2c 20 74  File, dstFile, t
3c40: 72 75 65 29 3b 0d 0a 09 09 09 09 09 46 69 6c 65  rue);.......File
3c50: 2e 53 65 74 41 74 74 72 69 62 75 74 65 73 28 64  .SetAttributes(d
3c60: 73 74 46 69 6c 65 2c 20 46 69 6c 65 41 74 74 72  stFile, FileAttr
3c70: 69 62 75 74 65 73 2e 41 72 63 68 69 76 65 29 3b  ibutes.Archive);
3c80: 0d 0a 09 09 09 09 09 66 69 6c 65 73 54 6f 49 6e  .......filesToIn
3c90: 63 6c 75 64 65 2e 41 64 64 28 64 73 74 46 69 6c  clude.Add(dstFil
3ca0: 65 29 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 7d  e);......}.....}
3cb0: 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61  ....}......priva
3cc0: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 58  te static void X
3cd0: 73 6c 54 72 61 6e 73 66 6f 72 6d 28 42 75 69 6c  slTransform(Buil
3ce0: 64 50 72 6f 6a 65 63 74 43 6f 6e 74 65 78 74 20  dProjectContext 
3cf0: 62 75 69 6c 64 43 6f 6e 74 65 78 74 2c 20 73 74  buildContext, st
3d00: 72 69 6e 67 20 73 74 79 6c 65 73 68 65 65 74 4e  ring stylesheetN
3d10: 61 6d 65 2c 20 49 58 50 61 74 68 4e 61 76 69 67  ame, IXPathNavig
3d20: 61 62 6c 65 20 78 70 61 74 68 4e 61 76 69 67 61  able xpathNaviga
3d30: 62 6c 65 2c 20 58 73 6c 74 41 72 67 75 6d 65 6e  ble, XsltArgumen
3d40: 74 4c 69 73 74 20 61 72 67 75 6d 65 6e 74 73 2c  tList arguments,
3d50: 20 54 65 78 74 57 72 69 74 65 72 20 77 72 69 74   TextWriter writ
3d60: 65 72 2c 20 73 74 72 69 6e 67 20 74 61 72 67 65  er, string targe
3d70: 74 46 69 6c 65 6e 61 6d 65 29 0d 0a 09 09 7b 0d  tFilename)....{.
3d80: 0a 09 09 09 53 74 79 6c 65 53 68 65 65 74 20 73  ....StyleSheet s
3d90: 74 79 6c 65 73 68 65 65 74 20 3d 20 62 75 69 6c  tylesheet = buil
3da0: 64 43 6f 6e 74 65 78 74 2e 73 74 79 6c 65 73 68  dContext.stylesh
3db0: 65 65 74 73 5b 73 74 79 6c 65 73 68 65 65 74 4e  eets[stylesheetN
3dc0: 61 6d 65 5d 3b 0d 0a 09 09 09 74 72 79 20 7b 0d  ame];.....try {.
3dd0: 0a 09 09 09 09 73 74 79 6c 65 73 68 65 65 74 2e  .....stylesheet.
3de0: 54 72 61 6e 73 66 6f 72 6d 28 78 70 61 74 68 4e  Transform(xpathN
3df0: 61 76 69 67 61 62 6c 65 2c 20 61 72 67 75 6d 65  avigable, argume
3e00: 6e 74 73 2c 20 77 72 69 74 65 72 29 3b 0d 0a 09  nts, writer);...
3e10: 09 09 7d 20 63 61 74 63 68 20 28 58 73 6c 74 45  ..} catch (XsltE
3e20: 78 63 65 70 74 69 6f 6e 20 65 78 29 20 7b 0d 0a  xception ex) {..
3e30: 09 09 09 09 74 68 72 6f 77 20 6e 65 77 20 44 6f  ....throw new Do
3e40: 63 75 6d 65 6e 74 65 72 45 78 63 65 70 74 69 6f  cumenterExceptio
3e50: 6e 28 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  n(string.Format(
3e60: 22 58 53 4c 54 20 65 72 72 6f 72 20 77 68 69 6c  "XSLT error whil
3e70: 65 20 77 72 69 74 69 6e 67 20 66 69 6c 65 20 7b  e writing file {
3e80: 30 7d 20 75 73 69 6e 67 20 73 74 79 6c 65 73 68  0} using stylesh
3e90: 65 65 74 20 7b 31 7d 28 7b 32 7d 3a 7b 33 7d 29  eet {1}({2}:{3})
3ea0: 20 3a 20 7b 34 7d 22 2c 20 74 61 72 67 65 74 46   : {4}", targetF
3eb0: 69 6c 65 6e 61 6d 65 2c 20 73 74 79 6c 65 73 68  ilename, stylesh
3ec0: 65 65 74 4e 61 6d 65 2c 20 65 78 2e 4c 69 6e 65  eetName, ex.Line
3ed0: 4e 75 6d 62 65 72 2c 20 65 78 2e 4c 69 6e 65 50  Number, ex.LineP
3ee0: 6f 73 69 74 69 6f 6e 2c 20 65 78 2e 4d 65 73 73  osition, ex.Mess
3ef0: 61 67 65 29 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09  age));.....}....
3f00: 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 4d  }......private M
3f10: 73 64 6e 44 6f 63 75 6d 65 6e 74 65 72 43 6f 6e  sdnDocumenterCon
3f20: 66 69 67 20 4d 79 43 6f 6e 66 69 67 0d 0a 09 09  fig MyConfig....
3f30: 7b 0d 0a 09 09 09 67 65 74 0d 0a 09 09 09 7b 0d  {.....get.....{.
3f40: 0a 09 09 09 09 72 65 74 75 72 6e 20 28 4d 73 64  .....return (Msd
3f50: 6e 44 6f 63 75 6d 65 6e 74 65 72 43 6f 6e 66 69  nDocumenterConfi
3f60: 67 29 43 6f 6e 66 69 67 3b 0d 0a 09 09 09 7d 0d  g)Config;.....}.
3f70: 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74  ...}......privat
3f80: 65 20 73 74 61 74 69 63 20 57 68 69 63 68 54 79  e static WhichTy
3f90: 70 65 20 47 65 74 57 68 69 63 68 54 79 70 65 28  pe GetWhichType(
3fa0: 58 6d 6c 4e 6f 64 65 20 74 79 70 65 4e 6f 64 65  XmlNode typeNode
3fb0: 29 0d 0a 09 09 7b 0d 0a 09 09 09 57 68 69 63 68  )....{.....Which
3fc0: 54 79 70 65 20 77 68 69 63 68 54 79 70 65 3b 0d  Type whichType;.
3fd0: 0a 0d 0a 09 09 09 73 77 69 74 63 68 20 28 74 79  ......switch (ty
3fe0: 70 65 4e 6f 64 65 2e 4e 61 6d 65 29 20 7b 0d 0a  peNode.Name) {..
3ff0: 09 09 09 09 63 61 73 65 20 22 63 6c 61 73 73 22  ....case "class"
4000: 3a 0d 0a 09 09 09 09 09 77 68 69 63 68 54 79 70  :.......whichTyp
4010: 65 20 3d 20 57 68 69 63 68 54 79 70 65 2e 43 6c  e = WhichType.Cl
4020: 61 73 73 3b 0d 0a 09 09 09 09 09 62 72 65 61 6b  ass;.......break
4030: 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 69 6e 74  ;......case "int
4040: 65 72 66 61 63 65 22 3a 0d 0a 09 09 09 09 09 77  erface":.......w
4050: 68 69 63 68 54 79 70 65 20 3d 20 57 68 69 63 68  hichType = Which
4060: 54 79 70 65 2e 49 6e 74 65 72 66 61 63 65 3b 0d  Type.Interface;.
4070: 0a 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09  ......break;....
4080: 09 09 63 61 73 65 20 22 73 74 72 75 63 74 75 72  ..case "structur
4090: 65 22 3a 0d 0a 09 09 09 09 09 77 68 69 63 68 54  e":.......whichT
40a0: 79 70 65 20 3d 20 57 68 69 63 68 54 79 70 65 2e  ype = WhichType.
40b0: 53 74 72 75 63 74 75 72 65 3b 0d 0a 09 09 09 09  Structure;......
40c0: 09 62 72 65 61 6b 3b 0d 0a 09 09 09 09 63 61 73  .break;......cas
40d0: 65 20 22 65 6e 75 6d 65 72 61 74 69 6f 6e 22 3a  e "enumeration":
40e0: 0d 0a 09 09 09 09 09 77 68 69 63 68 54 79 70 65  .......whichType
40f0: 20 3d 20 57 68 69 63 68 54 79 70 65 2e 45 6e 75   = WhichType.Enu
4100: 6d 65 72 61 74 69 6f 6e 3b 0d 0a 09 09 09 09 09  meration;.......
4110: 62 72 65 61 6b 3b 0d 0a 09 09 09 09 63 61 73 65  break;......case
4120: 20 22 64 65 6c 65 67 61 74 65 22 3a 0d 0a 09 09   "delegate":....
4130: 09 09 09 77 68 69 63 68 54 79 70 65 20 3d 20 57  ...whichType = W
4140: 68 69 63 68 54 79 70 65 2e 44 65 6c 65 67 61 74  hichType.Delegat
4150: 65 3b 0d 0a 09 09 09 09 09 62 72 65 61 6b 3b 0d  e;.......break;.
4160: 0a 09 09 09 09 64 65 66 61 75 6c 74 3a 0d 0a 09  .....default:...
4170: 09 09 09 09 77 68 69 63 68 54 79 70 65 20 3d 20  ....whichType = 
4180: 57 68 69 63 68 54 79 70 65 2e 55 6e 6b 6e 6f 77  WhichType.Unknow
4190: 6e 3b 0d 0a 09 09 09 09 09 62 72 65 61 6b 3b 0d  n;.......break;.
41a0: 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 72 65 74 75  ....}.......retu
41b0: 72 6e 20 77 68 69 63 68 54 79 70 65 3b 0d 0a 09  rn whichType;...
41c0: 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20  .}......private 
41d0: 76 6f 69 64 20 4d 61 6b 65 48 74 6d 6c 46 6f 72  void MakeHtmlFor
41e0: 41 73 73 65 6d 62 6c 69 65 73 28 42 75 69 6c 64  Assemblies(Build
41f0: 50 72 6f 6a 65 63 74 43 6f 6e 74 65 78 74 20 63  ProjectContext c
4200: 74 78 2c 20 62 6f 6f 6c 20 6d 65 72 67 65 41 73  tx, bool mergeAs
4210: 73 65 6d 62 6c 69 65 73 29 0d 0a 09 09 7b 0d 0a  semblies)....{..
4220: 23 69 66 20 44 45 42 55 47 0d 0a 09 09 09 69 6e  #if DEBUG.....in
4230: 74 20 73 74 61 72 74 20 3d 20 45 6e 76 69 72 6f  t start = Enviro
4240: 6e 6d 65 6e 74 2e 54 69 63 6b 43 6f 75 6e 74 3b  nment.TickCount;
4250: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 09 09 09 4d  ..#endif.......M
4260: 61 6b 65 48 74 6d 6c 46 6f 72 41 73 73 65 6d 62  akeHtmlForAssemb
4270: 6c 69 65 73 53 6f 72 74 65 64 28 63 74 78 2c 20  liesSorted(ctx, 
4280: 6d 65 72 67 65 41 73 73 65 6d 62 6c 69 65 73 29  mergeAssemblies)
4290: 3b 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  ;....#if DEBUG..
42a0: 09 09 09 54 72 61 63 65 2e 57 72 69 74 65 4c 69  ...Trace.WriteLi
42b0: 6e 65 28 22 4d 61 6b 69 6e 67 20 48 74 6d 6c 3a  ne("Making Html:
42c0: 20 22 20 2b 20 28 28 45 6e 76 69 72 6f 6e 6d 65   " + ((Environme
42d0: 6e 74 2e 54 69 63 6b 43 6f 75 6e 74 20 2d 20 73  nt.TickCount - s
42e0: 74 61 72 74 29 20 2f 20 31 30 30 30 2e 30 29 20  tart) / 1000.0) 
42f0: 2b 20 22 20 73 65 63 2e 22 29 3b 0d 0a 23 65 6e  + " sec.");..#en
4300: 64 69 66 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72  dif....}......pr
4310: 69 76 61 74 65 20 76 6f 69 64 20 4d 61 6b 65 48  ivate void MakeH
4320: 74 6d 6c 46 6f 72 41 73 73 65 6d 62 6c 69 65 73  tmlForAssemblies
4330: 53 6f 72 74 65 64 28 42 75 69 6c 64 50 72 6f 6a  Sorted(BuildProj
4340: 65 63 74 43 6f 6e 74 65 78 74 20 63 74 78 2c 20  ectContext ctx, 
4350: 62 6f 6f 6c 20 6d 65 72 67 65 41 73 73 65 6d 62  bool mergeAssemb
4360: 6c 69 65 73 29 0d 0a 09 09 7b 0d 0a 09 09 09 63  lies)....{.....c
4370: 6f 6e 73 74 20 73 74 72 69 6e 67 20 64 65 66 61  onst string defa
4380: 75 6c 74 4e 61 6d 65 73 70 61 63 65 20 3d 20 6e  ultNamespace = n
4390: 75 6c 6c 3b 0d 0a 0d 0a 09 09 09 58 6d 6c 4e 6f  ull;.......XmlNo
43a0: 64 65 4c 69 73 74 20 61 73 73 65 6d 62 6c 79 4e  deList assemblyN
43b0: 6f 64 65 73 20 3d 20 63 74 78 2e 53 65 6c 65 63  odes = ctx.Selec
43c0: 74 4e 6f 64 65 73 28 22 2f 6e 64 6f 63 3a 6e 64  tNodes("/ndoc:nd
43d0: 6f 63 2f 6e 64 6f 63 3a 61 73 73 65 6d 62 6c 79  oc/ndoc:assembly
43e0: 22 29 3b 0d 0a 0d 0a 09 09 09 4c 69 73 74 3c 73  ");.......List<s
43f0: 74 72 69 6e 67 3e 20 61 73 73 65 6d 62 6c 79 4e  tring> assemblyN
4400: 61 6d 65 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c  ames = new List<
4410: 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 09 09 09 66  string>();.....f
4420: 6f 72 65 61 63 68 28 58 6d 6c 4e 6f 64 65 20 6e  oreach(XmlNode n
4430: 6f 64 65 20 69 6e 20 61 73 73 65 6d 62 6c 79 4e  ode in assemblyN
4440: 6f 64 65 73 29 20 61 73 73 65 6d 62 6c 79 4e 61  odes) assemblyNa
4450: 6d 65 73 2e 41 64 64 28 47 65 74 4e 6f 64 65 4e  mes.Add(GetNodeN
4460: 61 6d 65 28 6e 6f 64 65 29 29 3b 0d 0a 09 09 09  ame(node));.....
4470: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 73 2e 53 6f  assemblyNames.So
4480: 72 74 28 29 3b 0d 0a 0d 0a 09 09 09 69 66 20 28  rt();.......if (
4490: 6d 65 72 67 65 41 73 73 65 6d 62 6c 69 65 73 29  mergeAssemblies)
44a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
44b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
44c0: 20 2f 2f 20 73 6f 72 74 20 6e 61 6d 65 73 70 61   // sort namespa
44d0: 63 65 73 20 61 6c 70 68 61 62 65 74 69 63 61 6c  ces alphabetical
44e0: 6c 79 20 65 78 63 65 70 74 20 66 6f 72 20 64 65  ly except for de
44f0: 66 61 75 6c 74 4e 61 6d 65 73 70 61 63 65 2c 20  faultNamespace, 
4500: 77 68 69 63 68 20 69 73 20 61 6c 77 61 79 73 20  which is always 
4510: 66 69 72 73 74 0d 0a 09 09 09 09 73 74 72 69 6e  first......strin
4520: 67 5b 5d 20 6e 61 6d 65 73 70 61 63 65 73 20 3d  g[] namespaces =
4530: 20 53 6f 72 74 4e 61 6d 65 73 70 61 63 65 73 28   SortNamespaces(
4540: 63 74 78 2c 20 61 73 73 65 6d 62 6c 79 4e 61 6d  ctx, assemblyNam
4550: 65 73 2c 20 64 65 66 61 75 6c 74 4e 61 6d 65 73  es, defaultNames
4560: 70 61 63 65 29 3b 0d 0a 09 09 09 09 4d 61 6b 65  pace);......Make
4570: 48 74 6d 6c 46 6f 72 4e 61 6d 65 73 70 61 63 65  HtmlForNamespace
4580: 73 28 63 74 78 2c 20 6e 75 6c 6c 2c 20 6e 61 6d  s(ctx, null, nam
4590: 65 73 70 61 63 65 73 29 3b 20 20 20 20 20 20 20  espaces);       
45a0: 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20           ..     
45b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
45c0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
45d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
45e0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
45f0: 63 68 20 28 73 74 72 69 6e 67 20 63 75 72 72 65  ch (string curre
4600: 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 69  ntAssemblyName i
4610: 6e 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 73 29  n assemblyNames)
4620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4630: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4640: 20 20 20 20 20 20 20 20 20 4d 61 6b 65 48 74 6d           MakeHtm
4650: 6c 46 6f 72 41 73 73 65 6d 62 6c 79 28 63 74 78  lForAssembly(ctx
4660: 2c 20 63 75 72 72 65 6e 74 41 73 73 65 6d 62 6c  , currentAssembl
4670: 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09 09  yName);.........
4680: 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 4f 70 65  ctx.htmlHelp.Ope
4690: 6e 42 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28  nBookInContents(
46a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
46b0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
46c0: 20 6e 61 6d 65 73 70 61 63 65 73 20 3d 20 53 6f   namespaces = So
46d0: 72 74 4e 61 6d 65 73 70 61 63 65 73 28 63 74 78  rtNamespaces(ctx
46e0: 2c 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e  , new List<strin
46f0: 67 3e 28 20 6e 65 77 5b 5d 20 7b 20 63 75 72 72  g>( new[] { curr
4700: 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  entAssemblyName 
4710: 7d 29 20 2c 20 64 65 66 61 75 6c 74 4e 61 6d 65  }) , defaultName
4720: 73 70 61 63 65 29 3b 0d 0a 09 09 09 09 09 4d 61  space);.......Ma
4730: 6b 65 48 74 6d 6c 46 6f 72 4e 61 6d 65 73 70 61  keHtmlForNamespa
4740: 63 65 73 28 63 74 78 2c 20 63 75 72 72 65 6e 74  ces(ctx, current
4750: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6e 61  AssemblyName, na
4760: 6d 65 73 70 61 63 65 73 29 3b 0d 0a 09 09 09 09  mespaces);......
4770: 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 43 6c  .ctx.htmlHelp.Cl
4780: 6f 73 65 42 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74  oseBookInContent
4790: 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
47a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
47b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
47c0: 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 76  }......private v
47d0: 6f 69 64 20 4d 61 6b 65 48 74 6d 6c 46 6f 72 41  oid MakeHtmlForA
47e0: 73 73 65 6d 62 6c 79 28 42 75 69 6c 64 50 72 6f  ssembly(BuildPro
47f0: 6a 65 63 74 43 6f 6e 74 65 78 74 20 63 74 78 2c  jectContext ctx,
4800: 20 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79   string assembly
4810: 4e 61 6d 65 29 0d 0a 09 09 7b 0d 0a 09 09 09 42  Name)....{.....B
4820: 75 69 6c 64 41 73 73 65 6d 62 6c 79 43 6f 6e 74  uildAssemblyCont
4830: 65 78 74 20 61 63 74 78 20 3d 20 6e 65 77 20 42  ext actx = new B
4840: 75 69 6c 64 41 73 73 65 6d 62 6c 79 43 6f 6e 74  uildAssemblyCont
4850: 65 78 74 28 63 74 78 2c 20 61 73 73 65 6d 62 6c  ext(ctx, assembl
4860: 79 4e 61 6d 65 29 3b 0d 0a 09 09 09 73 74 72 69  yName);.....stri
4870: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74  ng fileName = ct
4880: 78 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e  x._nameResolver.
4890: 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 41 73  GetFilenameForAs
48a0: 73 65 6d 62 6c 79 28 61 73 73 65 6d 62 6c 79 4e  sembly(assemblyN
48b0: 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 58 73 6c 74  ame);.......Xslt
48c0: 41 72 67 75 6d 65 6e 74 4c 69 73 74 20 61 72 67  ArgumentList arg
48d0: 75 6d 65 6e 74 73 20 3d 20 6e 65 77 20 58 73 6c  uments = new Xsl
48e0: 74 41 72 67 75 6d 65 6e 74 4c 69 73 74 28 29 3b  tArgumentList();
48f0: 0d 0a 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41  .....arguments.A
4900: 64 64 50 61 72 61 6d 28 22 61 73 73 65 6d 62 6c  ddParam("assembl
4910: 79 2d 6e 61 6d 65 22 2c 20 53 74 72 69 6e 67 2e  y-name", String.
4920: 45 6d 70 74 79 2c 20 61 73 73 65 6d 62 6c 79 4e  Empty, assemblyN
4930: 61 6d 65 29 3b 0d 0a 09 09 09 54 72 61 6e 73 66  ame);.....Transf
4940: 6f 72 6d 41 6e 64 57 72 69 74 65 52 65 73 75 6c  ormAndWriteResul
4950: 74 28 61 63 74 78 2c 20 22 61 73 73 65 6d 62 6c  t(actx, "assembl
4960: 79 22 2c 20 61 72 67 75 6d 65 6e 74 73 2c 20 66  y", arguments, f
4970: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09  ileName);.......
4980: 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 41 64 64  ctx.htmlHelp.Add
4990: 46 69 6c 65 54 6f 43 6f 6e 74 65 6e 74 73 28 61  FileToContents(a
49a0: 73 73 65 6d 62 6c 79 4e 61 6d 65 20 2b 20 22 20  ssemblyName + " 
49b0: 41 73 73 65 6d 62 6c 79 22 2c 20 66 69 6c 65 4e  Assembly", fileN
49c0: 61 6d 65 2c 20 48 74 6d 6c 48 65 6c 70 49 63 6f  ame, HtmlHelpIco
49d0: 6e 2e 50 61 67 65 29 3b 0d 0a 09 09 7d 0d 0a 0d  n.Page);....}...
49e0: 0a 09 09 70 72 69 76 61 74 65 20 76 6f 69 64 20  ...private void 
49f0: 4d 61 6b 65 48 74 6d 6c 46 6f 72 4e 61 6d 65 73  MakeHtmlForNames
4a00: 70 61 63 65 73 28 42 75 69 6c 64 50 72 6f 6a 65  paces(BuildProje
4a10: 63 74 43 6f 6e 74 65 78 74 20 63 74 78 2c 20 73  ctContext ctx, s
4a20: 74 72 69 6e 67 20 63 75 72 72 65 6e 74 41 73 73  tring currentAss
4a30: 65 6d 62 6c 79 2c 20 49 4c 69 73 74 3c 73 74 72  embly, IList<str
4a40: 69 6e 67 3e 20 6e 61 6d 65 73 70 61 63 65 73 29  ing> namespaces)
4a50: 0d 0a 09 09 7b 0d 0a 09 09 09 69 6e 74 20 6e 4e  ....{.....int nN
4a60: 6f 64 65 73 20 3d 20 6e 61 6d 65 73 70 61 63 65  odes = namespace
4a70: 73 2e 43 6f 75 6e 74 3b 0d 0a 0d 0a 09 09 09 62  s.Count;.......b
4a80: 6f 6f 6c 20 68 65 69 72 54 4f 43 20 3d 20 28 4d  ool heirTOC = (M
4a90: 79 43 6f 6e 66 69 67 2e 4e 61 6d 65 73 70 61 63  yConfig.Namespac
4aa0: 65 54 4f 43 53 74 79 6c 65 20 3d 3d 20 54 4f 43  eTOCStyle == TOC
4ab0: 53 74 79 6c 65 2e 48 69 65 72 61 72 63 68 69 63  Style.Hierarchic
4ac0: 61 6c 29 3b 0d 0a 09 09 09 69 6e 74 20 6c 65 76  al);.....int lev
4ad0: 65 6c 20 3d 20 30 3b 0d 0a 0d 0a 09 09 09 73 74  el = 0;.......st
4ae0: 72 69 6e 67 5b 5d 20 6c 61 73 74 20 3d 20 6e 65  ring[] last = ne
4af0: 77 20 73 74 72 69 6e 67 5b 30 5d 3b 0d 0a 0d 0a  w string[0];....
4b00: 09 09 09 42 75 69 6c 64 41 73 73 65 6d 62 6c 79  ...BuildAssembly
4b10: 43 6f 6e 74 65 78 74 20 67 65 6e 65 72 61 74 6f  Context generato
4b20: 72 43 6f 6e 74 65 78 74 20 3d 20 6e 75 6c 6c 3b  rContext = null;
4b30: 0d 0a 09 09 09 66 6f 72 20 28 69 6e 74 20 69 20  .....for (int i 
4b40: 3d 20 30 3b 20 69 20 3c 20 6e 4e 6f 64 65 73 3b  = 0; i < nNodes;
4b50: 20 69 2b 2b 29 20 7b 0d 0a 09 09 09 09 4f 6e 44   i++) {......OnD
4b60: 6f 63 42 75 69 6c 64 69 6e 67 50 72 6f 67 72 65  ocBuildingProgre
4b70: 73 73 28 69 20 2a 20 31 30 30 20 2f 20 6e 4e 6f  ss(i * 100 / nNo
4b80: 64 65 73 29 3b 20 2f 2f 20 54 4f 44 4f 20 28 45  des); // TODO (E
4b90: 45 29 3a 20 66 69 78 20 63 61 6c 63 20 66 6f 72  E): fix calc for
4ba0: 20 21 4d 65 72 67 65 41 73 73 65 6d 62 6c 69 65   !MergeAssemblie
4bb0: 73 20 6d 6f 64 65 0d 0a 0d 0a 09 09 09 09 73 74  s mode........st
4bc0: 72 69 6e 67 20 63 75 72 72 65 6e 74 4e 61 6d 65  ring currentName
4bd0: 73 70 61 63 65 20 3d 20 6e 61 6d 65 73 70 61 63  space = namespac
4be0: 65 73 5b 69 5d 3b 0d 0a 09 09 09 09 2f 2f 20 64  es[i];......// d
4bf0: 65 74 65 72 6d 69 6e 65 20 61 73 73 65 6d 62 6c  etermine assembl
4c00: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69  y containing thi
4c10: 73 20 6e 61 6d 65 73 70 61 63 65 0d 0a 09 09 09  s namespace.....
4c20: 09 58 6d 6c 4e 6f 64 65 4c 69 73 74 20 6e 61 6d  .XmlNodeList nam
4c30: 65 73 70 61 63 65 4e 6f 64 65 73 20 3d 20 28 63  espaceNodes = (c
4c40: 75 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 3d 3d  urrentAssembly==
4c50: 6e 75 6c 6c 29 20 0d 0a 09 09 09 09 09 3f 20 63  null) .......? c
4c60: 74 78 2e 53 65 6c 65 63 74 4e 6f 64 65 73 28 73  tx.SelectNodes(s
4c70: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22 2f 6e  tring.Format("/n
4c80: 64 6f 63 3a 6e 64 6f 63 2f 6e 64 6f 63 3a 61 73  doc:ndoc/ndoc:as
4c90: 73 65 6d 62 6c 79 2f 6e 64 6f 63 3a 6d 6f 64 75  sembly/ndoc:modu
4ca0: 6c 65 2f 6e 64 6f 63 3a 6e 61 6d 65 73 70 61 63  le/ndoc:namespac
4cb0: 65 5b 40 6e 61 6d 65 3d 27 7b 30 7d 27 5d 22 2c  e[@name='{0}']",
4cc0: 20 63 75 72 72 65 6e 74 4e 61 6d 65 73 70 61 63   currentNamespac
4cd0: 65 29 29 0d 0a 09 09 09 09 09 3a 20 63 74 78 2e  e)).......: ctx.
4ce0: 53 65 6c 65 63 74 4e 6f 64 65 73 28 73 74 72 69  SelectNodes(stri
4cf0: 6e 67 2e 46 6f 72 6d 61 74 28 22 2f 6e 64 6f 63  ng.Format("/ndoc
4d00: 3a 6e 64 6f 63 2f 6e 64 6f 63 3a 61 73 73 65 6d  :ndoc/ndoc:assem
4d10: 62 6c 79 5b 40 6e 61 6d 65 3d 27 7b 30 7d 27 5d  bly[@name='{0}']
4d20: 2f 6e 64 6f 63 3a 6d 6f 64 75 6c 65 2f 6e 64 6f  /ndoc:module/ndo
4d30: 63 3a 6e 61 6d 65 73 70 61 63 65 5b 40 6e 61 6d  c:namespace[@nam
4d40: 65 3d 27 7b 31 7d 27 5d 22 2c 20 63 75 72 72 65  e='{1}']", curre
4d50: 6e 74 41 73 73 65 6d 62 6c 79 2c 20 63 75 72 72  ntAssembly, curr
4d60: 65 6e 74 4e 61 6d 65 73 70 61 63 65 29 29 3b 0d  entNamespace));.
4d70: 0a 0d 0a 09 09 09 09 73 74 72 69 6e 67 20 61 73  .......string as
4d80: 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 47 65 74  semblyName = Get
4d90: 4e 6f 64 65 4e 61 6d 65 28 63 74 78 2e 53 65 6c  NodeName(ctx.Sel
4da0: 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 6e 61  ectSingleNode(na
4db0: 6d 65 73 70 61 63 65 4e 6f 64 65 73 5b 30 5d 2c  mespaceNodes[0],
4dc0: 20 22 61 6e 63 65 73 74 6f 72 3a 3a 6e 64 6f 63   "ancestor::ndoc
4dd0: 3a 61 73 73 65 6d 62 6c 79 22 29 29 3b 0d 0a 09  :assembly"));...
4de0: 09 09 09 67 65 6e 65 72 61 74 6f 72 43 6f 6e 74  ...generatorCont
4df0: 65 78 74 20 3d 20 6e 65 77 20 42 75 69 6c 64 41  ext = new BuildA
4e00: 73 73 65 6d 62 6c 79 43 6f 6e 74 65 78 74 28 63  ssemblyContext(c
4e10: 74 78 2c 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  tx, assemblyName
4e20: 29 3b 0d 0a 0d 0a 09 09 09 09 69 66 20 28 68 65  );........if (he
4e30: 69 72 54 4f 43 29 20 7b 0d 0a 09 09 09 09 09 73  irTOC) {.......s
4e40: 74 72 69 6e 67 5b 5d 20 73 70 6c 69 74 20 3d 20  tring[] split = 
4e50: 63 75 72 72 65 6e 74 4e 61 6d 65 73 70 61 63 65  currentNamespace
4e60: 2e 53 70 6c 69 74 28 27 2e 27 29 3b 0d 0a 0d 0a  .Split('.');....
4e70: 09 09 09 09 09 66 6f 72 20 28 6c 65 76 65 6c 20  .....for (level 
4e80: 3d 20 6c 61 73 74 2e 4c 65 6e 67 74 68 3b 20 6c  = last.Length; l
4e90: 65 76 65 6c 20 3e 3d 20 30 20 26 26 0d 0a 09 09  evel >= 0 &&....
4ea0: 09 09 09 09 41 72 72 61 79 45 71 75 61 6c 73 28  ....ArrayEquals(
4eb0: 73 70 6c 69 74 2c 20 30 2c 20 6c 61 73 74 2c 20  split, 0, last, 
4ec0: 30 2c 20 6c 65 76 65 6c 29 20 3d 3d 20 66 61 6c  0, level) == fal
4ed0: 73 65 3b 20 6c 65 76 65 6c 2d 2d 29 20 7b 0d 0a  se; level--) {..
4ee0: 09 09 09 09 09 09 69 66 20 28 6c 65 76 65 6c 20  ......if (level 
4ef0: 3e 20 6c 61 73 74 2e 4c 65 6e 67 74 68 29 0d 0a  > last.Length)..
4f00: 09 09 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b  .......continue;
4f10: 0d 0a 0d 0a 09 09 09 09 09 09 73 74 72 69 6e 67  ..........string
4f20: 20 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65 20 3d   namespaceName =
4f30: 20 73 74 72 69 6e 67 2e 4a 6f 69 6e 28 22 2e 22   string.Join("."
4f40: 2c 20 6c 61 73 74 2c 20 30 2c 20 6c 65 76 65 6c  , last, 0, level
4f50: 29 3b 0d 0a 09 09 09 09 09 09 58 6d 6c 4e 6f 64  );........XmlNod
4f60: 65 4c 69 73 74 20 74 79 70 65 4e 6f 64 65 73 20  eList typeNodes 
4f70: 3d 20 47 65 74 54 79 70 65 4e 6f 64 65 73 28 63  = GetTypeNodes(c
4f80: 74 78 2c 20 63 75 72 72 65 6e 74 41 73 73 65 6d  tx, currentAssem
4f90: 62 6c 79 2c 20 6e 61 6d 65 73 70 61 63 65 4e 61  bly, namespaceNa
4fa0: 6d 65 29 3b 0d 0a 09 09 09 09 09 09 4d 61 6b 65  me);........Make
4fb0: 48 74 6d 6c 46 6f 72 54 79 70 65 73 28 67 65 6e  HtmlForTypes(gen
4fc0: 65 72 61 74 6f 72 43 6f 6e 74 65 78 74 2c 20 74  eratorContext, t
4fd0: 79 70 65 4e 6f 64 65 73 29 3b 0d 0a 09 09 09 09  ypeNodes);......
4fe0: 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 43  ..ctx.htmlHelp.C
4ff0: 6c 6f 73 65 42 6f 6f 6b 49 6e 43 6f 6e 74 65 6e  loseBookInConten
5000: 74 73 28 29 3b 0d 0a 09 09 09 09 09 7d 0d 0a 0d  ts();.......}...
5010: 0a 09 09 09 09 09 69 66 20 28 6c 65 76 65 6c 20  ......if (level 
5020: 3c 20 30 29 0d 0a 09 09 09 09 09 09 6c 65 76 65  < 0)........leve
5030: 6c 20 3d 20 30 3b 0d 0a 0d 0a 09 09 09 09 09 66  l = 0;.........f
5040: 6f 72 20 28 3b 20 6c 65 76 65 6c 20 3c 20 73 70  or (; level < sp
5050: 6c 69 74 2e 4c 65 6e 67 74 68 3b 20 6c 65 76 65  lit.Length; leve
5060: 6c 2b 2b 29 20 7b 0d 0a 09 09 09 09 09 09 73 74  l++) {........st
5070: 72 69 6e 67 20 6e 61 6d 65 73 70 61 63 65 4e 61  ring namespaceNa
5080: 6d 65 20 3d 20 73 74 72 69 6e 67 2e 4a 6f 69 6e  me = string.Join
5090: 28 22 2e 22 2c 20 73 70 6c 69 74 2c 20 30 2c 20  (".", split, 0, 
50a0: 6c 65 76 65 6c 20 2b 20 31 29 3b 0d 0a 0d 0a 09  level + 1);.....
50b0: 09 09 09 09 09 69 66 20 28 21 6e 61 6d 65 73 70  .....if (!namesp
50c0: 61 63 65 73 2e 43 6f 6e 74 61 69 6e 73 28 6e 61  aces.Contains(na
50d0: 6d 65 73 70 61 63 65 4e 61 6d 65 29 29 0d 0a 2f  mespaceName))../
50e0: 2f 09 09 09 09 09 09 69 66 20 28 41 72 72 61 79  /......if (Array
50f0: 2e 42 69 6e 61 72 79 53 65 61 72 63 68 28 6e 61  .BinarySearch(na
5100: 6d 65 73 70 61 63 65 73 2c 20 6e 61 6d 65 73 70  mespaces, namesp
5110: 61 63 65 4e 61 6d 65 29 20 3c 20 30 29 0d 0a 09  aceName) < 0)...
5120: 09 09 09 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f  ......MakeHtmlFo
5130: 72 4e 61 6d 65 73 70 61 63 65 28 67 65 6e 65 72  rNamespace(gener
5140: 61 74 6f 72 43 6f 6e 74 65 78 74 2c 20 73 70 6c  atorContext, spl
5150: 69 74 5b 6c 65 76 65 6c 5d 2c 20 6e 61 6d 65 73  it[level], names
5160: 70 61 63 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29  paceName, false)
5170: 3b 0d 0a 09 09 09 09 09 09 65 6c 73 65 0d 0a 09  ;........else...
5180: 09 09 09 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f  ......MakeHtmlFo
5190: 72 4e 61 6d 65 73 70 61 63 65 28 67 65 6e 65 72  rNamespace(gener
51a0: 61 74 6f 72 43 6f 6e 74 65 78 74 2c 20 73 70 6c  atorContext, spl
51b0: 69 74 5b 6c 65 76 65 6c 5d 2c 20 6e 61 6d 65 73  it[level], names
51c0: 70 61 63 65 4e 61 6d 65 2c 20 74 72 75 65 29 3b  paceName, true);
51d0: 0d 0a 0d 0a 09 09 09 09 09 09 63 74 78 2e 68 74  ..........ctx.ht
51e0: 6d 6c 48 65 6c 70 2e 4f 70 65 6e 42 6f 6f 6b 49  mlHelp.OpenBookI
51f0: 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a 09 09  nContents();....
5200: 09 09 09 7d 0d 0a 0d 0a 09 09 09 09 09 6c 61 73  ...}.........las
5210: 74 20 3d 20 73 70 6c 69 74 3b 0d 0a 09 09 09 09  t = split;......
5220: 7d 20 65 6c 73 65 20 7b 0d 0a 09 09 09 09 09 4d  } else {.......M
5230: 61 6b 65 48 74 6d 6c 46 6f 72 4e 61 6d 65 73 70  akeHtmlForNamesp
5240: 61 63 65 28 67 65 6e 65 72 61 74 6f 72 43 6f 6e  ace(generatorCon
5250: 74 65 78 74 2c 20 63 75 72 72 65 6e 74 4e 61 6d  text, currentNam
5260: 65 73 70 61 63 65 2c 20 63 75 72 72 65 6e 74 4e  espace, currentN
5270: 61 6d 65 73 70 61 63 65 2c 20 74 72 75 65 29 3b  amespace, true);
5280: 0d 0a 09 09 09 09 09 75 73 69 6e 67 20 28 63 74  .......using (ct
5290: 78 2e 68 74 6d 6c 48 65 6c 70 2e 4f 70 65 6e 42  x.htmlHelp.OpenB
52a0: 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 29  ookInContents())
52b0: 20 7b 0d 0a 09 09 09 09 09 09 58 6d 6c 4e 6f 64   {........XmlNod
52c0: 65 4c 69 73 74 20 74 79 70 65 4e 6f 64 65 73 20  eList typeNodes 
52d0: 3d 20 47 65 74 54 79 70 65 4e 6f 64 65 73 28 63  = GetTypeNodes(c
52e0: 74 78 2c 20 63 75 72 72 65 6e 74 41 73 73 65 6d  tx, currentAssem
52f0: 62 6c 79 2c 20 63 75 72 72 65 6e 74 4e 61 6d 65  bly, currentName
5300: 73 70 61 63 65 29 3b 0d 0a 09 09 09 09 09 09 4d  space);........M
5310: 61 6b 65 48 74 6d 6c 46 6f 72 54 79 70 65 73 28  akeHtmlForTypes(
5320: 67 65 6e 65 72 61 74 6f 72 43 6f 6e 74 65 78 74  generatorContext
5330: 2c 20 74 79 70 65 4e 6f 64 65 73 29 3b 0d 0a 09  , typeNodes);...
5340: 09 09 09 09 7d 0d 0a 09 09 09 09 7d 0d 0a 09 09  ....}......}....
5350: 09 7d 0d 0a 0d 0a 0d 0a 09 09 09 69 66 20 28 68  .}.........if (h
5360: 65 69 72 54 4f 43 20 26 26 20 6c 61 73 74 2e 4c  eirTOC && last.L
5370: 65 6e 67 74 68 20 3e 20 30 29 20 7b 0d 0a 09 09  ength > 0) {....
5380: 09 09 66 6f 72 20 28 3b 20 6c 65 76 65 6c 20 3e  ..for (; level >
5390: 3d 20 31 3b 20 6c 65 76 65 6c 2d 2d 29 20 7b 0d  = 1; level--) {.
53a0: 0a 09 09 09 09 09 73 74 72 69 6e 67 20 6e 73 20  ......string ns 
53b0: 3d 20 73 74 72 69 6e 67 2e 4a 6f 69 6e 28 22 2e  = string.Join(".
53c0: 22 2c 20 6c 61 73 74 2c 20 30 2c 20 6c 65 76 65  ", last, 0, leve
53d0: 6c 29 3b 0d 0a 09 09 09 09 09 58 6d 6c 4e 6f 64  l);.......XmlNod
53e0: 65 4c 69 73 74 20 74 79 70 65 4e 6f 64 65 73 20  eList typeNodes 
53f0: 3d 20 47 65 74 54 79 70 65 4e 6f 64 65 73 28 63  = GetTypeNodes(c
5400: 74 78 2c 20 63 75 72 72 65 6e 74 41 73 73 65 6d  tx, currentAssem
5410: 62 6c 79 2c 20 6e 73 29 3b 0d 0a 09 09 09 09 09  bly, ns);.......
5420: 4d 61 6b 65 48 74 6d 6c 46 6f 72 54 79 70 65 73  MakeHtmlForTypes
5430: 28 67 65 6e 65 72 61 74 6f 72 43 6f 6e 74 65 78  (generatorContex
5440: 74 2c 20 74 79 70 65 4e 6f 64 65 73 29 3b 0d 0a  t, typeNodes);..
5450: 09 09 09 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c  .....ctx.htmlHel
5460: 70 2e 43 6c 6f 73 65 42 6f 6f 6b 49 6e 43 6f 6e  p.CloseBookInCon
5470: 74 65 6e 74 73 28 29 3b 0d 0a 09 09 09 09 7d 0d  tents();......}.
5480: 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 4f 6e 44 6f  ....}.......OnDo
5490: 63 42 75 69 6c 64 69 6e 67 50 72 6f 67 72 65 73  cBuildingProgres
54a0: 73 28 31 30 30 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a  s(100);....}....
54b0: 09 09 70 72 69 76 61 74 65 20 73 74 61 74 69 63  ..private static
54c0: 20 58 6d 6c 4e 6f 64 65 4c 69 73 74 20 47 65 74   XmlNodeList Get
54d0: 54 79 70 65 4e 6f 64 65 73 28 42 75 69 6c 64 50  TypeNodes(BuildP
54e0: 72 6f 6a 65 63 74 43 6f 6e 74 65 78 74 20 63 74  rojectContext ct
54f0: 78 2c 20 73 74 72 69 6e 67 20 61 73 73 65 6d 62  x, string assemb
5500: 6c 79 2c 20 73 74 72 69 6e 67 20 6e 61 6d 65 73  ly, string names
5510: 70 61 63 65 4e 61 6d 65 29 0d 0a 09 09 7b 0d 0a  paceName)....{..
5520: 09 09 09 73 74 72 69 6e 67 20 78 70 61 74 68 20  ...string xpath 
5530: 3d 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  = (assembly == n
5540: 75 6c 6c 29 0d 0a 09 09 09 20 20 20 20 20 20 20  ull).....       
5550: 20 20 20 20 20 20 20 20 09 3f 20 73 74 72 69 6e          .? strin
5560: 67 2e 46 6f 72 6d 61 74 28 0d 0a 09 09 09 20 20  g.Format(.....  
5570: 20 20 20 20 20 20 20 20 20 20 20 20 20 09 20 20               .  
5580: 09 22 2f 6e 64 6f 63 3a 6e 64 6f 63 2f 6e 64 6f  ."/ndoc:ndoc/ndo
5590: 63 3a 61 73 73 65 6d 62 6c 79 2f 6e 64 6f 63 3a  c:assembly/ndoc:
55a0: 6d 6f 64 75 6c 65 2f 6e 64 6f 63 3a 6e 61 6d 65  module/ndoc:name
55b0: 73 70 61 63 65 5b 40 6e 61 6d 65 3d 27 7b 30 7d  space[@name='{0}
55c0: 27 5d 2f 2a 5b 6c 6f 63 61 6c 2d 6e 61 6d 65 28  ']/*[local-name(
55d0: 29 21 3d 27 64 6f 63 75 6d 65 6e 74 61 74 69 6f  )!='documentatio
55e0: 6e 27 20 61 6e 64 20 6c 6f 63 61 6c 2d 6e 61 6d  n' and local-nam
55f0: 65 28 29 21 3d 27 74 79 70 65 48 69 65 72 61 72  e()!='typeHierar
5600: 63 68 79 27 5d 22 2c 0d 0a 09 09 09 20 20 20 20  chy']",.....    
5610: 20 20 20 20 20 20 20 20 20 20 20 09 20 20 09 6e             .  .n
5620: 61 6d 65 73 70 61 63 65 4e 61 6d 65 29 0d 0a 09  amespaceName)...
5630: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5640: 20 09 3a 20 73 74 72 69 6e 67 2e 46 6f 72 6d 61   .: string.Forma
5650: 74 28 0d 0a 09 09 09 20 20 20 20 20 20 20 20 20  t(.....         
5660: 20 20 20 20 20 20 09 20 20 09 22 2f 6e 64 6f 63        .  ."/ndoc
5670: 3a 6e 64 6f 63 2f 6e 64 6f 63 3a 61 73 73 65 6d  :ndoc/ndoc:assem
5680: 62 6c 79 5b 40 6e 61 6d 65 3d 27 7b 30 7d 27 5d  bly[@name='{0}']
5690: 2f 6e 64 6f 63 3a 6d 6f 64 75 6c 65 2f 6e 64 6f  /ndoc:module/ndo
56a0: 63 3a 6e 61 6d 65 73 70 61 63 65 5b 40 6e 61 6d  c:namespace[@nam
56b0: 65 3d 27 7b 31 7d 27 5d 2f 2a 5b 6c 6f 63 61 6c  e='{1}']/*[local
56c0: 2d 6e 61 6d 65 28 29 21 3d 27 64 6f 63 75 6d 65  -name()!='docume
56d0: 6e 74 61 74 69 6f 6e 27 20 61 6e 64 20 6c 6f 63  ntation' and loc
56e0: 61 6c 2d 6e 61 6d 65 28 29 21 3d 27 74 79 70 65  al-name()!='type
56f0: 48 69 65 72 61 72 63 68 79 27 5d 22 2c 0d 0a 09  Hierarchy']",...
5700: 09 09 09 09 09 09 09 61 73 73 65 6d 62 6c 79 2c  .......assembly,
5710: 0d 0a 09 09 09 20 20 20 20 20 20 20 20 20 20 20  .....           
5720: 20 20 20 20 09 20 20 09 6e 61 6d 65 73 70 61 63      .  .namespac
5730: 65 4e 61 6d 65 29 3b 0d 0a 09 09 09 58 6d 6c 4e  eName);.....XmlN
5740: 6f 64 65 4c 69 73 74 20 74 79 70 65 4e 6f 64 65  odeList typeNode
5750: 73 20 3d 20 63 74 78 2e 53 65 6c 65 63 74 4e 6f  s = ctx.SelectNo
5760: 64 65 73 28 78 70 61 74 68 29 3b 0d 0a 09 09 09  des(xpath);.....
5770: 72 65 74 75 72 6e 20 74 79 70 65 4e 6f 64 65 73  return typeNodes
5780: 3b 09 09 09 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70  ;.......}......p
5790: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
57a0: 6f 6c 20 41 72 72 61 79 45 71 75 61 6c 73 28 73  ol ArrayEquals(s
57b0: 74 72 69 6e 67 5b 5d 20 61 72 72 61 79 31 2c 20  tring[] array1, 
57c0: 69 6e 74 20 66 72 6f 6d 31 2c 20 73 74 72 69 6e  int from1, strin
57d0: 67 5b 5d 20 61 72 72 61 79 32 2c 20 69 6e 74 20  g[] array2, int 
57e0: 66 72 6f 6d 32 2c 20 69 6e 74 20 63 6f 75 6e 74  from2, int count
57f0: 29 0d 0a 09 09 7b 0d 0a 09 09 09 66 6f 72 20 28  )....{.....for (
5800: 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c 20 63  int i = 0; i < c
5810: 6f 75 6e 74 3b 20 69 2b 2b 29 20 7b 0d 0a 09 09  ount; i++) {....
5820: 09 09 69 66 20 28 61 72 72 61 79 31 5b 66 72 6f  ..if (array1[fro
5830: 6d 31 20 2b 20 69 5d 20 21 3d 20 61 72 72 61 79  m1 + i] != array
5840: 32 5b 66 72 6f 6d 32 20 2b 20 69 5d 29 0d 0a 09  2[from2 + i])...
5850: 09 09 09 09 72 65 74 75 72 6e 20 66 61 6c 73 65  ....return false
5860: 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 72 65  ;.....}.......re
5870: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 09 09 7d 0d  turn true;....}.
5880: 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 73 74 61  .....private sta
5890: 74 69 63 20 76 6f 69 64 20 47 65 74 4e 61 6d 65  tic void GetName
58a0: 73 70 61 63 65 73 46 72 6f 6d 41 73 73 65 6d 62  spacesFromAssemb
58b0: 6c 79 28 42 75 69 6c 64 50 72 6f 6a 65 63 74 43  ly(BuildProjectC
58c0: 6f 6e 74 65 78 74 20 62 75 69 6c 64 43 6f 6e 74  ontext buildCont
58d0: 65 78 74 2c 20 73 74 72 69 6e 67 20 61 73 73 65  ext, string asse
58e0: 6d 62 6c 79 4e 61 6d 65 2c 20 4e 61 6d 65 56 61  mblyName, NameVa
58f0: 6c 75 65 43 6f 6c 6c 65 63 74 69 6f 6e 20 6e 61  lueCollection na
5900: 6d 65 73 70 61 63 65 41 73 73 65 6d 62 6c 69 65  mespaceAssemblie
5910: 73 29 0d 0a 09 09 7b 0d 0a 09 09 09 58 6d 6c 4e  s)....{.....XmlN
5920: 6f 64 65 4c 69 73 74 20 6e 61 6d 65 73 70 61 63  odeList namespac
5930: 65 4e 6f 64 65 73 20 3d 20 62 75 69 6c 64 43 6f  eNodes = buildCo
5940: 6e 74 65 78 74 2e 53 65 6c 65 63 74 4e 6f 64 65  ntext.SelectNode
5950: 73 28 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  s(string.Format(
5960: 22 2f 6e 64 6f 63 3a 6e 64 6f 63 2f 6e 64 6f 63  "/ndoc:ndoc/ndoc
5970: 3a 61 73 73 65 6d 62 6c 79 5b 40 6e 61 6d 65 3d  :assembly[@name=
5980: 27 7b 30 7d 27 5d 2f 6e 64 6f 63 3a 6d 6f 64 75  '{0}']/ndoc:modu
5990: 6c 65 2f 6e 64 6f 63 3a 6e 61 6d 65 73 70 61 63  le/ndoc:namespac
59a0: 65 22 2c 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  e", assemblyName
59b0: 29 29 3b 0d 0a 09 09 09 66 6f 72 65 61 63 68 20  ));.....foreach 
59c0: 28 58 6d 6c 4e 6f 64 65 20 6e 61 6d 65 73 70 61  (XmlNode namespa
59d0: 63 65 4e 6f 64 65 20 69 6e 20 6e 61 6d 65 73 70  ceNode in namesp
59e0: 61 63 65 4e 6f 64 65 73 29 20 7b 0d 0a 09 09 09  aceNodes) {.....
59f0: 09 73 74 72 69 6e 67 20 6e 61 6d 65 73 70 61 63  .string namespac
5a00: 65 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64 65 4e  eName = GetNodeN
5a10: 61 6d 65 28 6e 61 6d 65 73 70 61 63 65 4e 6f 64  ame(namespaceNod
5a20: 65 29 3b 0d 0a 09 09 09 09 6e 61 6d 65 73 70 61  e);......namespa
5a30: 63 65 41 73 73 65 6d 62 6c 69 65 73 2e 41 64 64  ceAssemblies.Add
5a40: 28 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65 2c 20  (namespaceName, 
5a50: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 29 3b 0d 0a  assemblyName);..
5a60: 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f  ...}....}....../
5a70: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 09 09  // <summary>....
5a80: 2f 2f 2f 20 41 64 64 20 74 68 65 20 6e 61 6d 65  /// Add the name
5a90: 73 70 61 63 65 20 65 6c 65 6d 65 6e 74 73 20 74  space elements t
5aa0: 6f 20 74 68 65 20 6f 75 74 70 75 74 0d 0a 09 09  o the output....
5ab0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5ac0: 09 09 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d  ../// <remarks>.
5ad0: 0a 09 09 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 73  .../// The names
5ae0: 70 61 63 65 20 0d 0a 09 09 2f 2f 2f 20 3c 2f 72  pace ..../// </r
5af0: 65 6d 61 72 6b 73 3e 0d 0a 09 09 2f 2f 2f 20 3c  emarks>..../// <
5b00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 74 78 22  param name="ctx"
5b10: 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f  ></param>....///
5b20: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
5b30: 6d 65 73 70 61 63 65 50 61 72 74 22 3e 49 66 20  mespacePart">If 
5b40: 6e 65 73 74 65 64 2c 20 74 68 65 20 6e 61 6d 65  nested, the name
5b50: 73 70 61 63 65 20 70 61 72 74 20 77 69 6c 6c 20  space part will 
5b60: 62 65 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  be the current..
5b70: 09 09 2f 2f 2f 20 6e 61 6d 65 73 70 61 63 65 20  ../// namespace 
5b80: 65 6c 65 6d 65 6e 74 20 62 65 69 6e 67 20 64 6f  element being do
5b90: 63 75 6d 65 6e 74 65 64 3c 2f 70 61 72 61 6d 3e  cumented</param>
5ba0: 0d 0a 09 09 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e  ..../// <param n
5bb0: 61 6d 65 3d 22 6e 61 6d 65 73 70 61 63 65 4e 61  ame="namespaceNa
5bc0: 6d 65 22 3e 54 68 65 20 66 75 6c 6c 20 6e 61 6d  me">The full nam
5bd0: 65 73 70 61 63 65 20 6e 61 6d 65 20 62 65 69 6e  espace name bein
5be0: 67 20 64 6f 63 75 6d 65 6e 74 65 64 3c 2f 70 61  g documented</pa
5bf0: 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 20 3c 70 61 72  ram>..../// <par
5c00: 61 6d 20 6e 61 6d 65 3d 22 61 64 64 44 6f 63 75  am name="addDocu
5c10: 6d 65 6e 74 61 74 69 6f 6e 22 3e 49 66 20 74 72  mentation">If tr
5c20: 75 65 2c 20 74 68 65 20 6e 61 6d 65 73 70 61 63  ue, the namespac
5c30: 65 20 77 69 6c 6c 20 62 65 20 64 6f 63 75 6d 65  e will be docume
5c40: 6e 74 65 64 2c 20 69 66 20 66 61 6c 73 65 0d 0a  nted, if false..
5c50: 09 09 2f 2f 2f 20 74 68 65 20 6e 6f 64 65 20 69  ../// the node i
5c60: 6e 20 74 68 65 20 54 4f 43 20 77 69 6c 6c 20 6e  n the TOC will n
5c70: 6f 74 20 6c 69 6e 6b 20 74 6f 20 61 20 70 61 67  ot link to a pag
5c80: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 70 72 69  e</param>....pri
5c90: 76 61 74 65 20 76 6f 69 64 20 4d 61 6b 65 48 74  vate void MakeHt
5ca0: 6d 6c 46 6f 72 4e 61 6d 65 73 70 61 63 65 28 42  mlForNamespace(B
5cb0: 75 69 6c 64 41 73 73 65 6d 62 6c 79 43 6f 6e 74  uildAssemblyCont
5cc0: 65 78 74 20 63 74 78 2c 20 73 74 72 69 6e 67 20  ext ctx, string 
5cd0: 6e 61 6d 65 73 70 61 63 65 50 61 72 74 2c 20 73  namespacePart, s
5ce0: 74 72 69 6e 67 20 6e 61 6d 65 73 70 61 63 65 4e  tring namespaceN
5cf0: 61 6d 65 2c 0d 0a 09 09 09 62 6f 6f 6c 20 61 64  ame,.....bool ad
5d00: 64 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 29 0d  dDocumentation).
5d10: 0a 09 09 7b 0d 0a 09 09 09 2f 2f 09 09 09 2f 2f  ...{.....//...//
5d20: 20 68 61 6e 64 6c 65 20 64 75 70 6c 69 63 61 74   handle duplicat
5d30: 65 20 6e 61 6d 65 73 70 61 63 65 20 64 6f 63 75  e namespace docu
5d40: 6d 65 6e 74 61 74 69 6f 6e 0d 0a 09 09 09 2f 2f  mentation.....//
5d50: 09 09 09 69 66 20 28 63 74 78 2e 64 6f 63 75 6d  ...if (ctx.docum
5d60: 65 6e 74 65 64 4e 61 6d 65 73 70 61 63 65 73 2e  entedNamespaces.
5d70: 43 6f 6e 74 61 69 6e 73 28 6e 61 6d 65 73 70 61  Contains(namespa
5d80: 63 65 4e 61 6d 65 29 29 20 0d 0a 09 09 09 2f 2f  ceName)) .....//
5d90: 09 09 09 09 72 65 74 75 72 6e 3b 0d 0a 09 09 09  ....return;.....
5da0: 2f 2f 09 09 09 63 74 78 2e 64 6f 63 75 6d 65 6e  //...ctx.documen
5db0: 74 65 64 4e 61 6d 65 73 70 61 63 65 73 2e 41 64  tedNamespaces.Ad
5dc0: 64 28 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65 29  d(namespaceName)
5dd0: 3b 0d 0a 0d 0a 09 09 09 69 66 20 28 61 64 64 44  ;.......if (addD
5de0: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 29 20 7b 0d  ocumentation) {.
5df0: 0a 09 09 09 09 73 74 72 69 6e 67 20 63 75 72 72  .....string curr
5e00: 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  entAssemblyName 
5e10: 3d 20 28 63 74 78 2e 4d 65 72 67 65 41 73 73 65  = (ctx.MergeAsse
5e20: 6d 62 6c 69 65 73 29 20 3f 20 73 74 72 69 6e 67  mblies) ? string
5e30: 2e 45 6d 70 74 79 20 3a 20 63 74 78 2e 43 75 72  .Empty : ctx.Cur
5e40: 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65  rentAssemblyName
5e50: 3b 0d 0a 0d 0a 09 09 09 09 73 74 72 69 6e 67 20  ;........string 
5e60: 6e 61 6d 65 73 70 61 63 65 46 69 6c 65 6e 61 6d  namespaceFilenam
5e70: 65 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52 65 73  e = ctx._nameRes
5e80: 6f 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d  olver.GetFilenam
5e90: 65 46 6f 72 4e 61 6d 65 73 70 61 63 65 28 63 75  eForNamespace(cu
5ea0: 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d  rrentAssemblyNam
5eb0: 65 2c 20 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65  e, namespaceName
5ec0: 29 3b 0d 0a 0d 0a 09 09 09 09 63 74 78 2e 68 74  );........ctx.ht
5ed0: 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f  mlHelp.AddFileTo
5ee0: 43 6f 6e 74 65 6e 74 73 28 6e 61 6d 65 73 70 61  Contents(namespa
5ef0: 63 65 50 61 72 74 2c 20 6e 61 6d 65 73 70 61 63  cePart, namespac
5f00: 65 46 69 6c 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 09  eFilename);.....
5f10: 09 09 09 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c  ...XsltArgumentL
5f20: 69 73 74 20 61 72 67 75 6d 65 6e 74 73 20 3d 20  ist arguments = 
5f30: 6e 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74  new XsltArgument
5f40: 4c 69 73 74 28 29 3b 0d 0a 09 09 09 09 61 72 67  List();......arg
5f50: 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28  uments.AddParam(
5f60: 22 6d 65 72 67 65 2d 61 73 73 65 6d 62 6c 69 65  "merge-assemblie
5f70: 73 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  s", String.Empty
5f80: 2c 20 63 74 78 2e 4d 65 72 67 65 41 73 73 65 6d  , ctx.MergeAssem
5f90: 62 6c 69 65 73 29 3b 0d 0a 09 09 09 09 61 72 67  blies);......arg
5fa0: 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28  uments.AddParam(
5fb0: 22 6e 61 6d 65 73 70 61 63 65 22 2c 20 53 74 72  "namespace", Str
5fc0: 69 6e 67 2e 45 6d 70 74 79 2c 20 6e 61 6d 65 73  ing.Empty, names
5fd0: 70 61 63 65 4e 61 6d 65 29 3b 0d 0a 09 09 09 09  paceName);......
5fe0: 54 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74  TransformAndWrit
5ff0: 65 52 65 73 75 6c 74 28 63 74 78 2c 20 22 6e 61  eResult(ctx, "na
6000: 6d 65 73 70 61 63 65 22 2c 20 61 72 67 75 6d 65  mespace", argume
6010: 6e 74 73 2c 20 6e 61 6d 65 73 70 61 63 65 46 69  nts, namespaceFi
6020: 6c 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09  lename);........
6030: 73 74 72 69 6e 67 20 6e 61 6d 65 73 70 61 63 65  string namespace
6040: 48 69 65 72 61 72 63 68 79 46 69 6c 65 6e 61 6d  HierarchyFilenam
6050: 65 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52 65 73  e = ctx._nameRes
6060: 6f 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d  olver.GetFilenam
6070: 65 46 6f 72 4e 61 6d 65 73 70 61 63 65 48 69 65  eForNamespaceHie
6080: 72 61 72 63 68 79 28 63 75 72 72 65 6e 74 41 73  rarchy(currentAs
6090: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6e 61 6d 65  semblyName, name
60a0: 73 70 61 63 65 4e 61 6d 65 29 3b 0d 0a 09 09 09  spaceName);.....
60b0: 09 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e 65 77  .arguments = new
60c0: 20 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69 73   XsltArgumentLis
60d0: 74 28 29 3b 0d 0a 09 09 09 09 61 72 67 75 6d 65  t();......argume
60e0: 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 6d 65  nts.AddParam("me
60f0: 72 67 65 2d 61 73 73 65 6d 62 6c 69 65 73 22 2c  rge-assemblies",
6100: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 63   String.Empty, c
6110: 74 78 2e 4d 65 72 67 65 41 73 73 65 6d 62 6c 69  tx.MergeAssembli
6120: 65 73 29 3b 0d 0a 09 09 09 09 61 72 67 75 6d 65  es);......argume
6130: 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 6e 61  nts.AddParam("na
6140: 6d 65 73 70 61 63 65 22 2c 20 53 74 72 69 6e 67  mespace", String
6150: 2e 45 6d 70 74 79 2c 20 6e 61 6d 65 73 70 61 63  .Empty, namespac
6160: 65 4e 61 6d 65 29 3b 0d 0a 09 09 09 09 54 72 61  eName);......Tra
6170: 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74 65 52 65  nsformAndWriteRe
6180: 73 75 6c 74 28 63 74 78 2c 20 22 6e 61 6d 65 73  sult(ctx, "names
6190: 70 61 63 65 68 69 65 72 61 72 63 68 79 22 2c 20  pacehierarchy", 
61a0: 61 72 67 75 6d 65 6e 74 73 2c 20 6e 61 6d 65 73  arguments, names
61b0: 70 61 63 65 48 69 65 72 61 72 63 68 79 46 69 6c  paceHierarchyFil
61c0: 65 6e 61 6d 65 29 3b 0d 0a 09 09 09 7d 20 65 6c  ename);.....} el
61d0: 73 65 20 7b 0d 0a 09 09 09 09 63 74 78 2e 68 74  se {......ctx.ht
61e0: 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f  mlHelp.AddFileTo
61f0: 43 6f 6e 74 65 6e 74 73 28 6e 61 6d 65 73 70 61  Contents(namespa
6200: 63 65 50 61 72 74 29 3b 0d 0a 09 09 09 7d 0d 0a  cePart);.....}..
6210: 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65  ..}......private
6220: 20 76 6f 69 64 20 4d 61 6b 65 48 74 6d 6c 46 6f   void MakeHtmlFo
6230: 72 54 79 70 65 73 28 42 75 69 6c 64 50 72 6f 6a  rTypes(BuildProj
6240: 65 63 74 43 6f 6e 74 65 78 74 20 70 72 6f 6a 65  ectContext proje
6250: 63 74 43 74 78 2c 20 58 6d 6c 4e 6f 64 65 4c 69  ctCtx, XmlNodeLi
6260: 73 74 20 74 79 70 65 4e 6f 64 65 73 29 0d 0a 09  st typeNodes)...
6270: 09 7b 0d 0a 09 09 09 69 6e 74 5b 5d 20 69 6e 64  .{.....int[] ind
6280: 65 78 65 73 20 3d 20 53 6f 72 74 4e 6f 64 65 73  exes = SortNodes
6290: 42 79 41 74 74 72 69 62 75 74 65 28 74 79 70 65  ByAttribute(type
62a0: 4e 6f 64 65 73 2c 20 22 69 64 22 29 3b 0d 0a 09  Nodes, "id");...
62b0: 09 09 69 6e 74 20 6e 4e 6f 64 65 73 20 3d 20 74  ..int nNodes = t
62c0: 79 70 65 4e 6f 64 65 73 2e 43 6f 75 6e 74 3b 0d  ypeNodes.Count;.
62d0: 0a 0d 0a 09 09 09 66 6f 72 20 28 69 6e 74 20 69  ......for (int i
62e0: 20 3d 20 30 3b 20 69 20 3c 20 6e 4e 6f 64 65 73   = 0; i < nNodes
62f0: 3b 20 69 2b 2b 29 20 7b 0d 0a 09 09 09 09 58 6d  ; i++) {......Xm
6300: 6c 4e 6f 64 65 20 74 79 70 65 4e 6f 64 65 20 3d  lNode typeNode =
6310: 20 74 79 70 65 4e 6f 64 65 73 5b 69 6e 64 65 78   typeNodes[index
6320: 65 73 5b 69 5d 5d 3b 0d 0a 09 09 09 09 57 68 69  es[i]];......Whi
6330: 63 68 54 79 70 65 20 77 68 69 63 68 54 79 70 65  chType whichType
6340: 20 3d 20 47 65 74 57 68 69 63 68 54 79 70 65 28   = GetWhichType(
6350: 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 0d 0a 09 09  typeNode);......
6360: 09 09 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c  ..string assembl
6370: 79 4e 61 6d 65 20 3d 20 58 6d 6c 55 74 69 6c 73  yName = XmlUtils
6380: 2e 47 65 74 4e 6f 64 65 4e 61 6d 65 28 70 72 6f  .GetNodeName(pro
6390: 6a 65 63 74 43 74 78 2e 53 65 6c 65 63 74 53 69  jectCtx.SelectSi
63a0: 6e 67 6c 65 4e 6f 64 65 28 74 79 70 65 4e 6f 64  ngleNode(typeNod
63b0: 65 2c 20 22 61 6e 63 65 73 74 6f 72 3a 3a 6e 64  e, "ancestor::nd
63c0: 6f 63 3a 61 73 73 65 6d 62 6c 79 22 29 29 3b 0d  oc:assembly"));.
63d0: 0a 09 09 09 09 42 75 69 6c 64 41 73 73 65 6d 62  .....BuildAssemb
63e0: 6c 79 43 6f 6e 74 65 78 74 20 63 74 78 20 3d 20  lyContext ctx = 
63f0: 6e 65 77 20 42 75 69 6c 64 41 73 73 65 6d 62 6c  new BuildAssembl
6400: 79 43 6f 6e 74 65 78 74 28 70 72 6f 6a 65 63 74  yContext(project
6410: 43 74 78 2c 20 61 73 73 65 6d 62 6c 79 4e 61 6d  Ctx, assemblyNam
6420: 65 29 3b 20 2f 2f 20 54 4f 44 4f 20 28 45 45 29  e); // TODO (EE)
6430: 3a 20 69 6e 69 74 69 61 6c 69 7a 65 20 77 2f 20  : initialize w/ 
6440: 61 73 73 65 6d 62 6c 79 20 6e 61 6d 65 0d 0a 0d  assembly name...
6450: 0a 09 09 09 09 73 77 69 74 63 68 20 28 77 68 69  .....switch (whi
6460: 63 68 54 79 70 65 29 20 7b 0d 0a 09 09 09 09 09  chType) {.......
6470: 63 61 73 65 20 57 68 69 63 68 54 79 70 65 2e 43  case WhichType.C
6480: 6c 61 73 73 3a 0d 0a 09 09 09 09 09 09 4d 61 6b  lass:........Mak
6490: 65 48 74 6d 6c 46 6f 72 49 6e 74 65 72 66 61 63  eHtmlForInterfac
64a0: 65 4f 72 43 6c 61 73 73 4f 72 53 74 72 75 63 74  eOrClassOrStruct
64b0: 75 72 65 28 63 74 78 2c 20 77 68 69 63 68 54 79  ure(ctx, whichTy
64c0: 70 65 2c 20 74 79 70 65 4e 6f 64 65 29 3b 0d 0a  pe, typeNode);..
64d0: 09 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09  ......break;....
64e0: 09 09 09 63 61 73 65 20 57 68 69 63 68 54 79 70  ...case WhichTyp
64f0: 65 2e 49 6e 74 65 72 66 61 63 65 3a 0d 0a 09 09  e.Interface:....
6500: 09 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f 72 49  ....MakeHtmlForI
6510: 6e 74 65 72 66 61 63 65 4f 72 43 6c 61 73 73 4f  nterfaceOrClassO
6520: 72 53 74 72 75 63 74 75 72 65 28 63 74 78 2c 20  rStructure(ctx, 
6530: 77 68 69 63 68 54 79 70 65 2c 20 74 79 70 65 4e  whichType, typeN
6540: 6f 64 65 29 3b 0d 0a 09 09 09 09 09 09 62 72 65  ode);........bre
6550: 61 6b 3b 0d 0a 09 09 09 09 09 63 61 73 65 20 57  ak;.......case W
6560: 68 69 63 68 54 79 70 65 2e 53 74 72 75 63 74 75  hichType.Structu
6570: 72 65 3a 0d 0a 09 09 09 09 09 09 4d 61 6b 65 48  re:........MakeH
6580: 74 6d 6c 46 6f 72 49 6e 74 65 72 66 61 63 65 4f  tmlForInterfaceO
6590: 72 43 6c 61 73 73 4f 72 53 74 72 75 63 74 75 72  rClassOrStructur
65a0: 65 28 63 74 78 2c 20 77 68 69 63 68 54 79 70 65  e(ctx, whichType
65b0: 2c 20 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 09 09  , typeNode);....
65c0: 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 09 09  ....break;......
65d0: 09 63 61 73 65 20 57 68 69 63 68 54 79 70 65 2e  .case WhichType.
65e0: 45 6e 75 6d 65 72 61 74 69 6f 6e 3a 0d 0a 09 09  Enumeration:....
65f0: 09 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f 72 45  ....MakeHtmlForE
6600: 6e 75 6d 65 72 61 74 69 6f 6e 4f 72 44 65 6c 65  numerationOrDele
6610: 67 61 74 65 28 63 74 78 2c 20 77 68 69 63 68 54  gate(ctx, whichT
6620: 79 70 65 2c 20 74 79 70 65 4e 6f 64 65 29 3b 0d  ype, typeNode);.
6630: 0a 09 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09  .......break;...
6640: 09 09 09 09 63 61 73 65 20 57 68 69 63 68 54 79  ....case WhichTy
6650: 70 65 2e 44 65 6c 65 67 61 74 65 3a 0d 0a 09 09  pe.Delegate:....
6660: 09 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f 72 45  ....MakeHtmlForE
6670: 6e 75 6d 65 72 61 74 69 6f 6e 4f 72 44 65 6c 65  numerationOrDele
6680: 67 61 74 65 28 63 74 78 2c 20 77 68 69 63 68 54  gate(ctx, whichT
6690: 79 70 65 2c 20 74 79 70 65 4e 6f 64 65 29 3b 0d  ype, typeNode);.
66a0: 0a 09 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09  .......break;...
66b0: 09 09 09 09 64 65 66 61 75 6c 74 3a 0d 0a 09 09  ....default:....
66c0: 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 09 09  ....break;......
66d0: 7d 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a  }.....}....}....
66e0: 09 09 70 72 69 76 61 74 65 20 76 6f 69 64 20 4d  ..private void M
66f0: 61 6b 65 48 74 6d 6c 46 6f 72 45 6e 75 6d 65 72  akeHtmlForEnumer
6700: 61 74 69 6f 6e 4f 72 44 65 6c 65 67 61 74 65 28  ationOrDelegate(
6710: 42 75 69 6c 64 41 73 73 65 6d 62 6c 79 43 6f 6e  BuildAssemblyCon
6720: 74 65 78 74 20 63 74 78 2c 20 57 68 69 63 68 54  text ctx, WhichT
6730: 79 70 65 20 77 68 69 63 68 54 79 70 65 2c 20 58  ype whichType, X
6740: 6d 6c 4e 6f 64 65 20 74 79 70 65 4e 6f 64 65 29  mlNode typeNode)
6750: 0d 0a 09 09 7b 0d 0a 09 09 09 73 74 72 69 6e 67  ....{.....string
6760: 20 74 79 70 65 4e 61 6d 65 20 3d 20 77 68 69 63   typeName = whic
6770: 68 54 79 70 65 20 3d 3d 20 57 68 69 63 68 54 79  hType == WhichTy
6780: 70 65 2e 44 65 6c 65 67 61 74 65 20 3f 20 47 65  pe.Delegate ? Ge
6790: 74 4e 6f 64 65 44 69 73 70 6c 61 79 4e 61 6d 65  tNodeDisplayName
67a0: 28 74 79 70 65 4e 6f 64 65 29 20 3a 20 47 65 74  (typeNode) : Get
67b0: 4e 6f 64 65 4e 61 6d 65 28 74 79 70 65 4e 6f 64  NodeName(typeNod
67c0: 65 29 3b 0d 0a 09 09 09 73 74 72 69 6e 67 20 74  e);.....string t
67d0: 79 70 65 49 44 20 3d 20 47 65 74 4e 6f 64 65 49  ypeID = GetNodeI
67e0: 64 28 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 09 09  d(typeNode);....
67f0: 09 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  .string fileName
6800: 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52 65 73 6f   = ctx._nameReso
6810: 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d 65  lver.GetFilename
6820: 46 6f 72 49 64 28 63 74 78 2e 43 75 72 72 65 6e  ForId(ctx.Curren
6830: 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74  tAssemblyName, t
6840: 79 70 65 49 44 29 3b 0d 0a 0d 0a 09 09 09 63 74  ypeID);.......ct
6850: 78 2e 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69  x.htmlHelp.AddFi
6860: 6c 65 54 6f 43 6f 6e 74 65 6e 74 73 28 74 79 70  leToContents(typ
6870: 65 4e 61 6d 65 20 2b 20 22 20 22 20 2b 20 6d 69  eName + " " + mi
6880: 78 65 64 43 61 73 65 54 79 70 65 4e 61 6d 65 73  xedCaseTypeNames
6890: 5b 77 68 69 63 68 54 79 70 65 5d 2c 20 66 69 6c  [whichType], fil
68a0: 65 4e 61 6d 65 2c 20 48 74 6d 6c 48 65 6c 70 49  eName, HtmlHelpI
68b0: 63 6f 6e 2e 50 61 67 65 29 3b 0d 0a 0d 0a 09 09  con.Page);......
68c0: 09 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69 73  .XsltArgumentLis
68d0: 74 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e 65  t arguments = ne
68e0: 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69  w XsltArgumentLi
68f0: 73 74 28 29 3b 0d 0a 09 09 09 61 72 67 75 6d 65  st();.....argume
6900: 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 74 79  nts.AddParam("ty
6910: 70 65 2d 69 64 22 2c 20 53 74 72 69 6e 67 2e 45  pe-id", String.E
6920: 6d 70 74 79 2c 20 74 79 70 65 49 44 29 3b 0d 0a  mpty, typeID);..
6930: 09 09 09 54 72 61 6e 73 66 6f 72 6d 41 6e 64 57  ...TransformAndW
6940: 72 69 74 65 52 65 73 75 6c 74 28 63 74 78 2c 20  riteResult(ctx, 
6950: 22 74 79 70 65 22 2c 20 61 72 67 75 6d 65 6e 74  "type", argument
6960: 73 2c 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 09  s, fileName);...
6970: 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20  .}......private 
6980: 76 6f 69 64 20 4d 61 6b 65 48 74 6d 6c 46 6f 72  void MakeHtmlFor
6990: 49 6e 74 65 72 66 61 63 65 4f 72 43 6c 61 73 73  InterfaceOrClass
69a0: 4f 72 53 74 72 75 63 74 75 72 65 28 42 75 69 6c  OrStructure(Buil
69b0: 64 41 73 73 65 6d 62 6c 79 43 6f 6e 74 65 78 74  dAssemblyContext
69c0: 20 63 74 78 2c 0d 0a 09 09 09 57 68 69 63 68 54   ctx,.....WhichT
69d0: 79 70 65 20 77 68 69 63 68 54 79 70 65 2c 0d 0a  ype whichType,..
69e0: 09 09 09 58 6d 6c 4e 6f 64 65 20 74 79 70 65 4e  ...XmlNode typeN
69f0: 6f 64 65 29 0d 0a 09 09 7b 0d 0a 09 09 09 73 74  ode)....{.....st
6a00: 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 20 3d 20  ring typeName = 
6a10: 47 65 74 4e 6f 64 65 44 69 73 70 6c 61 79 4e 61  GetNodeDisplayNa
6a20: 6d 65 28 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 09  me(typeNode);...
6a30: 09 09 73 74 72 69 6e 67 20 74 79 70 65 49 44 20  ..string typeID 
6a40: 3d 20 47 65 74 4e 6f 64 65 49 64 28 74 79 70 65  = GetNodeId(type
6a50: 4e 6f 64 65 29 3b 0d 0a 09 09 09 73 74 72 69 6e  Node);.....strin
6a60: 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78  g fileName = ctx
6a70: 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47  ._nameResolver.G
6a80: 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28  etFilenameForId(
6a90: 63 74 78 2e 43 75 72 72 65 6e 74 41 73 73 65 6d  ctx.CurrentAssem
6aa0: 62 6c 79 4e 61 6d 65 2c 20 74 79 70 65 49 44 29  blyName, typeID)
6ab0: 3b 0d 0a 0d 0a 09 09 09 63 74 78 2e 68 74 6d 6c  ;.......ctx.html
6ac0: 48 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f 43 6f  Help.AddFileToCo
6ad0: 6e 74 65 6e 74 73 28 74 79 70 65 4e 61 6d 65 20  ntents(typeName 
6ae0: 2b 20 22 20 22 20 2b 20 6d 69 78 65 64 43 61 73  + " " + mixedCas
6af0: 65 54 79 70 65 4e 61 6d 65 73 5b 77 68 69 63 68  eTypeNames[which
6b00: 54 79 70 65 5d 2c 20 66 69 6c 65 4e 61 6d 65 29  Type], fileName)
6b10: 3b 0d 0a 0d 0a 09 09 09 62 6f 6f 6c 20 68 61 73  ;.......bool has
6b20: 4d 65 6d 62 65 72 73 20 3d 20 63 74 78 2e 53 65  Members = ctx.Se
6b30: 6c 65 63 74 4e 6f 64 65 73 28 74 79 70 65 4e 6f  lectNodes(typeNo
6b40: 64 65 2c 20 22 6e 64 6f 63 3a 63 6f 6e 73 74 72  de, "ndoc:constr
6b50: 75 63 74 6f 72 7c 6e 64 6f 63 3a 66 69 65 6c 64  uctor|ndoc:field
6b60: 7c 6e 64 6f 63 3a 70 72 6f 70 65 72 74 79 7c 6e  |ndoc:property|n
6b70: 64 6f 63 3a 6d 65 74 68 6f 64 7c 6e 64 6f 63 3a  doc:method|ndoc:
6b80: 6f 70 65 72 61 74 6f 72 7c 6e 64 6f 63 3a 65 76  operator|ndoc:ev
6b90: 65 6e 74 22 29 2e 43 6f 75 6e 74 20 3e 20 30 3b  ent").Count > 0;
6ba0: 0d 0a 0d 0a 09 09 09 69 66 20 28 68 61 73 4d 65  .......if (hasMe
6bb0: 6d 62 65 72 73 29 20 7b 0d 0a 09 09 09 09 63 74  mbers) {......ct
6bc0: 78 2e 68 74 6d 6c 48 65 6c 70 2e 4f 70 65 6e 42  x.htmlHelp.OpenB
6bd0: 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b  ookInContents();
6be0: 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 58 73 6c  .....}.......Xsl
6bf0: 74 41 72 67 75 6d 65 6e 74 4c 69 73 74 20 61 72  tArgumentList ar
6c00: 67 75 6d 65 6e 74 73 20 3d 20 6e 65 77 20 58 73  guments = new Xs
6c10: 6c 74 41 72 67 75 6d 65 6e 74 4c 69 73 74 28 29  ltArgumentList()
6c20: 3b 0d 0a 09 09 09 61 72 67 75 6d 65 6e 74 73 2e  ;.....arguments.
6c30: 41 64 64 50 61 72 61 6d 28 22 74 79 70 65 2d 69  AddParam("type-i
6c40: 64 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  d", String.Empty
6c50: 2c 20 74 79 70 65 49 44 29 3b 0d 0a 09 09 09 54  , typeID);.....T
6c60: 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74 65  ransformAndWrite
6c70: 52 65 73 75 6c 74 28 63 74 78 2c 20 22 74 79 70  Result(ctx, "typ
6c80: 65 22 2c 20 61 72 67 75 6d 65 6e 74 73 2c 20 66  e", arguments, f
6c90: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09  ileName);.......
6ca0: 69 66 20 28 63 74 78 2e 53 65 6c 65 63 74 4e 6f  if (ctx.SelectNo
6cb0: 64 65 73 28 74 79 70 65 4e 6f 64 65 2c 20 22 6e  des(typeNode, "n
6cc0: 64 6f 63 3a 64 65 72 69 76 65 64 42 79 22 29 2e  doc:derivedBy").
6cd0: 43 6f 75 6e 74 20 3e 20 35 29 20 7b 0d 0a 09 09  Count > 5) {....
6ce0: 09 09 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78  ..fileName = ctx
6cf0: 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47  ._nameResolver.G
6d00: 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 54 79 70  etFilenameForTyp
6d10: 65 48 69 65 72 61 72 63 68 79 28 63 74 78 2e 43  eHierarchy(ctx.C
6d20: 75 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61  urrentAssemblyNa
6d30: 6d 65 2c 20 74 79 70 65 49 44 29 3b 0d 0a 09 09  me, typeID);....
6d40: 09 09 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e 65  ..arguments = ne
6d50: 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69  w XsltArgumentLi
6d60: 73 74 28 29 3b 0d 0a 09 09 09 09 61 72 67 75 6d  st();......argum
6d70: 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 74  ents.AddParam("t
6d80: 79 70 65 2d 69 64 22 2c 20 53 74 72 69 6e 67 2e  ype-id", String.
6d90: 45 6d 70 74 79 2c 20 74 79 70 65 49 44 29 3b 0d  Empty, typeID);.
6da0: 0a 09 09 09 09 54 72 61 6e 73 66 6f 72 6d 41 6e  .....TransformAn
6db0: 64 57 72 69 74 65 52 65 73 75 6c 74 28 63 74 78  dWriteResult(ctx
6dc0: 2c 20 22 74 79 70 65 68 69 65 72 61 72 63 68 79  , "typehierarchy
6dd0: 22 2c 20 61 72 67 75 6d 65 6e 74 73 2c 20 66 69  ", arguments, fi
6de0: 6c 65 4e 61 6d 65 29 3b 0d 0a 09 09 09 7d 0d 0a  leName);.....}..
6df0: 0d 0a 09 09 09 69 66 20 28 68 61 73 4d 65 6d 62  .....if (hasMemb
6e00: 65 72 73 29 20 7b 0d 0a 09 09 09 09 66 69 6c 65  ers) {......file
6e10: 4e 61 6d 65 20 3d 20 63 74 78 2e 5f 6e 61 6d 65  Name = ctx._name
6e20: 52 65 73 6f 6c 76 65 72 2e 47 65 74 46 69 6c 65  Resolver.GetFile
6e30: 6e 61 6d 65 46 6f 72 54 79 70 65 4d 65 6d 62 65  nameForTypeMembe
6e40: 72 4c 69 73 74 28 63 74 78 2e 43 75 72 72 65 6e  rList(ctx.Curren
6e50: 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74  tAssemblyName, t
6e60: 79 70 65 49 44 29 3b 0d 0a 09 09 09 09 63 74 78  ypeID);......ctx
6e70: 2e 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c  .htmlHelp.AddFil
6e80: 65 54 6f 43 6f 6e 74 65 6e 74 73 28 74 79 70 65  eToContents(type
6e90: 4e 61 6d 65 20 2b 20 22 20 4d 65 6d 62 65 72 73  Name + " Members
6ea0: 22 2c 0d 0a 09 09 09 09 09 66 69 6c 65 4e 61 6d  ",.......fileNam
6eb0: 65 2c 0d 0a 09 09 09 09 09 48 74 6d 6c 48 65 6c  e,.......HtmlHel
6ec0: 70 49 63 6f 6e 2e 50 61 67 65 29 3b 0d 0a 0d 0a  pIcon.Page);....
6ed0: 09 09 09 09 61 72 67 75 6d 65 6e 74 73 20 3d 20  ....arguments = 
6ee0: 6e 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74  new XsltArgument
6ef0: 4c 69 73 74 28 29 3b 0d 0a 09 09 09 09 61 72 67  List();......arg
6f00: 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28  uments.AddParam(
6f10: 22 74 79 70 65 2d 69 64 22 2c 20 53 74 72 69 6e  "type-id", Strin
6f20: 67 2e 45 6d 70 74 79 2c 20 74 79 70 65 49 44 29  g.Empty, typeID)
6f30: 3b 0d 0a 09 09 09 09 54 72 61 6e 73 66 6f 72 6d  ;......Transform
6f40: 41 6e 64 57 72 69 74 65 52 65 73 75 6c 74 28 63  AndWriteResult(c
6f50: 74 78 2c 20 22 61 6c 6c 6d 65 6d 62 65 72 73 22  tx, "allmembers"
6f60: 2c 20 61 72 67 75 6d 65 6e 74 73 2c 20 66 69 6c  , arguments, fil
6f70: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09 4d  eName);........M
6f80: 61 6b 65 48 74 6d 6c 46 6f 72 43 6f 6e 73 74 72  akeHtmlForConstr
6f90: 75 63 74 6f 72 73 28 63 74 78 2c 20 74 79 70 65  uctors(ctx, type
6fa0: 4e 6f 64 65 29 3b 0d 0a 09 09 09 09 4d 61 6b 65  Node);......Make
6fb0: 48 74 6d 6c 46 6f 72 46 69 65 6c 64 73 28 63 74  HtmlForFields(ct
6fc0: 78 2c 20 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 09  x, typeNode);...
6fd0: 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f 72 50 72  ...MakeHtmlForPr
6fe0: 6f 70 65 72 74 69 65 73 28 63 74 78 2c 20 74 79  operties(ctx, ty
6ff0: 70 65 4e 6f 64 65 29 3b 0d 0a 09 09 09 09 4d 61  peNode);......Ma
7000: 6b 65 48 74 6d 6c 46 6f 72 4d 65 74 68 6f 64 73  keHtmlForMethods
7010: 28 63 74 78 2c 20 74 79 70 65 4e 6f 64 65 29 3b  (ctx, typeNode);
7020: 0d 0a 09 09 09 09 4d 61 6b 65 48 74 6d 6c 46 6f  ......MakeHtmlFo
7030: 72 4f 70 65 72 61 74 6f 72 73 28 63 74 78 2c 20  rOperators(ctx, 
7040: 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 09 09 09 09  typeNode);......
7050: 4d 61 6b 65 48 74 6d 6c 46 6f 72 45 76 65 6e 74  MakeHtmlForEvent
7060: 73 28 63 74 78 2c 20 74 79 70 65 4e 6f 64 65 29  s(ctx, typeNode)
7070: 3b 0d 0a 0d 0a 09 09 09 09 63 74 78 2e 68 74 6d  ;........ctx.htm
7080: 6c 48 65 6c 70 2e 43 6c 6f 73 65 42 6f 6f 6b 49  lHelp.CloseBookI
7090: 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a 09 09  nContents();....
70a0: 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72 69  .}....}......pri
70b0: 76 61 74 65 20 76 6f 69 64 20 4d 61 6b 65 48 74  vate void MakeHt
70c0: 6d 6c 46 6f 72 43 6f 6e 73 74 72 75 63 74 6f 72  mlForConstructor
70d0: 73 28 42 75 69 6c 64 41 73 73 65 6d 62 6c 79 43  s(BuildAssemblyC
70e0: 6f 6e 74 65 78 74 20 63 74 78 2c 20 58 6d 6c 4e  ontext ctx, XmlN
70f0: 6f 64 65 20 74 79 70 65 4e 6f 64 65 29 0d 0a 09  ode typeNode)...
7100: 09 7b 0d 0a 09 09 09 73 74 72 69 6e 67 20 63 6f  .{.....string co
7110: 6e 73 74 72 75 63 74 6f 72 49 44 3b 0d 0a 09 09  nstructorID;....
7120: 09 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  .string fileName
7130: 3b 0d 0a 0d 0a 09 09 09 73 74 72 69 6e 67 20 74  ;.......string t
7140: 79 70 65 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64  ypeName = GetNod
7150: 65 44 69 73 70 6c 61 79 4e 61 6d 65 28 74 79 70  eDisplayName(typ
7160: 65 4e 6f 64 65 29 3b 0d 0a 09 09 09 73 74 72 69  eNode);.....stri
7170: 6e 67 20 74 79 70 65 49 44 20 3d 20 47 65 74 4e  ng typeID = GetN
7180: 6f 64 65 49 64 28 74 79 70 65 4e 6f 64 65 29 3b  odeId(typeNode);
7190: 0d 0a 0d 0a 09 09 09 58 6d 6c 4e 6f 64 65 4c 69  .......XmlNodeLi
71a0: 73 74 20 63 6f 6e 73 74 72 75 63 74 6f 72 4e 6f  st constructorNo
71b0: 64 65 73 20 3d 20 63 74 78 2e 53 65 6c 65 63 74  des = ctx.Select
71c0: 4e 6f 64 65 73 28 74 79 70 65 4e 6f 64 65 2c 20  Nodes(typeNode, 
71d0: 22 6e 64 6f 63 3a 63 6f 6e 73 74 72 75 63 74 6f  "ndoc:constructo
71e0: 72 5b 40 63 6f 6e 74 72 61 63 74 21 3d 27 53 74  r[@contract!='St
71f0: 61 74 69 63 27 5d 22 29 3b 0d 0a 09 09 09 2f 2f  atic']");.....//
7200: 20 49 66 20 74 68 65 20 63 6f 6e 73 74 72 75 63   If the construc
7210: 74 6f 72 20 69 73 20 6f 76 65 72 6c 6f 61 64 65  tor is overloade
7220: 64 20 74 68 65 6e 20 6d 61 6b 65 20 61 6e 20 6f  d then make an o
7230: 76 65 72 6c 6f 61 64 20 70 61 67 65 2e 0d 0a 09  verload page....
7240: 09 09 69 66 20 28 63 6f 6e 73 74 72 75 63 74 6f  ..if (constructo
7250: 72 4e 6f 64 65 73 2e 43 6f 75 6e 74 20 3e 20 31  rNodes.Count > 1
7260: 29 20 7b 0d 0a 09 09 09 09 66 69 6c 65 4e 61 6d  ) {......fileNam
7270: 65 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52 65 73  e = ctx._nameRes
7280: 6f 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d  olver.GetFilenam
7290: 65 46 6f 72 43 6f 6e 73 74 72 75 63 74 6f 72 4c  eForConstructorL
72a0: 69 73 74 28 63 74 78 2e 43 75 72 72 65 6e 74 41  ist(ctx.CurrentA
72b0: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70  ssemblyName, typ
72c0: 65 49 44 29 3b 0d 0a 09 09 09 09 63 74 78 2e 68  eID);......ctx.h
72d0: 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65 54  tmlHelp.AddFileT
72e0: 6f 43 6f 6e 74 65 6e 74 73 28 74 79 70 65 4e 61  oContents(typeNa
72f0: 6d 65 20 2b 20 22 20 43 6f 6e 73 74 72 75 63 74  me + " Construct
7300: 6f 72 22 2c 20 66 69 6c 65 4e 61 6d 65 29 3b 0d  or", fileName);.
7310: 0a 0d 0a 09 09 09 09 63 74 78 2e 68 74 6d 6c 48  .......ctx.htmlH
7320: 65 6c 70 2e 4f 70 65 6e 42 6f 6f 6b 49 6e 43 6f  elp.OpenBookInCo
7330: 6e 74 65 6e 74 73 28 29 3b 0d 0a 0d 0a 09 09 09  ntents();.......
7340: 09 63 6f 6e 73 74 72 75 63 74 6f 72 49 44 20 3d  .constructorID =
7350: 20 63 6f 6e 73 74 72 75 63 74 6f 72 4e 6f 64 65   constructorNode
7360: 73 5b 30 5d 2e 41 74 74 72 69 62 75 74 65 73 5b  s[0].Attributes[
7370: 22 69 64 22 5d 2e 56 61 6c 75 65 3b 0d 0a 0d 0a  "id"].Value;....
7380: 09 09 09 09 58 73 6c 74 41 72 67 75 6d 65 6e 74  ....XsltArgument
7390: 4c 69 73 74 20 61 72 67 75 6d 65 6e 74 73 20 3d  List arguments =
73a0: 20 6e 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e   new XsltArgumen
73b0: 74 4c 69 73 74 28 29 3b 0d 0a 09 09 09 09 61 72  tList();......ar
73c0: 67 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d  guments.AddParam
73d0: 28 22 6d 65 6d 62 65 72 2d 69 64 22 2c 20 53 74  ("member-id", St
73e0: 72 69 6e 67 2e 45 6d 70 74 79 2c 20 63 6f 6e 73  ring.Empty, cons
73f0: 74 72 75 63 74 6f 72 49 44 29 3b 0d 0a 09 09 09  tructorID);.....
7400: 09 54 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69  .TransformAndWri
7410: 74 65 52 65 73 75 6c 74 28 63 74 78 2c 20 22 6d  teResult(ctx, "m
7420: 65 6d 62 65 72 6f 76 65 72 6c 6f 61 64 22 2c 20  emberoverload", 
7430: 61 72 67 75 6d 65 6e 74 73 2c 20 66 69 6c 65 4e  arguments, fileN
7440: 61 6d 65 29 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09  ame);.....}.....
7450: 09 09 66 6f 72 65 61 63 68 20 28 58 6d 6c 4e 6f  ..foreach (XmlNo
7460: 64 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 4e 6f  de constructorNo
7470: 64 65 20 69 6e 20 63 6f 6e 73 74 72 75 63 74 6f  de in constructo
7480: 72 4e 6f 64 65 73 29 20 7b 0d 0a 09 09 09 09 63  rNodes) {......c
7490: 6f 6e 73 74 72 75 63 74 6f 72 49 44 20 3d 20 63  onstructorID = c
74a0: 6f 6e 73 74 72 75 63 74 6f 72 4e 6f 64 65 2e 41  onstructorNode.A
74b0: 74 74 72 69 62 75 74 65 73 5b 22 69 64 22 5d 2e  ttributes["id"].
74c0: 56 61 6c 75 65 3b 0d 0a 09 09 09 09 66 69 6c 65  Value;......file
74d0: 4e 61 6d 65 20 3d 20 63 74 78 2e 5f 6e 61 6d 65  Name = ctx._name
74e0: 52 65 73 6f 6c 76 65 72 2e 47 65 74 46 69 6c 65  Resolver.GetFile
74f0: 6e 61 6d 65 46 6f 72 49 64 28 63 74 78 2e 43 75  nameForId(ctx.Cu
7500: 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d  rrentAssemblyNam
7510: 65 2c 20 63 6f 6e 73 74 72 75 63 74 6f 72 49 44  e, constructorID
7520: 29 3b 0d 0a 0d 0a 09 09 09 09 69 66 20 28 63 6f  );........if (co
7530: 6e 73 74 72 75 63 74 6f 72 4e 6f 64 65 73 2e 43  nstructorNodes.C
7540: 6f 75 6e 74 20 3e 20 31 29 20 7b 0d 0a 09 09 09  ount > 1) {.....
7550: 09 09 58 6d 6c 4e 6f 64 65 4c 69 73 74 20 70 61  ..XmlNodeList pa
7560: 72 61 6d 65 74 65 72 4e 6f 64 65 73 20 3d 20 63  rameterNodes = c
7570: 74 78 2e 53 65 6c 65 63 74 4e 6f 64 65 73 28 63  tx.SelectNodes(c
7580: 6f 6e 73 74 72 75 63 74 6f 72 4e 6f 64 65 2c 20  onstructorNode, 
7590: 22 6e 64 6f 63 3a 70 61 72 61 6d 65 74 65 72 22  "ndoc:parameter"
75a0: 29 3b 0d 0a 09 09 09 09 09 63 74 78 2e 68 74 6d  );.......ctx.htm
75b0: 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f 43  lHelp.AddFileToC
75c0: 6f 6e 74 65 6e 74 73 28 74 79 70 65 4e 61 6d 65  ontents(typeName
75d0: 20 2b 20 22 20 43 6f 6e 73 74 72 75 63 74 6f 72   + " Constructor
75e0: 20 22 20 2b 20 47 65 74 50 61 72 61 6d 4c 69 73   " + GetParamLis
75f0: 74 28 70 61 72 61 6d 65 74 65 72 4e 6f 64 65 73  t(parameterNodes
7600: 29 2c 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 09 09  ), fileName,....
7610: 09 09 09 09 48 74 6d 6c 48 65 6c 70 49 63 6f 6e  ....HtmlHelpIcon
7620: 2e 50 61 67 65 29 3b 0d 0a 09 09 09 09 7d 20 65  .Page);......} e
7630: 6c 73 65 20 7b 0d 0a 09 09 09 09 09 63 74 78 2e  lse {.......ctx.
7640: 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65  htmlHelp.AddFile
7650: 54 6f 43 6f 6e 74 65 6e 74 73 28 74 79 70 65 4e  ToContents(typeN
7660: 61 6d 65 20 2b 20 22 20 43 6f 6e 73 74 72 75 63  ame + " Construc
7670: 74 6f 72 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20  tor", fileName, 
7680: 48 74 6d 6c 48 65 6c 70 49 63 6f 6e 2e 50 61 67  HtmlHelpIcon.Pag
7690: 65 29 3b 0d 0a 09 09 09 09 7d 0d 0a 0d 0a 09 09  e);......}......
76a0: 09 09 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69  ..XsltArgumentLi
76b0: 73 74 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e  st arguments = n
76c0: 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c  ew XsltArgumentL
76d0: 69 73 74 28 29 3b 0d 0a 09 09 09 09 61 72 67 75  ist();......argu
76e0: 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22  ments.AddParam("
76f0: 6d 65 6d 62 65 72 2d 69 64 22 2c 20 53 74 72 69  member-id", Stri
7700: 6e 67 2e 45 6d 70 74 79 2c 20 63 6f 6e 73 74 72  ng.Empty, constr
7710: 75 63 74 6f 72 49 44 29 3b 0d 0a 09 09 09 09 54  uctorID);......T
7720: 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74 65  ransformAndWrite
7730: 52 65 73 75 6c 74 28 63 74 78 2c 20 22 6d 65 6d  Result(ctx, "mem
7740: 62 65 72 22 2c 20 61 72 67 75 6d 65 6e 74 73 2c  ber", arguments,
7750: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 09 09 09   fileName);.....
7760: 7d 0d 0a 0d 0a 09 09 09 69 66 20 28 63 6f 6e 73  }.......if (cons
7770: 74 72 75 63 74 6f 72 4e 6f 64 65 73 2e 43 6f 75  tructorNodes.Cou
7780: 6e 74 20 3e 20 31 29 20 7b 0d 0a 09 09 09 09 63  nt > 1) {......c
7790: 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 43 6c 6f 73  tx.htmlHelp.Clos
77a0: 65 42 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28  eBookInContents(
77b0: 29 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 58  );.....}.......X
77c0: 6d 6c 4e 6f 64 65 20 73 74 61 74 69 63 43 6f 6e  mlNode staticCon
77d0: 73 74 72 75 63 74 6f 72 4e 6f 64 65 20 3d 20 63  structorNode = c
77e0: 74 78 2e 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e  tx.SelectSingleN
77f0: 6f 64 65 28 74 79 70 65 4e 6f 64 65 2c 20 22 6e  ode(typeNode, "n
7800: 64 6f 63 3a 63 6f 6e 73 74 72 75 63 74 6f 72 5b  doc:constructor[
7810: 40 63 6f 6e 74 72 61 63 74 3d 27 53 74 61 74 69  @contract='Stati
7820: 63 27 5d 22 29 3b 0d 0a 09 09 09 69 66 20 28 73  c']");.....if (s
7830: 74 61 74 69 63 43 6f 6e 73 74 72 75 63 74 6f 72  taticConstructor
7840: 4e 6f 64 65 20 21 3d 20 6e 75 6c 6c 29 20 7b 0d  Node != null) {.
7850: 0a 09 09 09 09 63 6f 6e 73 74 72 75 63 74 6f 72  .....constructor
7860: 49 44 20 3d 20 73 74 61 74 69 63 43 6f 6e 73 74  ID = staticConst
7870: 72 75 63 74 6f 72 4e 6f 64 65 2e 41 74 74 72 69  ructorNode.Attri
7880: 62 75 74 65 73 5b 22 69 64 22 5d 2e 56 61 6c 75  butes["id"].Valu
7890: 65 3b 0d 0a 09 09 09 09 66 69 6c 65 4e 61 6d 65  e;......fileName
78a0: 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52 65 73 6f   = ctx._nameReso
78b0: 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d 65  lver.GetFilename
78c0: 46 6f 72 49 64 28 63 74 78 2e 43 75 72 72 65 6e  ForId(ctx.Curren
78d0: 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 63  tAssemblyName, c
78e0: 6f 6e 73 74 72 75 63 74 6f 72 49 44 29 3b 0d 0a  onstructorID);..
78f0: 0d 0a 09 09 09 09 63 74 78 2e 68 74 6d 6c 48 65  ......ctx.htmlHe
7900: 6c 70 2e 41 64 64 46 69 6c 65 54 6f 43 6f 6e 74  lp.AddFileToCont
7910: 65 6e 74 73 28 74 79 70 65 4e 61 6d 65 20 2b 20  ents(typeName + 
7920: 22 20 53 74 61 74 69 63 20 43 6f 6e 73 74 72 75  " Static Constru
7930: 63 74 6f 72 22 2c 20 66 69 6c 65 4e 61 6d 65 2c  ctor", fileName,
7940: 20 48 74 6d 6c 48 65 6c 70 49 63 6f 6e 2e 50 61   HtmlHelpIcon.Pa
7950: 67 65 29 3b 0d 0a 0d 0a 09 09 09 09 58 73 6c 74  ge);........Xslt
7960: 41 72 67 75 6d 65 6e 74 4c 69 73 74 20 61 72 67  ArgumentList arg
7970: 75 6d 65 6e 74 73 20 3d 20 6e 65 77 20 58 73 6c  uments = new Xsl
7980: 74 41 72 67 75 6d 65 6e 74 4c 69 73 74 28 29 3b  tArgumentList();
7990: 0d 0a 09 09 09 09 61 72 67 75 6d 65 6e 74 73 2e  ......arguments.
79a0: 41 64 64 50 61 72 61 6d 28 22 6d 65 6d 62 65 72  AddParam("member
79b0: 2d 69 64 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70  -id", String.Emp
79c0: 74 79 2c 20 63 6f 6e 73 74 72 75 63 74 6f 72 49  ty, constructorI
79d0: 44 29 3b 0d 0a 09 09 09 09 54 72 61 6e 73 66 6f  D);......Transfo
79e0: 72 6d 41 6e 64 57 72 69 74 65 52 65 73 75 6c 74  rmAndWriteResult
79f0: 28 63 74 78 2c 20 22 6d 65 6d 62 65 72 22 2c 20  (ctx, "member", 
7a00: 61 72 67 75 6d 65 6e 74 73 2c 20 66 69 6c 65 4e  arguments, fileN
7a10: 61 6d 65 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d  ame);.....}....}
7a20: 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 76 6f  ......private vo
7a30: 69 64 20 4d 61 6b 65 48 74 6d 6c 46 6f 72 46 69  id MakeHtmlForFi
7a40: 65 6c 64 73 28 42 75 69 6c 64 41 73 73 65 6d 62  elds(BuildAssemb
7a50: 6c 79 43 6f 6e 74 65 78 74 20 63 74 78 2c 20 58  lyContext ctx, X
7a60: 6d 6c 4e 6f 64 65 20 74 79 70 65 4e 6f 64 65 29  mlNode typeNode)
7a70: 0d 0a 09 09 7b 0d 0a 09 09 09 58 6d 6c 4e 6f 64  ....{.....XmlNod
7a80: 65 4c 69 73 74 20 66 69 65 6c 64 73 20 3d 20 63  eList fields = c
7a90: 74 78 2e 53 65 6c 65 63 74 4e 6f 64 65 73 28 74  tx.SelectNodes(t
7aa0: 79 70 65 4e 6f 64 65 2c 20 22 6e 64 6f 63 3a 66  ypeNode, "ndoc:f
7ab0: 69 65 6c 64 5b 6e 6f 74 28 40 64 65 63 6c 61 72  ield[not(@declar
7ac0: 69 6e 67 54 79 70 65 29 5d 22 29 3b 0d 0a 0d 0a  ingType)]");....
7ad0: 09 09 09 69 66 20 28 66 69 65 6c 64 73 2e 43 6f  ...if (fields.Co
7ae0: 75 6e 74 20 3e 20 30 29 20 7b 0d 0a 09 09 09 09  unt > 0) {......
7af0: 2f 2f 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d  //string typeNam
7b00: 65 20 3d 20 74 79 70 65 4e 6f 64 65 2e 41 74 74  e = typeNode.Att
7b10: 72 69 62 75 74 65 73 5b 22 6e 61 6d 65 22 5d 2e  ributes["name"].
7b20: 56 61 6c 75 65 3b 0d 0a 09 09 09 09 73 74 72 69  Value;......stri
7b30: 6e 67 20 74 79 70 65 49 44 20 3d 20 47 65 74 4e  ng typeID = GetN
7b40: 6f 64 65 49 64 28 74 79 70 65 4e 6f 64 65 29 3b  odeId(typeNode);
7b50: 0d 0a 09 09 09 09 73 74 72 69 6e 67 20 66 69 6c  ......string fil
7b60: 65 4e 61 6d 65 20 3d 20 63 74 78 2e 5f 6e 61 6d  eName = ctx._nam
7b70: 65 52 65 73 6f 6c 76 65 72 2e 47 65 74 46 69 6c  eResolver.GetFil
7b80: 65 6e 61 6d 65 46 6f 72 46 69 65 6c 64 4c 69 73  enameForFieldLis
7b90: 74 28 63 74 78 2e 43 75 72 72 65 6e 74 41 73 73  t(ctx.CurrentAss
7ba0: 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70 65 49  emblyName, typeI
7bb0: 44 29 3b 0d 0a 0d 0a 09 09 09 09 63 74 78 2e 68  D);........ctx.h
7bc0: 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65 54  tmlHelp.AddFileT
7bd0: 6f 43 6f 6e 74 65 6e 74 73 28 22 46 69 65 6c 64  oContents("Field
7be0: 73 22 2c 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  s", fileName);..
7bf0: 0d 0a 09 09 09 09 58 73 6c 74 41 72 67 75 6d 65  ......XsltArgume
7c00: 6e 74 4c 69 73 74 20 61 72 67 75 6d 65 6e 74 73  ntList arguments
7c10: 20 3d 20 6e 65 77 20 58 73 6c 74 41 72 67 75 6d   = new XsltArgum
7c20: 65 6e 74 4c 69 73 74 28 29 3b 0d 0a 09 09 09 09  entList();......
7c30: 61 72 67 75 6d 65 6e 74 73 2e 41 64 64 50 61 72  arguments.AddPar
7c40: 61 6d 28 22 74 79 70 65 2d 69 64 22 2c 20 53 74  am("type-id", St
7c50: 72 69 6e 67 2e 45 6d 70 74 79 2c 20 74 79 70 65  ring.Empty, type
7c60: 49 44 29 3b 0d 0a 09 09 09 09 61 72 67 75 6d 65  ID);......argume
7c70: 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 6d 65  nts.AddParam("me
7c80: 6d 62 65 72 2d 74 79 70 65 22 2c 20 53 74 72 69  mber-type", Stri
7c90: 6e 67 2e 45 6d 70 74 79 2c 20 22 66 69 65 6c 64  ng.Empty, "field
7ca0: 22 29 3b 0d 0a 09 09 09 09 54 72 61 6e 73 66 6f  ");......Transfo
7cb0: 72 6d 41 6e 64 57 72 69 74 65 52 65 73 75 6c 74  rmAndWriteResult
7cc0: 28 63 74 78 2c 20 22 69 6e 64 69 76 69 64 75 61  (ctx, "individua
7cd0: 6c 6d 65 6d 62 65 72 73 22 2c 20 61 72 67 75 6d  lmembers", argum
7ce0: 65 6e 74 73 2c 20 66 69 6c 65 4e 61 6d 65 29 3b  ents, fileName);
7cf0: 0d 0a 0d 0a 09 09 09 09 63 74 78 2e 68 74 6d 6c  ........ctx.html
7d00: 48 65 6c 70 2e 4f 70 65 6e 42 6f 6f 6b 49 6e 43  Help.OpenBookInC
7d10: 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a 0d 0a 09 09  ontents();......
7d20: 09 09 69 6e 74 5b 5d 20 69 6e 64 65 78 65 73 20  ..int[] indexes 
7d30: 3d 20 53 6f 72 74 4e 6f 64 65 73 42 79 41 74 74  = SortNodesByAtt
7d40: 72 69 62 75 74 65 28 66 69 65 6c 64 73 2c 20 22  ribute(fields, "
7d50: 69 64 22 29 3b 0d 0a 0d 0a 09 09 09 09 66 6f 72  id");........for
7d60: 65 61 63 68 20 28 69 6e 74 20 69 6e 64 65 78 20  each (int index 
7d70: 69 6e 20 69 6e 64 65 78 65 73 29 20 7b 0d 0a 09  in indexes) {...
7d80: 09 09 09 09 58 6d 6c 4e 6f 64 65 20 66 69 65 6c  ....XmlNode fiel
7d90: 64 20 3d 20 66 69 65 6c 64 73 5b 69 6e 64 65 78  d = fields[index
7da0: 5d 3b 0d 0a 0d 0a 09 09 09 09 09 73 74 72 69 6e  ];.........strin
7db0: 67 20 66 69 65 6c 64 4e 61 6d 65 20 3d 20 47 65  g fieldName = Ge
7dc0: 74 4e 6f 64 65 4e 61 6d 65 28 66 69 65 6c 64 29  tNodeName(field)
7dd0: 3b 0d 0a 09 09 09 09 09 73 74 72 69 6e 67 20 66  ;.......string f
7de0: 69 65 6c 64 49 44 20 3d 20 47 65 74 4e 6f 64 65  ieldID = GetNode
7df0: 49 64 28 66 69 65 6c 64 29 3b 0d 0a 09 09 09 09  Id(field);......
7e00: 09 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78 2e  .fileName = ctx.
7e10: 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47 65  _nameResolver.Ge
7e20: 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 63  tFilenameForId(c
7e30: 74 78 2e 43 75 72 72 65 6e 74 41 73 73 65 6d 62  tx.CurrentAssemb
7e40: 6c 79 4e 61 6d 65 2c 20 66 69 65 6c 64 49 44 29  lyName, fieldID)
7e50: 3b 0d 0a 09 09 09 09 09 63 74 78 2e 68 74 6d 6c  ;.......ctx.html
7e60: 48 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f 43 6f  Help.AddFileToCo
7e70: 6e 74 65 6e 74 73 28 66 69 65 6c 64 4e 61 6d 65  ntents(fieldName
7e80: 20 2b 20 22 20 46 69 65 6c 64 22 2c 20 66 69 6c   + " Field", fil
7e90: 65 4e 61 6d 65 2c 20 48 74 6d 6c 48 65 6c 70 49  eName, HtmlHelpI
7ea0: 63 6f 6e 2e 50 61 67 65 29 3b 0d 0a 0d 0a 09 09  con.Page);......
7eb0: 09 09 09 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e  ...arguments = n
7ec0: 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c  ew XsltArgumentL
7ed0: 69 73 74 28 29 3b 0d 0a 09 09 09 09 09 61 72 67  ist();.......arg
7ee0: 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28  uments.AddParam(
7ef0: 22 66 69 65 6c 64 2d 69 64 22 2c 20 53 74 72 69  "field-id", Stri
7f00: 6e 67 2e 45 6d 70 74 79 2c 20 66 69 65 6c 64 49  ng.Empty, fieldI
7f10: 44 29 3b 0d 0a 09 09 09 09 09 54 72 61 6e 73 66  D);.......Transf
7f20: 6f 72 6d 41 6e 64 57 72 69 74 65 52 65 73 75 6c  ormAndWriteResul
7f30: 74 28 63 74 78 2c 20 22 66 69 65 6c 64 22 2c 20  t(ctx, "field", 
7f40: 61 72 67 75 6d 65 6e 74 73 2c 20 66 69 6c 65 4e  arguments, fileN
7f50: 61 6d 65 29 3b 0d 0a 09 09 09 09 7d 0d 0a 0d 0a  ame);......}....
7f60: 09 09 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70  ....ctx.htmlHelp
7f70: 2e 43 6c 6f 73 65 42 6f 6f 6b 49 6e 43 6f 6e 74  .CloseBookInCont
7f80: 65 6e 74 73 28 29 3b 0d 0a 09 09 09 7d 0d 0a 09  ents();.....}...
7f90: 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20  .}......private 
7fa0: 76 6f 69 64 20 4d 61 6b 65 48 74 6d 6c 46 6f 72  void MakeHtmlFor
7fb0: 50 72 6f 70 65 72 74 69 65 73 28 42 75 69 6c 64  Properties(Build
7fc0: 41 73 73 65 6d 62 6c 79 43 6f 6e 74 65 78 74 20  AssemblyContext 
7fd0: 63 74 78 2c 20 58 6d 6c 4e 6f 64 65 20 74 79 70  ctx, XmlNode typ
7fe0: 65 4e 6f 64 65 29 0d 0a 09 09 7b 0d 0a 09 09 09  eNode)....{.....
7ff0: 58 6d 6c 4e 6f 64 65 4c 69 73 74 20 64 65 63 6c  XmlNodeList decl
8000: 61 72 65 64 50 72 6f 70 65 72 74 79 4e 6f 64 65  aredPropertyNode
8010: 73 20 3d 20 63 74 78 2e 53 65 6c 65 63 74 4e 6f  s = ctx.SelectNo
8020: 64 65 73 28 74 79 70 65 4e 6f 64 65 2c 20 22 6e  des(typeNode, "n
8030: 64 6f 63 3a 70 72 6f 70 65 72 74 79 5b 6e 6f 74  doc:property[not
8040: 28 40 64 65 63 6c 61 72 69 6e 67 54 79 70 65 29  (@declaringType)
8050: 5d 22 29 3b 0d 0a 0d 0a 09 09 09 69 66 20 28 64  ]");.......if (d
8060: 65 63 6c 61 72 65 64 50 72 6f 70 65 72 74 79 4e  eclaredPropertyN
8070: 6f 64 65 73 2e 43 6f 75 6e 74 20 3e 20 30 29 20  odes.Count > 0) 
8080: 7b 0d 0a 09 09 09 09 58 6d 6c 4e 6f 64 65 20 70  {......XmlNode p
8090: 72 6f 70 65 72 74 79 4e 6f 64 65 3b 0d 0a 09 09  ropertyNode;....
80a0: 09 09 62 6f 6f 6c 20 62 4f 76 65 72 6c 6f 61 64  ..bool bOverload
80b0: 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 09 09 09  ed = false;.....
80c0: 09 69 6e 74 20 69 3b 0d 0a 0d 0a 09 09 09 09 73  .int i;........s
80d0: 74 72 69 6e 67 20 74 79 70 65 49 44 20 3d 20 47  tring typeID = G
80e0: 65 74 4e 6f 64 65 49 64 28 74 79 70 65 4e 6f 64  etNodeId(typeNod
80f0: 65 29 3b 0d 0a 09 09 09 09 58 6d 6c 4e 6f 64 65  e);......XmlNode
8100: 4c 69 73 74 20 70 72 6f 70 65 72 74 79 4e 6f 64  List propertyNod
8110: 65 73 20 3d 20 63 74 78 2e 53 65 6c 65 63 74 4e  es = ctx.SelectN
8120: 6f 64 65 73 28 74 79 70 65 4e 6f 64 65 2c 20 22  odes(typeNode, "
8130: 6e 64 6f 63 3a 70 72 6f 70 65 72 74 79 5b 6e 6f  ndoc:property[no
8140: 74 28 40 64 65 63 6c 61 72 69 6e 67 54 79 70 65  t(@declaringType
8150: 29 5d 22 29 3b 0d 0a 09 09 09 09 69 6e 74 20 6e  )]");......int n
8160: 4e 6f 64 65 73 20 3d 20 70 72 6f 70 65 72 74 79  Nodes = property
8170: 4e 6f 64 65 73 2e 43 6f 75 6e 74 3b 0d 0a 0d 0a  Nodes.Count;....
8180: 09 09 09 09 69 6e 74 5b 5d 20 69 6e 64 65 78 65  ....int[] indexe
8190: 73 20 3d 20 53 6f 72 74 4e 6f 64 65 73 42 79 41  s = SortNodesByA
81a0: 74 74 72 69 62 75 74 65 28 70 72 6f 70 65 72 74  ttribute(propert
81b0: 79 4e 6f 64 65 73 2c 20 22 69 64 22 29 3b 0d 0a  yNodes, "id");..
81c0: 0d 0a 09 09 09 09 73 74 72 69 6e 67 20 66 69 6c  ......string fil
81d0: 65 4e 61 6d 65 20 3d 20 63 74 78 2e 5f 6e 61 6d  eName = ctx._nam
81e0: 65 52 65 73 6f 6c 76 65 72 2e 47 65 74 46 69 6c  eResolver.GetFil
81f0: 65 6e 61 6d 65 46 6f 72 50 72 6f 70 65 72 74 79  enameForProperty
8200: 4c 69 73 74 28 63 74 78 2e 43 75 72 72 65 6e 74  List(ctx.Current
8210: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79  AssemblyName, ty
8220: 70 65 49 44 29 3b 0d 0a 09 09 09 09 63 74 78 2e  peID);......ctx.
8230: 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65  htmlHelp.AddFile
8240: 54 6f 43 6f 6e 74 65 6e 74 73 28 22 50 72 6f 70  ToContents("Prop
8250: 65 72 74 69 65 73 22 2c 20 66 69 6c 65 4e 61 6d  erties", fileNam
8260: 65 29 3b 0d 0a 0d 0a 09 09 09 09 58 73 6c 74 41  e);........XsltA
8270: 72 67 75 6d 65 6e 74 4c 69 73 74 20 61 72 67 75  rgumentList argu
8280: 6d 65 6e 74 73 20 3d 20 6e 65 77 20 58 73 6c 74  ments = new Xslt
8290: 41 72 67 75 6d 65 6e 74 4c 69 73 74 28 29 3b 0d  ArgumentList();.
82a0: 0a 09 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41  .....arguments.A
82b0: 64 64 50 61 72 61 6d 28 22 74 79 70 65 2d 69 64  ddParam("type-id
82c0: 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c  ", String.Empty,
82d0: 20 74 79 70 65 49 44 29 3b 0d 0a 09 09 09 09 61   typeID);......a
82e0: 72 67 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61  rguments.AddPara
82f0: 6d 28 22 6d 65 6d 62 65 72 2d 74 79 70 65 22 2c  m("member-type",
8300: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 22   String.Empty, "
8310: 70 72 6f 70 65 72 74 79 22 29 3b 0d 0a 09 09 09  property");.....
8320: 09 54 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69  .TransformAndWri
8330: 74 65 52 65 73 75 6c 74 28 63 74 78 2c 20 22 69  teResult(ctx, "i
8340: 6e 64 69 76 69 64 75 61 6c 6d 65 6d 62 65 72 73  ndividualmembers
8350: 22 2c 20 61 72 67 75 6d 65 6e 74 73 2c 20 66 69  ", arguments, fi
8360: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09  leName);........
8370: 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 4f 70 65  ctx.htmlHelp.Ope
8380: 6e 42 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28  nBookInContents(
8390: 29 3b 0d 0a 0d 0a 09 09 09 09 66 6f 72 20 28 69  );........for (i
83a0: 20 3d 20 30 3b 20 69 20 3c 20 6e 4e 6f 64 65 73   = 0; i < nNodes
83b0: 3b 20 69 2b 2b 29 20 7b 0d 0a 09 09 09 09 09 70  ; i++) {.......p
83c0: 72 6f 70 65 72 74 79 4e 6f 64 65 20 3d 20 70 72  ropertyNode = pr
83d0: 6f 70 65 72 74 79 4e 6f 64 65 73 5b 69 6e 64 65  opertyNodes[inde
83e0: 78 65 73 5b 69 5d 5d 3b 0d 0a 0d 0a 09 09 09 09  xes[i]];........
83f0: 09 73 74 72 69 6e 67 20 70 72 6f 70 65 72 74 79  .string property
8400: 4e 61 6d 65 20 3d 20 70 72 6f 70 65 72 74 79 4e  Name = propertyN
8410: 6f 64 65 2e 41 74 74 72 69 62 75 74 65 73 5b 22  ode.Attributes["
8420: 6e 61 6d 65 22 5d 2e 56 61 6c 75 65 3b 0d 0a 09  name"].Value;...
8430: 09 09 09 09 73 74 72 69 6e 67 20 70 72 6f 70 65  ....string prope
8440: 72 74 79 49 44 20 3d 20 70 72 6f 70 65 72 74 79  rtyID = property
8450: 4e 6f 64 65 2e 41 74 74 72 69 62 75 74 65 73 5b  Node.Attributes[
8460: 22 69 64 22 5d 2e 56 61 6c 75 65 3b 0d 0a 0d 0a  "id"].Value;....
8470: 09 09 09 09 09 2f 2f 20 49 66 20 74 68 65 20 6d  .....// If the m
8480: 65 74 68 6f 64 20 69 73 20 6f 76 65 72 6c 6f 61  ethod is overloa
8490: 64 65 64 20 74 68 65 6e 20 6d 61 6b 65 20 61 6e  ded then make an
84a0: 20 6f 76 65 72 6c 6f 61 64 20 70 61 67 65 2e 0d   overload page..
84b0: 0a 09 09 09 09 09 73 74 72 69 6e 67 20 70 72 65  ......string pre
84c0: 76 69 6f 75 73 50 72 6f 70 65 72 74 79 4e 61 6d  viousPropertyNam
84d0: 65 20 3d 20 28 28 69 20 2d 20 31 20 3c 20 30 29  e = ((i - 1 < 0)
84e0: 20 7c 7c 20 28 70 72 6f 70 65 72 74 79 4e 6f 64   || (propertyNod
84f0: 65 73 5b 69 6e 64 65 78 65 73 5b 69 20 2d 20 31  es[indexes[i - 1
8500: 5d 5d 2e 41 74 74 72 69 62 75 74 65 73 2e 43 6f  ]].Attributes.Co
8510: 75 6e 74 20 3d 3d 20 30 29 29 0d 0a 09 09 09 09  unt == 0))......
8520: 09 09 09 09 09 09 09 09 09 3f 20 22 22 20 3a 20  .........? "" : 
8530: 70 72 6f 70 65 72 74 79 4e 6f 64 65 73 5b 69 6e  propertyNodes[in
8540: 64 65 78 65 73 5b 69 20 2d 20 31 5d 5d 2e 41 74  dexes[i - 1]].At
8550: 74 72 69 62 75 74 65 73 5b 30 5d 2e 56 61 6c 75  tributes[0].Valu
8560: 65 3b 0d 0a 09 09 09 09 09 73 74 72 69 6e 67 20  e;.......string 
8570: 6e 65 78 74 50 72 6f 70 65 72 74 79 4e 61 6d 65  nextPropertyName
8580: 20 3d 20 28 28 69 20 2b 20 31 20 3d 3d 20 6e 4e   = ((i + 1 == nN
8590: 6f 64 65 73 29 20 7c 7c 20 28 70 72 6f 70 65 72  odes) || (proper
85a0: 74 79 4e 6f 64 65 73 5b 69 6e 64 65 78 65 73 5b  tyNodes[indexes[
85b0: 69 20 2b 20 31 5d 5d 2e 41 74 74 72 69 62 75 74  i + 1]].Attribut
85c0: 65 73 2e 43 6f 75 6e 74 20 3d 3d 20 30 29 29 0d  es.Count == 0)).
85d0: 0a 09 09 09 09 09 09 09 09 09 09 09 09 3f 20 22  .............? "
85e0: 22 20 3a 20 70 72 6f 70 65 72 74 79 4e 6f 64 65  " : propertyNode
85f0: 73 5b 69 6e 64 65 78 65 73 5b 69 20 2b 20 31 5d  s[indexes[i + 1]
8600: 5d 2e 41 74 74 72 69 62 75 74 65 73 5b 30 5d 2e  ].Attributes[0].
8610: 56 61 6c 75 65 3b 0d 0a 0d 0a 09 09 09 09 09 69  Value;.........i
8620: 66 20 28 28 70 72 65 76 69 6f 75 73 50 72 6f 70  f ((previousProp
8630: 65 72 74 79 4e 61 6d 65 20 21 3d 20 70 72 6f 70  ertyName != prop
8640: 65 72 74 79 4e 61 6d 65 29 20 26 26 20 28 6e 65  ertyName) && (ne
8650: 78 74 50 72 6f 70 65 72 74 79 4e 61 6d 65 20 3d  xtPropertyName =
8660: 3d 20 70 72 6f 70 65 72 74 79 4e 61 6d 65 29 29  = propertyName))
8670: 20 7b 0d 0a 09 09 09 09 09 09 66 69 6c 65 4e 61   {........fileNa
8680: 6d 65 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52 65  me = ctx._nameRe
8690: 73 6f 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e 61  solver.GetFilena
86a0: 6d 65 46 6f 72 50 72 6f 70 65 72 74 79 4f 76 65  meForPropertyOve
86b0: 72 6c 6f 61 64 73 28 63 74 78 2e 43 75 72 72 65  rloads(ctx.Curre
86c0: 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  ntAssemblyName, 
86d0: 74 79 70 65 49 44 2c 20 70 72 6f 70 65 72 74 79  typeID, property
86e0: 4e 61 6d 65 29 3b 0d 0a 09 09 09 09 09 09 63 74  Name);........ct
86f0: 78 2e 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69  x.htmlHelp.AddFi
8700: 6c 65 54 6f 43 6f 6e 74 65 6e 74 73 28 70 72 6f  leToContents(pro
8710: 70 65 72 74 79 4e 61 6d 65 20 2b 20 22 20 50 72  pertyName + " Pr
8720: 6f 70 65 72 74 79 22 2c 20 66 69 6c 65 4e 61 6d  operty", fileNam
8730: 65 29 3b 0d 0a 0d 0a 09 09 09 09 09 09 61 72 67  e);..........arg
8740: 75 6d 65 6e 74 73 20 3d 20 6e 65 77 20 58 73 6c  uments = new Xsl
8750: 74 41 72 67 75 6d 65 6e 74 4c 69 73 74 28 29 3b  tArgumentList();
8760: 0d 0a 09 09 09 09 09 09 61 72 67 75 6d 65 6e 74  ........argument
8770: 73 2e 41 64 64 50 61 72 61 6d 28 22 6d 65 6d 62  s.AddParam("memb
8780: 65 72 2d 69 64 22 2c 20 53 74 72 69 6e 67 2e 45  er-id", String.E
8790: 6d 70 74 79 2c 20 70 72 6f 70 65 72 74 79 49 44  mpty, propertyID
87a0: 29 3b 0d 0a 09 09 09 09 09 09 54 72 61 6e 73 66  );........Transf
87b0: 6f 72 6d 41 6e 64 57 72 69 74 65 52 65 73 75 6c  ormAndWriteResul
87c0: 74 28 63 74 78 2c 20 22 6d 65 6d 62 65 72 6f 76  t(ctx, "memberov
87d0: 65 72 6c 6f 61 64 22 2c 20 61 72 67 75 6d 65 6e  erload", argumen
87e0: 74 73 2c 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ts, fileName);..
87f0: 0d 0a 09 09 09 09 09 09 63 74 78 2e 68 74 6d 6c  ........ctx.html
8800: 48 65 6c 70 2e 4f 70 65 6e 42 6f 6f 6b 49 6e 43  Help.OpenBookInC
8810: 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a 0d 0a 09 09  ontents();......
8820: 09 09 09 09 62 4f 76 65 72 6c 6f 61 64 65 64 20  ....bOverloaded 
8830: 3d 20 74 72 75 65 3b 0d 0a 09 09 09 09 09 7d 0d  = true;.......}.
8840: 0a 0d 0a 09 09 09 09 09 66 69 6c 65 4e 61 6d 65  ........fileName
8850: 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52 65 73 6f   = ctx._nameReso
8860: 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d 65  lver.GetFilename
8870: 46 6f 72 49 64 28 63 74 78 2e 43 75 72 72 65 6e  ForId(ctx.Curren
8880: 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 70  tAssemblyName, p
8890: 72 6f 70 65 72 74 79 49 44 29 3b 0d 0a 0d 0a 09  ropertyID);.....
88a0: 09 09 09 09 73 74 72 69 6e 67 20 70 61 67 65 54  ....string pageT
88b0: 69 74 6c 65 3b 0d 0a 09 09 09 09 09 69 66 20 28  itle;.......if (
88c0: 21 62 4f 76 65 72 6c 6f 61 64 65 64 29 20 7b 0d  !bOverloaded) {.
88d0: 0a 09 09 09 09 09 09 70 61 67 65 54 69 74 6c 65  .......pageTitle
88e0: 20 3d 20 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74   = string.Format
88f0: 28 22 7b 30 7d 20 50 72 6f 70 65 72 74 79 22 2c  ("{0} Property",
8900: 20 70 72 6f 70 65 72 74 79 4e 61 6d 65 29 3b 0d   propertyName);.
8910: 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 7b 0d 0a  ......} else {..
8920: 09 09 09 09 09 09 58 6d 6c 4e 6f 64 65 4c 69 73  ......XmlNodeLis
8930: 74 20 70 61 72 61 6d 65 74 65 72 4e 6f 64 65 73  t parameterNodes
8940: 20 3d 20 63 74 78 2e 53 65 6c 65 63 74 4e 6f 64   = ctx.SelectNod
8950: 65 73 28 70 72 6f 70 65 72 74 79 4e 6f 64 65 2c  es(propertyNode,
8960: 20 22 6e 73 3a 70 61 72 61 6d 65 74 65 72 22 29   "ns:parameter")
8970: 3b 0d 0a 09 09 09 09 09 09 70 61 67 65 54 69 74  ;........pageTit
8980: 6c 65 20 3d 20 73 74 72 69 6e 67 2e 46 6f 72 6d  le = string.Form
8990: 61 74 28 22 7b 30 7d 20 50 72 6f 70 65 72 74 79  at("{0} Property
89a0: 20 7b 31 7d 22 2c 20 70 72 6f 70 65 72 74 79 4e   {1}", propertyN
89b0: 61 6d 65 2c 20 47 65 74 50 61 72 61 6d 4c 69 73  ame, GetParamLis
89c0: 74 28 70 61 72 61 6d 65 74 65 72 4e 6f 64 65 73  t(parameterNodes
89d0: 29 29 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09  ));.......}.....
89e0: 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 41  ..ctx.htmlHelp.A
89f0: 64 64 46 69 6c 65 54 6f 43 6f 6e 74 65 6e 74 73  ddFileToContents
8a00: 28 70 61 67 65 54 69 74 6c 65 2c 20 66 69 6c 65  (pageTitle, file
8a10: 4e 61 6d 65 2c 20 48 74 6d 6c 48 65 6c 70 49 63  Name, HtmlHelpIc
8a20: 6f 6e 2e 50 61 67 65 29 3b 0d 0a 0d 0a 09 09 09  on.Page);.......
8a30: 09 09 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69  ..XsltArgumentLi
8a40: 73 74 20 61 72 67 75 6d 65 6e 74 73 32 20 3d 20  st arguments2 = 
8a50: 6e 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74  new XsltArgument
8a60: 4c 69 73 74 28 29 3b 0d 0a 09 09 09 09 09 61 72  List();.......ar
8a70: 67 75 6d 65 6e 74 73 32 2e 41 64 64 50 61 72 61  guments2.AddPara
8a80: 6d 28 22 70 72 6f 70 65 72 74 79 2d 69 64 22 2c  m("property-id",
8a90: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 70   String.Empty, p
8aa0: 72 6f 70 65 72 74 79 49 44 29 3b 0d 0a 09 09 09  ropertyID);.....
8ab0: 09 09 54 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72  ..TransformAndWr
8ac0: 69 74 65 52 65 73 75 6c 74 28 63 74 78 2c 20 22  iteResult(ctx, "
8ad0: 70 72 6f 70 65 72 74 79 22 2c 20 61 72 67 75 6d  property", argum
8ae0: 65 6e 74 73 32 2c 20 66 69 6c 65 4e 61 6d 65 29  ents2, fileName)
8af0: 3b 0d 0a 0d 0a 09 09 09 09 09 69 66 20 28 28 70  ;.........if ((p
8b00: 72 65 76 69 6f 75 73 50 72 6f 70 65 72 74 79 4e  reviousPropertyN
8b10: 61 6d 65 20 3d 3d 20 70 72 6f 70 65 72 74 79 4e  ame == propertyN
8b20: 61 6d 65 29 20 26 26 20 28 6e 65 78 74 50 72 6f  ame) && (nextPro
8b30: 70 65 72 74 79 4e 61 6d 65 20 21 3d 20 70 72 6f  pertyName != pro
8b40: 70 65 72 74 79 4e 61 6d 65 29 29 20 7b 0d 0a 09  pertyName)) {...
8b50: 09 09 09 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c  .....ctx.htmlHel
8b60: 70 2e 43 6c 6f 73 65 42 6f 6f 6b 49 6e 43 6f 6e  p.CloseBookInCon
8b70: 74 65 6e 74 73 28 29 3b 0d 0a 09 09 09 09 09 09  tents();........
8b80: 62 4f 76 65 72 6c 6f 61 64 65 64 20 3d 20 66 61  bOverloaded = fa
8b90: 6c 73 65 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09  lse;.......}....
8ba0: 09 09 7d 0d 0a 0d 0a 09 09 09 09 63 74 78 2e 68  ..}........ctx.h
8bb0: 74 6d 6c 48 65 6c 70 2e 43 6c 6f 73 65 42 6f 6f  tmlHelp.CloseBoo
8bc0: 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a  kInContents();..
8bd0: 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70  ...}....}......p
8be0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
8bf0: 72 69 6e 67 20 47 65 74 50 72 65 76 69 6f 75 73  ring GetPrevious
8c00: 4d 65 74 68 6f 64 4e 61 6d 65 28 58 6d 6c 4e 6f  MethodName(XmlNo
8c10: 64 65 4c 69 73 74 20 6d 65 74 68 6f 64 4e 6f 64  deList methodNod
8c20: 65 73 2c 20 69 6e 74 5b 5d 20 69 6e 64 65 78 65  es, int[] indexe
8c30: 73 2c 20 69 6e 74 20 69 6e 64 65 78 29 0d 0a 09  s, int index)...
8c40: 09 7b 0d 0a 09 09 09 77 68 69 6c 65 20 28 2d 2d  .{.....while (--
8c50: 69 6e 64 65 78 20 3e 3d 20 30 29 20 7b 0d 0a 09  index >= 0) {...
8c60: 09 09 09 69 66 20 28 6d 65 74 68 6f 64 4e 6f 64  ...if (methodNod
8c70: 65 73 5b 69 6e 64 65 78 65 73 5b 69 6e 64 65 78  es[indexes[index
8c80: 5d 5d 2e 41 74 74 72 69 62 75 74 65 73 5b 22 64  ]].Attributes["d
8c90: 65 63 6c 61 72 69 6e 67 54 79 70 65 22 5d 20 3d  eclaringType"] =
8ca0: 3d 20 6e 75 6c 6c 29 0d 0a 09 09 09 09 09 72 65  = null).......re
8cb0: 74 75 72 6e 20 6d 65 74 68 6f 64 4e 6f 64 65 73  turn methodNodes
8cc0: 5b 69 6e 64 65 78 65 73 5b 69 6e 64 65 78 5d 5d  [indexes[index]]
8cd0: 2e 41 74 74 72 69 62 75 74 65 73 5b 22 6e 61 6d  .Attributes["nam
8ce0: 65 22 5d 2e 56 61 6c 75 65 3b 0d 0a 09 09 09 7d  e"].Value;.....}
8cf0: 0d 0a 09 09 09 72 65 74 75 72 6e 20 6e 75 6c 6c  .....return null
8d00: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76  ;....}......priv
8d10: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
8d20: 67 20 47 65 74 4e 65 78 74 4d 65 74 68 6f 64 4e  g GetNextMethodN
8d30: 61 6d 65 28 58 6d 6c 4e 6f 64 65 4c 69 73 74 20  ame(XmlNodeList 
8d40: 6d 65 74 68 6f 64 4e 6f 64 65 73 2c 20 69 6e 74  methodNodes, int
8d50: 5b 5d 20 69 6e 64 65 78 65 73 2c 20 69 6e 74 20  [] indexes, int 
8d60: 69 6e 64 65 78 29 0d 0a 09 09 7b 0d 0a 09 09 09  index)....{.....
8d70: 77 68 69 6c 65 20 28 2b 2b 69 6e 64 65 78 20 3c  while (++index <
8d80: 20 6d 65 74 68 6f 64 4e 6f 64 65 73 2e 43 6f 75   methodNodes.Cou
8d90: 6e 74 29 20 7b 0d 0a 09 09 09 09 69 66 20 28 6d  nt) {......if (m
8da0: 65 74 68 6f 64 4e 6f 64 65 73 5b 69 6e 64 65 78  ethodNodes[index
8db0: 65 73 5b 69 6e 64 65 78 5d 5d 2e 41 74 74 72 69  es[index]].Attri
8dc0: 62 75 74 65 73 5b 22 64 65 63 6c 61 72 69 6e 67  butes["declaring
8dd0: 54 79 70 65 22 5d 20 3d 3d 20 6e 75 6c 6c 29 0d  Type"] == null).
8de0: 0a 09 09 09 09 09 72 65 74 75 72 6e 20 6d 65 74  ......return met
8df0: 68 6f 64 4e 6f 64 65 73 5b 69 6e 64 65 78 65 73  hodNodes[indexes
8e00: 5b 69 6e 64 65 78 5d 5d 2e 41 74 74 72 69 62 75  [index]].Attribu
8e10: 74 65 73 5b 22 6e 61 6d 65 22 5d 2e 56 61 6c 75  tes["name"].Valu
8e20: 65 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09 72 65 74  e;.....}.....ret
8e30: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 09 7d 0d 0a  urn null;....}..
8e40: 0d 0a 09 09 2f 2f 20 72 65 74 75 72 6e 73 20 74  ....// returns t
8e50: 72 75 65 2c 20 69 66 20 6d 65 74 68 6f 64 20 69  rue, if method i
8e60: 73 20 6e 65 69 74 68 65 72 20 6f 76 65 72 6c 6f  s neither overlo
8e70: 61 64 20 6f 66 20 61 20 6d 65 74 68 6f 64 20 69  ad of a method i
8e80: 6e 20 74 68 65 20 73 61 6d 65 20 63 6c 61 73 73  n the same class
8e90: 2c 0d 0a 09 09 2f 2f 20 6e 6f 72 20 6f 76 65 72  ,....// nor over
8ea0: 6c 6f 61 64 20 6f 66 20 61 20 6d 65 74 68 6f 64  load of a method
8eb0: 20 69 6e 20 74 68 65 20 62 61 73 65 20 63 6c 61   in the base cla
8ec0: 73 73 2e 0d 0a 09 09 70 72 69 76 61 74 65 20 73  ss.....private s
8ed0: 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 4d 65 74  tatic bool IsMet
8ee0: 68 6f 64 41 6c 6f 6e 65 28 58 6d 6c 4e 6f 64 65  hodAlone(XmlNode
8ef0: 4c 69 73 74 20 6d 65 74 68 6f 64 4e 6f 64 65 73  List methodNodes
8f00: 2c 20 69 6e 74 5b 5d 20 69 6e 64 65 78 65 73 2c  , int[] indexes,
8f10: 20 69 6e 74 20 69 6e 64 65 78 29 0d 0a 09 09 7b   int index)....{
8f20: 0d 0a 09 09 09 73 74 72 69 6e 67 20 6e 61 6d 65  .....string name
8f30: 20 3d 20 6d 65 74 68 6f 64 4e 6f 64 65 73 5b 69   = methodNodes[i
8f40: 6e 64 65 78 65 73 5b 69 6e 64 65 78 5d 5d 2e 41  ndexes[index]].A
8f50: 74 74 72 69 62 75 74 65 73 5b 22 6e 61 6d 65 22  ttributes["name"
8f60: 5d 2e 56 61 6c 75 65 3b 0d 0a 09 09 09 69 6e 74  ].Value;.....int
8f70: 20 6c 61 73 74 49 6e 64 65 78 20 3d 20 6d 65 74   lastIndex = met
8f80: 68 6f 64 4e 6f 64 65 73 2e 43 6f 75 6e 74 20 2d  hodNodes.Count -
8f90: 20 31 3b 0d 0a 09 09 09 69 66 20 28 6c 61 73 74   1;.....if (last
8fa0: 49 6e 64 65 78 20 3c 3d 20 30 29 0d 0a 09 09 09  Index <= 0).....
8fb0: 09 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 09  .return true;...
8fc0: 09 09 62 6f 6f 6c 20 70 72 65 76 69 6f 75 73 4e  ..bool previousN
8fd0: 61 6d 65 44 69 66 66 65 72 65 6e 74 20 3d 20 28  ameDifferent = (
8fe0: 69 6e 64 65 78 20 3d 3d 20 30 29 0d 0a 09 09 09  index == 0).....
8ff0: 09 7c 7c 20 28 6d 65 74 68 6f 64 4e 6f 64 65 73  .|| (methodNodes
9000: 5b 69 6e 64 65 78 65 73 5b 69 6e 64 65 78 20 2d  [indexes[index -
9010: 20 31 5d 5d 2e 41 74 74 72 69 62 75 74 65 73 5b   1]].Attributes[
9020: 22 6e 61 6d 65 22 5d 2e 56 61 6c 75 65 20 21 3d  "name"].Value !=
9030: 20 6e 61 6d 65 29 3b 0d 0a 09 09 09 62 6f 6f 6c   name);.....bool
9040: 20 6e 65 78 74 4e 61 6d 65 44 69 66 66 65 72 65   nextNameDiffere
9050: 6e 74 20 3d 20 28 69 6e 64 65 78 20 3d 3d 20 6c  nt = (index == l
9060: 61 73 74 49 6e 64 65 78 29 0d 0a 09 09 09 09 7c  astIndex)......|
9070: 7c 20 28 6d 65 74 68 6f 64 4e 6f 64 65 73 5b 69  | (methodNodes[i
9080: 6e 64 65 78 65 73 5b 69 6e 64 65 78 20 2b 20 31  ndexes[index + 1
9090: 5d 5d 2e 41 74 74 72 69 62 75 74 65 73 5b 22 6e  ]].Attributes["n
90a0: 61 6d 65 22 5d 2e 56 61 6c 75 65 20 21 3d 20 6e  ame"].Value != n
90b0: 61 6d 65 29 3b 0d 0a 09 09 09 72 65 74 75 72 6e  ame);.....return
90c0: 20 28 70 72 65 76 69 6f 75 73 4e 61 6d 65 44 69   (previousNameDi
90d0: 66 66 65 72 65 6e 74 20 26 26 20 6e 65 78 74 4e  fferent && nextN
90e0: 61 6d 65 44 69 66 66 65 72 65 6e 74 29 3b 0d 0a  ameDifferent);..
90f0: 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65  ..}......private
9100: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 4d   static bool IsM
9110: 65 74 68 6f 64 46 69 72 73 74 4f 76 65 72 6c 6f  ethodFirstOverlo
9120: 61 64 28 58 6d 6c 4e 6f 64 65 4c 69 73 74 20 6d  ad(XmlNodeList m
9130: 65 74 68 6f 64 4e 6f 64 65 73 2c 20 69 6e 74 5b  ethodNodes, int[
9140: 5d 20 69 6e 64 65 78 65 73 2c 20 69 6e 74 20 69  ] indexes, int i
9150: 6e 64 65 78 29 0d 0a 09 09 7b 0d 0a 09 09 09 69  ndex)....{.....i
9160: 66 20 28 28 6d 65 74 68 6f 64 4e 6f 64 65 73 5b  f ((methodNodes[
9170: 69 6e 64 65 78 65 73 5b 69 6e 64 65 78 5d 5d 2e  indexes[index]].
9180: 41 74 74 72 69 62 75 74 65 73 5b 22 64 65 63 6c  Attributes["decl
9190: 61 72 69 6e 67 54 79 70 65 22 5d 20 21 3d 20 6e  aringType"] != n
91a0: 75 6c 6c 29 0d 0a 09 09 09 09 7c 7c 20 49 73 4d  ull)......|| IsM
91b0: 65 74 68 6f 64 41 6c 6f 6e 65 28 6d 65 74 68 6f  ethodAlone(metho
91c0: 64 4e 6f 64 65 73 2c 20 69 6e 64 65 78 65 73 2c  dNodes, indexes,
91d0: 20 69 6e 64 65 78 29 29 0d 0a 09 09 09 09 72 65   index))......re
91e0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 09  turn false;.....
91f0: 09 09 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20  ..string name = 
9200: 6d 65 74 68 6f 64 4e 6f 64 65 73 5b 69 6e 64 65  methodNodes[inde
9210: 78 65 73 5b 69 6e 64 65 78 5d 5d 2e 41 74 74 72  xes[index]].Attr
9220: 69 62 75 74 65 73 5b 22 6e 61 6d 65 22 5d 2e 56  ibutes["name"].V
9230: 61 6c 75 65 3b 0d 0a 09 09 09 73 74 72 69 6e 67  alue;.....string
9240: 20 70 72 65 76 69 6f 75 73 4e 61 6d 65 20 3d 20   previousName = 
9250: 47 65 74 50 72 65 76 69 6f 75 73 4d 65 74 68 6f  GetPreviousMetho
9260: 64 4e 61 6d 65 28 6d 65 74 68 6f 64 4e 6f 64 65  dName(methodNode
9270: 73 2c 20 69 6e 64 65 78 65 73 2c 20 69 6e 64 65  s, indexes, inde
9280: 78 29 3b 0d 0a 09 09 09 72 65 74 75 72 6e 20 70  x);.....return p
9290: 72 65 76 69 6f 75 73 4e 61 6d 65 20 21 3d 20 6e  reviousName != n
92a0: 61 6d 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70  ame;....}......p
92b0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
92c0: 6f 6c 20 49 73 4d 65 74 68 6f 64 4c 61 73 74 4f  ol IsMethodLastO
92d0: 76 65 72 6c 6f 61 64 28 58 6d 6c 4e 6f 64 65 4c  verload(XmlNodeL
92e0: 69 73 74 20 6d 65 74 68 6f 64 4e 6f 64 65 73 2c  ist methodNodes,
92f0: 20 69 6e 74 5b 5d 20 69 6e 64 65 78 65 73 2c 20   int[] indexes, 
9300: 69 6e 74 20 69 6e 64 65 78 29 0d 0a 09 09 7b 0d  int index)....{.
9310: 0a 09 09 09 69 66 20 28 28 6d 65 74 68 6f 64 4e  ....if ((methodN
9320: 6f 64 65 73 5b 69 6e 64 65 78 65 73 5b 69 6e 64  odes[indexes[ind
9330: 65 78 5d 5d 2e 41 74 74 72 69 62 75 74 65 73 5b  ex]].Attributes[
9340: 22 64 65 63 6c 61 72 69 6e 67 54 79 70 65 22 5d  "declaringType"]
9350: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 09 09 09 09 7c   != null)......|
9360: 7c 20 49 73 4d 65 74 68 6f 64 41 6c 6f 6e 65 28  | IsMethodAlone(
9370: 6d 65 74 68 6f 64 4e 6f 64 65 73 2c 20 69 6e 64  methodNodes, ind
9380: 65 78 65 73 2c 20 69 6e 64 65 78 29 29 0d 0a 09  exes, index))...
9390: 09 09 09 72 65 74 75 72 6e 20 66 61 6c 73 65 3b  ...return false;
93a0: 0d 0a 0d 0a 09 09 09 73 74 72 69 6e 67 20 6e 61  .......string na
93b0: 6d 65 20 3d 20 6d 65 74 68 6f 64 4e 6f 64 65 73  me = methodNodes
93c0: 5b 69 6e 64 65 78 65 73 5b 69 6e 64 65 78 5d 5d  [indexes[index]]
93d0: 2e 41 74 74 72 69 62 75 74 65 73 5b 22 6e 61 6d  .Attributes["nam
93e0: 65 22 5d 2e 56 61 6c 75 65 3b 0d 0a 09 09 09 73  e"].Value;.....s
93f0: 74 72 69 6e 67 20 6e 65 78 74 4e 61 6d 65 20 3d  tring nextName =
9400: 20 47 65 74 4e 65 78 74 4d 65 74 68 6f 64 4e 61   GetNextMethodNa
9410: 6d 65 28 6d 65 74 68 6f 64 4e 6f 64 65 73 2c 20  me(methodNodes, 
9420: 69 6e 64 65 78 65 73 2c 20 69 6e 64 65 78 29 3b  indexes, index);
9430: 0d 0a 09 09 09 72 65 74 75 72 6e 20 6e 65 78 74  .....return next
9440: 4e 61 6d 65 20 21 3d 20 6e 61 6d 65 3b 0d 0a 09  Name != name;...
9450: 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20  .}......private 
9460: 76 6f 69 64 20 4d 61 6b 65 48 74 6d 6c 46 6f 72  void MakeHtmlFor
9470: 4d 65 74 68 6f 64 73 28 42 75 69 6c 64 41 73 73  Methods(BuildAss
9480: 65 6d 62 6c 79 43 6f 6e 74 65 78 74 20 63 74 78  emblyContext ctx
9490: 2c 20 58 6d 6c 4e 6f 64 65 20 74 79 70 65 4e 6f  , XmlNode typeNo
94a0: 64 65 29 0d 0a 09 09 7b 0d 0a 09 09 09 58 6d 6c  de)....{.....Xml
94b0: 4e 6f 64 65 4c 69 73 74 20 64 65 63 6c 61 72 65  NodeList declare
94c0: 64 4d 65 74 68 6f 64 4e 6f 64 65 73 20 3d 20 63  dMethodNodes = c
94d0: 74 78 2e 53 65 6c 65 63 74 4e 6f 64 65 73 28 74  tx.SelectNodes(t
94e0: 79 70 65 4e 6f 64 65 2c 20 22 6e 64 6f 63 3a 6d  ypeNode, "ndoc:m
94f0: 65 74 68 6f 64 5b 6e 6f 74 28 40 64 65 63 6c 61  ethod[not(@decla
9500: 72 69 6e 67 54 79 70 65 29 5d 22 29 3b 0d 0a 0d  ringType)]");...
9510: 0a 09 09 09 69 66 20 28 64 65 63 6c 61 72 65 64  ....if (declared
9520: 4d 65 74 68 6f 64 4e 6f 64 65 73 2e 43 6f 75 6e  MethodNodes.Coun
9530: 74 20 3e 20 30 29 20 7b 0d 0a 09 09 09 09 62 6f  t > 0) {......bo
9540: 6f 6c 20 62 4f 76 65 72 6c 6f 61 64 65 64 20 3d  ol bOverloaded =
9550: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 09 09 09 09 73   false;........s
9560: 74 72 69 6e 67 20 74 79 70 65 49 44 20 3d 20 47  tring typeID = G
9570: 65 74 4e 6f 64 65 49 64 28 74 79 70 65 4e 6f 64  etNodeId(typeNod
9580: 65 29 3b 0d 0a 09 09 09 09 58 6d 6c 4e 6f 64 65  e);......XmlNode
9590: 4c 69 73 74 20 6d 65 74 68 6f 64 4e 6f 64 65 73  List methodNodes
95a0: 20 3d 20 63 74 78 2e 53 65 6c 65 63 74 4e 6f 64   = ctx.SelectNod
95b0: 65 73 28 74 79 70 65 4e 6f 64 65 2c 20 22 6e 64  es(typeNode, "nd
95c0: 6f 63 3a 6d 65 74 68 6f 64 22 29 3b 0d 0a 09 09  oc:method");....
95d0: 09 09 69 6e 74 20 6e 4e 6f 64 65 73 20 3d 20 6d  ..int nNodes = m
95e0: 65 74 68 6f 64 4e 6f 64 65 73 2e 43 6f 75 6e 74  ethodNodes.Count
95f0: 3b 0d 0a 0d 0a 09 09 09 09 69 6e 74 5b 5d 20 69  ;........int[] i
9600: 6e 64 65 78 65 73 20 3d 20 53 6f 72 74 4e 6f 64  ndexes = SortNod
9610: 65 73 42 79 41 74 74 72 69 62 75 74 65 28 6d 65  esByAttribute(me
9620: 74 68 6f 64 4e 6f 64 65 73 2c 20 22 69 64 22 29  thodNodes, "id")
9630: 3b 0d 0a 0d 0a 09 09 09 09 73 74 72 69 6e 67 20  ;........string 
9640: 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78 2e 5f  fileName = ctx._
9650: 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47 65 74  nameResolver.Get
9660: 46 69 6c 65 6e 61 6d 65 46 6f 72 4d 65 74 68 6f  FilenameForMetho
9670: 64 4c 69 73 74 28 63 74 78 2e 43 75 72 72 65 6e  dList(ctx.Curren
9680: 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74  tAssemblyName, t
9690: 79 70 65 49 44 29 3b 0d 0a 09 09 09 09 63 74 78  ypeID);......ctx
96a0: 2e 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c  .htmlHelp.AddFil
96b0: 65 54 6f 43 6f 6e 74 65 6e 74 73 28 22 4d 65 74  eToContents("Met
96c0: 68 6f 64 73 22 2c 20 66 69 6c 65 4e 61 6d 65 29  hods", fileName)
96d0: 3b 0d 0a 0d 0a 09 09 09 09 58 73 6c 74 41 72 67  ;........XsltArg
96e0: 75 6d 65 6e 74 4c 69 73 74 20 61 72 67 75 6d 65  umentList argume
96f0: 6e 74 73 20 3d 20 6e 65 77 20 58 73 6c 74 41 72  nts = new XsltAr
9700: 67 75 6d 65 6e 74 4c 69 73 74 28 29 3b 0d 0a 09  gumentList();...
9710: 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41 64 64  ...arguments.Add
9720: 50 61 72 61 6d 28 22 74 79 70 65 2d 69 64 22 2c  Param("type-id",
9730: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 74   String.Empty, t
9740: 79 70 65 49 44 29 3b 0d 0a 09 09 09 09 61 72 67  ypeID);......arg
9750: 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28  uments.AddParam(
9760: 22 6d 65 6d 62 65 72 2d 74 79 70 65 22 2c 20 53  "member-type", S
9770: 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 22 6d 65  tring.Empty, "me
9780: 74 68 6f 64 22 29 3b 0d 0a 09 09 09 09 54 72 61  thod");......Tra
9790: 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74 65 52 65  nsformAndWriteRe
97a0: 73 75 6c 74 28 63 74 78 2c 20 22 69 6e 64 69 76  sult(ctx, "indiv
97b0: 69 64 75 61 6c 6d 65 6d 62 65 72 73 22 2c 20 61  idualmembers", a
97c0: 72 67 75 6d 65 6e 74 73 2c 20 66 69 6c 65 4e 61  rguments, fileNa
97d0: 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09 63 74 78 2e  me);........ctx.
97e0: 68 74 6d 6c 48 65 6c 70 2e 4f 70 65 6e 42 6f 6f  htmlHelp.OpenBoo
97f0: 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a  kInContents();..
9800: 0d 0a 09 09 09 09 66 6f 72 20 28 69 6e 74 20 69  ......for (int i
9810: 20 3d 20 30 3b 20 69 20 3c 20 6e 4e 6f 64 65 73   = 0; i < nNodes
9820: 3b 20 69 2b 2b 29 20 7b 0d 0a 09 09 09 09 09 58  ; i++) {.......X
9830: 6d 6c 4e 6f 64 65 20 6d 65 74 68 6f 64 4e 6f 64  mlNode methodNod
9840: 65 20 3d 20 6d 65 74 68 6f 64 4e 6f 64 65 73 5b  e = methodNodes[
9850: 69 6e 64 65 78 65 73 5b 69 5d 5d 3b 0d 0a 09 09  indexes[i]];....
9860: 09 09 09 73 74 72 69 6e 67 20 6d 65 74 68 6f 64  ...string method
9870: 44 69 73 70 6c 61 79 4e 61 6d 65 20 3d 20 47 65  DisplayName = Ge
9880: 74 4e 6f 64 65 44 69 73 70 6c 61 79 4e 61 6d 65  tNodeDisplayName
9890: 28 6d 65 74 68 6f 64 4e 6f 64 65 29 3b 0d 0a 09  (methodNode);...
98a0: 09 09 09 09 73 74 72 69 6e 67 20 6d 65 74 68 6f  ....string metho
98b0: 64 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64 65 4e  dName = GetNodeN
98c0: 61 6d 65 28 6d 65 74 68 6f 64 4e 6f 64 65 29 3b  ame(methodNode);
98d0: 0d 0a 09 09 09 09 09 73 74 72 69 6e 67 20 6d 65  .......string me
98e0: 74 68 6f 64 49 44 20 3d 20 47 65 74 4e 6f 64 65  thodID = GetNode
98f0: 49 64 28 6d 65 74 68 6f 64 4e 6f 64 65 29 3b 0d  Id(methodNode);.
9900: 0a 0d 0a 09 09 09 09 09 69 66 20 28 49 73 4d 65  ........if (IsMe
9910: 74 68 6f 64 46 69 72 73 74 4f 76 65 72 6c 6f 61  thodFirstOverloa
9920: 64 28 6d 65 74 68 6f 64 4e 6f 64 65 73 2c 20 69  d(methodNodes, i
9930: 6e 64 65 78 65 73 2c 20 69 29 29 20 7b 0d 0a 09  ndexes, i)) {...
9940: 09 09 09 09 09 62 4f 76 65 72 6c 6f 61 64 65 64  .....bOverloaded
9950: 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 09 09 09 09   = true;........
9960: 09 09 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78  ..fileName = ctx
9970: 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47  ._nameResolver.G
9980: 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 4d 65 74  etFilenameForMet
9990: 68 6f 64 4f 76 65 72 6c 6f 61 64 73 28 63 74 78  hodOverloads(ctx
99a0: 2e 43 75 72 72 65 6e 74 41 73 73 65 6d 62 6c 79  .CurrentAssembly
99b0: 4e 61 6d 65 2c 20 74 79 70 65 49 44 2c 20 6d 65  Name, typeID, me
99c0: 74 68 6f 64 4e 61 6d 65 29 3b 0d 0a 09 09 09 09  thodName);......
99d0: 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 41  ..ctx.htmlHelp.A
99e0: 64 64 46 69 6c 65 54 6f 43 6f 6e 74 65 6e 74 73  ddFileToContents
99f0: 28 6d 65 74 68 6f 64 44 69 73 70 6c 61 79 4e 61  (methodDisplayNa
9a00: 6d 65 20 2b 20 22 20 4d 65 74 68 6f 64 22 2c 20  me + " Method", 
9a10: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09  fileName);......
9a20: 09 09 09 09 61 72 67 75 6d 65 6e 74 73 20 3d 20  ....arguments = 
9a30: 6e 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74  new XsltArgument
9a40: 4c 69 73 74 28 29 3b 0d 0a 09 09 09 09 09 09 61  List();........a
9a50: 72 67 75 6d 65 6e 74 73 2e 41 64 64 50 61 72 61  rguments.AddPara
9a60: 6d 28 22 6d 65 6d 62 65 72 2d 69 64 22 2c 20 53  m("member-id", S
9a70: 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 6d 65 74  tring.Empty, met
9a80: 68 6f 64 49 44 29 3b 0d 0a 09 09 09 09 09 09 54  hodID);........T
9a90: 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74 65  ransformAndWrite
9aa0: 52 65 73 75 6c 74 28 63 74 78 2c 20 22 6d 65 6d  Result(ctx, "mem
9ab0: 62 65 72 6f 76 65 72 6c 6f 61 64 22 2c 20 61 72  beroverload", ar
9ac0: 67 75 6d 65 6e 74 73 2c 20 66 69 6c 65 4e 61 6d  guments, fileNam
9ad0: 65 29 3b 0d 0a 0d 0a 09 09 09 09 09 09 63 74 78  e);..........ctx
9ae0: 2e 68 74 6d 6c 48 65 6c 70 2e 4f 70 65 6e 42 6f  .htmlHelp.OpenBo
9af0: 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d  okInContents();.
9b00: 0a 09 09 09 09 09 7d 0d 0a 0d 0a 09 09 09 09 09  ......}.........
9b10: 69 66 20 28 58 6d 6c 55 74 69 6c 73 2e 47 65 74  if (XmlUtils.Get
9b20: 41 74 74 72 69 62 75 74 65 53 74 72 69 6e 67 28  AttributeString(
9b30: 6d 65 74 68 6f 64 4e 6f 64 65 2c 20 22 64 65 63  methodNode, "dec
9b40: 6c 61 72 69 6e 67 54 79 70 65 22 2c 20 66 61 6c  laringType", fal
9b50: 73 65 29 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0d 0a  se) == null) {..
9b60: 09 09 09 09 09 09 66 69 6c 65 4e 61 6d 65 20 3d  ......fileName =
9b70: 20 63 74 78 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76   ctx._nameResolv
9b80: 65 72 2e 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f  er.GetFilenameFo
9b90: 72 49 64 28 63 74 78 2e 43 75 72 72 65 6e 74 41  rId(ctx.CurrentA
9ba0: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6d 65 74  ssemblyName, met
9bb0: 68 6f 64 49 44 29 3b 0d 0a 0d 0a 09 09 09 09 09  hodID);.........
9bc0: 09 73 74 72 69 6e 67 20 70 61 67 65 54 69 74 6c  .string pageTitl
9bd0: 65 3b 0d 0a 09 09 09 09 09 09 69 66 20 28 62 4f  e;........if (bO
9be0: 76 65 72 6c 6f 61 64 65 64 29 20 7b 0d 0a 09 09  verloaded) {....
9bf0: 09 09 09 09 09 58 6d 6c 4e 6f 64 65 4c 69 73 74  .....XmlNodeList
9c00: 20 70 61 72 61 6d 65 74 65 72 4e 6f 64 65 73 20   parameterNodes 
9c10: 3d 20 63 74 78 2e 53 65 6c 65 63 74 4e 6f 64 65  = ctx.SelectNode
9c20: 73 28 6d 65 74 68 6f 64 4e 6f 64 65 2c 20 22 6e  s(methodNode, "n
9c30: 64 6f 63 3a 70 61 72 61 6d 65 74 65 72 22 29 3b  doc:parameter");
9c40: 0d 0a 09 09 09 09 09 09 09 70 61 67 65 54 69 74  .........pageTit
9c50: 6c 65 20 3d 20 6d 65 74 68 6f 64 44 69 73 70 6c  le = methodDispl
9c60: 61 79 4e 61 6d 65 20 2b 20 47 65 74 50 61 72 61  ayName + GetPara
9c70: 6d 4c 69 73 74 28 70 61 72 61 6d 65 74 65 72 4e  mList(parameterN
9c80: 6f 64 65 73 29 20 2b 20 22 20 4d 65 74 68 6f 64  odes) + " Method
9c90: 20 22 3b 0d 0a 09 09 09 09 09 09 7d 20 65 6c 73   ";........} els
9ca0: 65 20 7b 0d 0a 09 09 09 09 09 09 09 70 61 67 65  e {.........page
9cb0: 54 69 74 6c 65 20 3d 20 6d 65 74 68 6f 64 44 69  Title = methodDi
9cc0: 73 70 6c 61 79 4e 61 6d 65 20 2b 20 22 20 4d 65  splayName + " Me
9cd0: 74 68 6f 64 22 3b 0d 0a 09 09 09 09 09 09 7d 0d  thod";........}.
9ce0: 0a 09 09 09 09 09 09 63 74 78 2e 68 74 6d 6c 48  .......ctx.htmlH
9cf0: 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f 43 6f 6e  elp.AddFileToCon
9d00: 74 65 6e 74 73 28 70 61 67 65 54 69 74 6c 65 2c  tents(pageTitle,
9d10: 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 09 09 09 09   fileName,......
9d20: 09 09 09 48 74 6d 6c 48 65 6c 70 49 63 6f 6e 2e  ...HtmlHelpIcon.
9d30: 50 61 67 65 29 3b 0d 0a 0d 0a 09 09 09 09 09 09  Page);..........
9d40: 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69 73 74  XsltArgumentList
9d50: 20 61 72 67 75 6d 65 6e 74 73 32 20 3d 20 6e 65   arguments2 = ne
9d60: 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69  w XsltArgumentLi
9d70: 73 74 28 29 3b 0d 0a 09 09 09 09 09 09 61 72 67  st();........arg
9d80: 75 6d 65 6e 74 73 32 2e 41 64 64 50 61 72 61 6d  uments2.AddParam
9d90: 28 22 6d 65 6d 62 65 72 2d 69 64 22 2c 20 53 74  ("member-id", St
9da0: 72 69 6e 67 2e 45 6d 70 74 79 2c 20 6d 65 74 68  ring.Empty, meth
9db0: 6f 64 49 44 29 3b 0d 0a 09 09 09 09 09 09 54 72  odID);........Tr
9dc0: 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74 65 52  ansformAndWriteR
9dd0: 65 73 75 6c 74 28 63 74 78 2c 20 22 6d 65 6d 62  esult(ctx, "memb
9de0: 65 72 22 2c 20 61 72 67 75 6d 65 6e 74 73 32 2c  er", arguments2,
9df0: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 09 09 09   fileName);.....
9e00: 09 09 7d 0d 0a 0d 0a 09 09 09 09 09 69 66 20 28  ..}.........if (
9e10: 62 4f 76 65 72 6c 6f 61 64 65 64 20 26 26 20 49  bOverloaded && I
9e20: 73 4d 65 74 68 6f 64 4c 61 73 74 4f 76 65 72 6c  sMethodLastOverl
9e30: 6f 61 64 28 6d 65 74 68 6f 64 4e 6f 64 65 73 2c  oad(methodNodes,
9e40: 20 69 6e 64 65 78 65 73 2c 20 69 29 29 20 7b 0d   indexes, i)) {.
9e50: 0a 09 09 09 09 09 09 62 4f 76 65 72 6c 6f 61 64  .......bOverload
9e60: 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 09 09 09  ed = false;.....
9e70: 09 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e  ...ctx.htmlHelp.
9e80: 43 6c 6f 73 65 42 6f 6f 6b 49 6e 43 6f 6e 74 65  CloseBookInConte
9e90: 6e 74 73 28 29 3b 0d 0a 09 09 09 09 09 7d 0d 0a  nts();.......}..
9ea0: 09 09 09 09 7d 0d 0a 0d 0a 09 09 09 09 63 74 78  ....}........ctx
9eb0: 2e 68 74 6d 6c 48 65 6c 70 2e 43 6c 6f 73 65 42  .htmlHelp.CloseB
9ec0: 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b  ookInContents();
9ed0: 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09  .....}....}.....
9ee0: 09 70 72 69 76 61 74 65 20 76 6f 69 64 20 4d 61  .private void Ma
9ef0: 6b 65 48 74 6d 6c 46 6f 72 4f 70 65 72 61 74 6f  keHtmlForOperato
9f00: 72 73 28 42 75 69 6c 64 41 73 73 65 6d 62 6c 79  rs(BuildAssembly
9f10: 43 6f 6e 74 65 78 74 20 63 74 78 2c 20 58 6d 6c  Context ctx, Xml
9f20: 4e 6f 64 65 20 74 79 70 65 4e 6f 64 65 29 0d 0a  Node typeNode)..
9f30: 09 09 7b 0d 0a 09 09 09 58 6d 6c 4e 6f 64 65 4c  ..{.....XmlNodeL
9f40: 69 73 74 20 6f 70 4e 6f 64 65 73 20 3d 20 63 74  ist opNodes = ct
9f50: 78 2e 53 65 6c 65 63 74 4e 6f 64 65 73 28 74 79  x.SelectNodes(ty
9f60: 70 65 4e 6f 64 65 2c 20 22 6e 64 6f 63 3a 6f 70  peNode, "ndoc:op
9f70: 65 72 61 74 6f 72 22 29 3b 0d 0a 0d 0a 09 09 09  erator");.......
9f80: 69 66 20 28 6f 70 4e 6f 64 65 73 2e 43 6f 75 6e  if (opNodes.Coun
9f90: 74 20 3d 3d 20 30 29 0d 0a 09 09 09 09 72 65 74  t == 0)......ret
9fa0: 75 72 6e 3b 0d 0a 0d 0a 09 09 09 73 74 72 69 6e  urn;.......strin
9fb0: 67 20 74 79 70 65 49 44 20 3d 20 47 65 74 4e 6f  g typeID = GetNo
9fc0: 64 65 49 64 28 74 79 70 65 4e 6f 64 65 29 3b 0d  deId(typeNode);.
9fd0: 0a 09 09 09 73 74 72 69 6e 67 20 66 69 6c 65 4e  ....string fileN
9fe0: 61 6d 65 20 3d 20 63 74 78 2e 5f 6e 61 6d 65 52  ame = ctx._nameR
9ff0: 65 73 6f 6c 76 65 72 2e 47 65 74 46 69 6c 65 6e  esolver.GetFilen
a000: 61 6d 65 46 6f 72 4f 70 65 72 61 74 6f 72 4c 69  ameForOperatorLi
a010: 73 74 28 63 74 78 2e 43 75 72 72 65 6e 74 41 73  st(ctx.CurrentAs
a020: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70 65  semblyName, type
a030: 49 44 29 3b 0d 0a 09 09 09 62 6f 6f 6c 20 62 4f  ID);.....bool bO
a040: 76 65 72 6c 6f 61 64 65 64 20 3d 20 66 61 6c 73  verloaded = fals
a050: 65 3b 0d 0a 0d 0a 09 09 09 62 6f 6f 6c 20 62 48  e;.......bool bH
a060: 61 73 4f 70 65 72 61 74 6f 72 73 20 3d 0d 0a 09  asOperators =...
a070: 09 09 09 28 63 74 78 2e 53 65 6c 65 63 74 53 69  ...(ctx.SelectSi
a080: 6e 67 6c 65 4e 6f 64 65 28 74 79 70 65 4e 6f 64  ngleNode(typeNod
a090: 65 2c 20 22 6e 64 6f 63 3a 6f 70 65 72 61 74 6f  e, "ndoc:operato
a0a0: 72 5b 40 6e 61 6d 65 20 21 3d 20 27 6f 70 5f 45  r[@name != 'op_E
a0b0: 78 70 6c 69 63 69 74 27 20 61 6e 64 20 40 6e 61  xplicit' and @na
a0c0: 6d 65 20 21 3d 20 27 6f 70 5f 49 6d 70 6c 69 63  me != 'op_Implic
a0d0: 69 74 27 5d 22 29 20 21 3d 20 6e 75 6c 6c 29 3b  it']") != null);
a0e0: 0d 0a 09 09 09 62 6f 6f 6c 20 62 48 61 73 43 6f  .....bool bHasCo
a0f0: 6e 76 65 72 74 65 72 73 20 3d 0d 0a 09 09 09 09  nverters =......
a100: 28 63 74 78 2e 53 65 6c 65 63 74 53 69 6e 67 6c  (ctx.SelectSingl
a110: 65 4e 6f 64 65 28 74 79 70 65 4e 6f 64 65 2c 20  eNode(typeNode, 
a120: 22 6e 64 6f 63 3a 6f 70 65 72 61 74 6f 72 5b 40  "ndoc:operator[@
a130: 6e 61 6d 65 20 20 3d 20 27 6f 70 5f 45 78 70 6c  name  = 'op_Expl
a140: 69 63 69 74 27 20 6f 72 20 20 40 6e 61 6d 65 20  icit' or  @name 
a150: 20 3d 20 27 6f 70 5f 49 6d 70 6c 69 63 69 74 27   = 'op_Implicit'
a160: 5d 22 29 20 21 3d 20 6e 75 6c 6c 29 3b 0d 0a 09  ]") != null);...
a170: 09 09 73 74 72 69 6e 67 20 70 61 67 65 54 69 74  ..string pageTit
a180: 6c 65 20 3d 20 22 22 3b 0d 0a 0d 0a 09 09 09 69  le = "";.......i
a190: 66 20 28 62 48 61 73 4f 70 65 72 61 74 6f 72 73  f (bHasOperators
a1a0: 29 20 7b 0d 0a 09 09 09 09 70 61 67 65 54 69 74  ) {......pageTit
a1b0: 6c 65 20 3d 20 62 48 61 73 43 6f 6e 76 65 72 74  le = bHasConvert
a1c0: 65 72 73 20 3f 20 22 4f 70 65 72 61 74 6f 72 73  ers ? "Operators
a1d0: 20 61 6e 64 20 54 79 70 65 20 43 6f 6e 76 65 72   and Type Conver
a1e0: 73 69 6f 6e 73 22 20 3a 20 22 4f 70 65 72 61 74  sions" : "Operat
a1f0: 6f 72 73 22 3b 0d 0a 09 09 09 7d 20 65 6c 73 65  ors";.....} else
a200: 20 7b 0d 0a 09 09 09 09 69 66 20 28 62 48 61 73   {......if (bHas
a210: 43 6f 6e 76 65 72 74 65 72 73 29 20 7b 0d 0a 09  Converters) {...
a220: 09 09 09 09 70 61 67 65 54 69 74 6c 65 20 3d 20  ....pageTitle = 
a230: 22 54 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e  "Type Conversion
a240: 73 22 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 7d  s";......}.....}
a250: 0d 0a 0d 0a 09 09 09 63 74 78 2e 68 74 6d 6c 48  .......ctx.htmlH
a260: 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f 43 6f 6e  elp.AddFileToCon
a270: 74 65 6e 74 73 28 70 61 67 65 54 69 74 6c 65 2c  tents(pageTitle,
a280: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09   fileName);.....
a290: 09 09 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69  ..XsltArgumentLi
a2a0: 73 74 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e  st arguments = n
a2b0: 65 77 20 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c  ew XsltArgumentL
a2c0: 69 73 74 28 29 3b 0d 0a 09 09 09 61 72 67 75 6d  ist();.....argum
a2d0: 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 74  ents.AddParam("t
a2e0: 79 70 65 2d 69 64 22 2c 20 53 74 72 69 6e 67 2e  ype-id", String.
a2f0: 45 6d 70 74 79 2c 20 74 79 70 65 49 44 29 3b 0d  Empty, typeID);.
a300: 0a 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41 64  ....arguments.Ad
a310: 64 50 61 72 61 6d 28 22 6d 65 6d 62 65 72 2d 74  dParam("member-t
a320: 79 70 65 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70  ype", String.Emp
a330: 74 79 2c 20 22 6f 70 65 72 61 74 6f 72 22 29 3b  ty, "operator");
a340: 0d 0a 09 09 09 54 72 61 6e 73 66 6f 72 6d 41 6e  .....TransformAn
a350: 64 57 72 69 74 65 52 65 73 75 6c 74 28 63 74 78  dWriteResult(ctx
a360: 2c 20 22 69 6e 64 69 76 69 64 75 61 6c 6d 65 6d  , "individualmem
a370: 62 65 72 73 22 2c 20 61 72 67 75 6d 65 6e 74 73  bers", arguments
a380: 2c 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  , fileName);....
a390: 09 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e  ...ctx.htmlHelp.
a3a0: 4f 70 65 6e 42 6f 6f 6b 49 6e 43 6f 6e 74 65 6e  OpenBookInConten
a3b0: 74 73 28 29 3b 0d 0a 0d 0a 09 09 09 69 6e 74 5b  ts();.......int[
a3c0: 5d 20 69 6e 64 65 78 65 73 20 3d 20 53 6f 72 74  ] indexes = Sort
a3d0: 4e 6f 64 65 73 42 79 41 74 74 72 69 62 75 74 65  NodesByAttribute
a3e0: 28 6f 70 4e 6f 64 65 73 2c 20 22 69 64 22 29 3b  (opNodes, "id");
a3f0: 0d 0a 09 09 09 69 6e 74 20 6e 4e 6f 64 65 73 20  .....int nNodes 
a400: 3d 20 6f 70 4e 6f 64 65 73 2e 43 6f 75 6e 74 3b  = opNodes.Count;
a410: 0d 0a 0d 0a 09 09 09 2f 2f 6f 70 65 72 61 74 6f  .......//operato
a420: 72 73 20 66 69 72 73 74 0d 0a 09 09 09 66 6f 72  rs first.....for
a430: 20 28 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c   (int i = 0; i <
a440: 20 6e 4e 6f 64 65 73 3b 20 69 2b 2b 29 20 7b 0d   nNodes; i++) {.
a450: 0a 09 09 09 09 58 6d 6c 4e 6f 64 65 20 6f 70 65  .....XmlNode ope
a460: 72 61 74 6f 72 4e 6f 64 65 20 3d 20 6f 70 4e 6f  ratorNode = opNo
a470: 64 65 73 5b 69 6e 64 65 78 65 73 5b 69 5d 5d 3b  des[indexes[i]];
a480: 0d 0a 0d 0a 09 09 09 09 73 74 72 69 6e 67 20 6f  ........string o
a490: 70 65 72 61 74 6f 72 49 44 20 3d 20 47 65 74 4e  peratorID = GetN
a4a0: 6f 64 65 49 64 28 6f 70 65 72 61 74 6f 72 4e 6f  odeId(operatorNo
a4b0: 64 65 29 3b 0d 0a 09 09 09 09 73 74 72 69 6e 67  de);......string
a4c0: 20 6f 70 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64   opName = GetNod
a4d0: 65 4e 61 6d 65 28 6f 70 65 72 61 74 6f 72 4e 6f  eName(operatorNo
a4e0: 64 65 29 3b 0d 0a 09 09 09 09 69 66 20 28 28 6f  de);......if ((o
a4f0: 70 4e 61 6d 65 20 21 3d 20 22 6f 70 5f 49 6d 70  pName != "op_Imp
a500: 6c 69 63 69 74 22 29 20 26 26 20 28 6f 70 4e 61  licit") && (opNa
a510: 6d 65 20 21 3d 20 22 6f 70 5f 45 78 70 6c 69 63  me != "op_Explic
a520: 69 74 22 29 29 20 7b 0d 0a 09 09 09 09 09 69 66  it")) {.......if
a530: 20 28 49 73 4d 65 74 68 6f 64 46 69 72 73 74 4f   (IsMethodFirstO
a540: 76 65 72 6c 6f 61 64 28 6f 70 4e 6f 64 65 73 2c  verload(opNodes,
a550: 20 69 6e 64 65 78 65 73 2c 20 69 29 29 20 7b 0d   indexes, i)) {.
a560: 0a 09 09 09 09 09 09 62 4f 76 65 72 6c 6f 61 64  .......bOverload
a570: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 09 09  ed = true;......
a580: 09 09 09 09 66 69 6c 65 4e 61 6d 65 20 3d 20 63  ....fileName = c
a590: 74 78 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72  tx._nameResolver
a5a0: 2e 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 4f  .GetFilenameForO
a5b0: 70 65 72 61 74 6f 72 4f 76 65 72 6c 6f 61 64 73  peratorOverloads
a5c0: 28 63 74 78 2e 43 75 72 72 65 6e 74 41 73 73 65  (ctx.CurrentAsse
a5d0: 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70 65 49 44  mblyName, typeID
a5e0: 2c 20 6f 70 4e 61 6d 65 29 3b 0d 0a 09 09 09 09  , opName);......
a5f0: 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 41  ..ctx.htmlHelp.A
a600: 64 64 46 69 6c 65 54 6f 43 6f 6e 74 65 6e 74 73  ddFileToContents
a610: 28 47 65 74 4f 70 65 72 61 74 6f 72 44 69 73 70  (GetOperatorDisp
a620: 6c 61 79 4e 61 6d 65 28 63 74 78 2c 20 6f 70 65  layName(ctx, ope
a630: 72 61 74 6f 72 4e 6f 64 65 29 2c 20 66 69 6c 65  ratorNode), file
a640: 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09 09 09  Name);..........
a650: 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e 65 77 20  arguments = new 
a660: 58 73 6c 74 41 72 67 75 6d 65 6e 74 4c 69 73 74  XsltArgumentList
a670: 28 29 3b 0d 0a 09 09 09 09 09 09 61 72 67 75 6d  ();........argum
a680: 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 6d  ents.AddParam("m
a690: 65 6d 62 65 72 2d 69 64 22 2c 20 53 74 72 69 6e  ember-id", Strin
a6a0: 67 2e 45 6d 70 74 79 2c 20 6f 70 65 72 61 74 6f  g.Empty, operato
a6b0: 72 49 44 29 3b 0d 0a 09 09 09 09 09 09 54 72 61  rID);........Tra
a6c0: 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74 65 52 65  nsformAndWriteRe
a6d0: 73 75 6c 74 28 63 74 78 2c 20 22 6d 65 6d 62 65  sult(ctx, "membe
a6e0: 72 6f 76 65 72 6c 6f 61 64 22 2c 20 61 72 67 75  roverload", argu
a6f0: 6d 65 6e 74 73 2c 20 66 69 6c 65 4e 61 6d 65 29  ments, fileName)
a700: 3b 0d 0a 0d 0a 09 09 09 09 09 09 63 74 78 2e 68  ;..........ctx.h
a710: 74 6d 6c 48 65 6c 70 2e 4f 70 65 6e 42 6f 6f 6b  tmlHelp.OpenBook
a720: 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a 09  InContents();...
a730: 09 09 09 09 7d 0d 0a 0d 0a 0d 0a 09 09 09 09 09  ....}...........
a740: 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78 2e 5f  fileName = ctx._
a750: 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47 65 74  nameResolver.Get
a760: 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 63 74  FilenameForId(ct
a770: 78 2e 43 75 72 72 65 6e 74 41 73 73 65 6d 62 6c  x.CurrentAssembl
a780: 79 4e 61 6d 65 2c 20 6f 70 65 72 61 74 6f 72 49  yName, operatorI
a790: 44 29 3b 0d 0a 09 09 09 09 09 73 74 72 69 6e 67  D);.......string
a7a0: 20 6f 70 50 61 67 65 54 69 74 6c 65 3b 0d 0a 09   opPageTitle;...
a7b0: 09 09 09 09 69 66 20 28 62 4f 76 65 72 6c 6f 61  ....if (bOverloa
a7c0: 64 65 64 29 20 7b 0d 0a 09 09 09 09 09 09 58 6d  ded) {........Xm
a7d0: 6c 4e 6f 64 65 4c 69 73 74 20 70 61 72 61 6d 65  lNodeList parame
a7e0: 74 65 72 4e 6f 64 65 73 20 3d 20 63 74 78 2e 53  terNodes = ctx.S
a7f0: 65 6c 65 63 74 4e 6f 64 65 73 28 6f 70 65 72 61  electNodes(opera
a800: 74 6f 72 4e 6f 64 65 2c 20 22 6e 73 3a 70 61 72  torNode, "ns:par
a810: 61 6d 65 74 65 72 22 29 3b 0d 0a 09 09 09 09 09  ameter");.......
a820: 09 6f 70 50 61 67 65 54 69 74 6c 65 20 3d 20 47  .opPageTitle = G
a830: 65 74 4f 70 65 72 61 74 6f 72 44 69 73 70 6c 61  etOperatorDispla
a840: 79 4e 61 6d 65 28 63 74 78 2c 20 6f 70 65 72 61  yName(ctx, opera
a850: 74 6f 72 4e 6f 64 65 29 20 2b 20 47 65 74 50 61  torNode) + GetPa
a860: 72 61 6d 4c 69 73 74 28 70 61 72 61 6d 65 74 65  ramList(paramete
a870: 72 4e 6f 64 65 73 29 3b 0d 0a 09 09 09 09 09 7d  rNodes);.......}
a880: 20 65 6c 73 65 20 7b 0d 0a 09 09 09 09 09 09 6f   else {........o
a890: 70 50 61 67 65 54 69 74 6c 65 20 3d 20 47 65 74  pPageTitle = Get
a8a0: 4f 70 65 72 61 74 6f 72 44 69 73 70 6c 61 79 4e  OperatorDisplayN
a8b0: 61 6d 65 28 63 74 78 2c 20 6f 70 65 72 61 74 6f  ame(ctx, operato
a8c0: 72 4e 6f 64 65 29 3b 0d 0a 09 09 09 09 09 7d 0d  rNode);.......}.
a8d0: 0a 09 09 09 09 09 63 74 78 2e 68 74 6d 6c 48 65  ......ctx.htmlHe
a8e0: 6c 70 2e 41 64 64 46 69 6c 65 54 6f 43 6f 6e 74  lp.AddFileToCont
a8f0: 65 6e 74 73 28 6f 70 50 61 67 65 54 69 74 6c 65  ents(opPageTitle
a900: 2c 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 09 09 09  , fileName,.....
a910: 09 09 09 09 09 09 09 09 09 20 20 20 48 74 6d 6c  .........   Html
a920: 48 65 6c 70 49 63 6f 6e 2e 50 61 67 65 29 3b 0d  HelpIcon.Page);.
a930: 0a 0d 0a 09 09 09 09 09 61 72 67 75 6d 65 6e 74  ........argument
a940: 73 20 3d 20 6e 65 77 20 58 73 6c 74 41 72 67 75  s = new XsltArgu
a950: 6d 65 6e 74 4c 69 73 74 28 29 3b 0d 0a 09 09 09  mentList();.....
a960: 09 09 61 72 67 75 6d 65 6e 74 73 2e 41 64 64 50  ..arguments.AddP
a970: 61 72 61 6d 28 22 6d 65 6d 62 65 72 2d 69 64 22  aram("member-id"
a980: 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20  , String.Empty, 
a990: 6f 70 65 72 61 74 6f 72 49 44 29 3b 0d 0a 09 09  operatorID);....
a9a0: 09 09 09 54 72 61 6e 73 66 6f 72 6d 41 6e 64 57  ...TransformAndW
a9b0: 72 69 74 65 52 65 73 75 6c 74 28 63 74 78 2c 20  riteResult(ctx, 
a9c0: 22 6d 65 6d 62 65 72 22 2c 20 61 72 67 75 6d 65  "member", argume
a9d0: 6e 74 73 2c 20 66 69 6c 65 4e 61 6d 65 29 3b 0d  nts, fileName);.
a9e0: 0a 0d 0a 09 09 09 09 09 69 66 20 28 62 4f 76 65  ........if (bOve
a9f0: 72 6c 6f 61 64 65 64 20 26 26 20 49 73 4d 65 74  rloaded && IsMet
aa00: 68 6f 64 4c 61 73 74 4f 76 65 72 6c 6f 61 64 28  hodLastOverload(
aa10: 6f 70 4e 6f 64 65 73 2c 20 69 6e 64 65 78 65 73  opNodes, indexes
aa20: 2c 20 69 29 29 20 7b 0d 0a 09 09 09 09 09 09 62  , i)) {........b
aa30: 4f 76 65 72 6c 6f 61 64 65 64 20 3d 20 66 61 6c  Overloaded = fal
aa40: 73 65 3b 0d 0a 09 09 09 09 09 09 63 74 78 2e 68  se;........ctx.h
aa50: 74 6d 6c 48 65 6c 70 2e 43 6c 6f 73 65 42 6f 6f  tmlHelp.CloseBoo
aa60: 6b 49 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a  kInContents();..
aa70: 09 09 09 09 09 7d 0d 0a 09 09 09 09 7d 0d 0a 09  .....}......}...
aa80: 09 09 7d 0d 0a 0d 0a 09 09 09 2f 2f 74 79 70 65  ..}.......//type
aa90: 20 63 6f 6e 76 65 72 74 65 72 73 0d 0a 09 09 09   converters.....
aaa0: 66 6f 72 20 28 69 6e 74 20 69 20 3d 20 30 3b 20  for (int i = 0; 
aab0: 69 20 3c 20 6e 4e 6f 64 65 73 3b 20 69 2b 2b 29  i < nNodes; i++)
aac0: 20 7b 0d 0a 09 09 09 09 58 6d 6c 4e 6f 64 65 20   {......XmlNode 
aad0: 6f 70 65 72 61 74 6f 72 4e 6f 64 65 20 3d 20 6f  operatorNode = o
aae0: 70 4e 6f 64 65 73 5b 69 6e 64 65 78 65 73 5b 69  pNodes[indexes[i
aaf0: 5d 5d 3b 0d 0a 09 09 09 09 73 74 72 69 6e 67 20  ]];......string 
ab00: 6f 70 65 72 61 74 6f 72 49 44 20 3d 20 47 65 74  operatorID = Get
ab10: 4e 6f 64 65 49 64 28 6f 70 65 72 61 74 6f 72 4e  NodeId(operatorN
ab20: 6f 64 65 29 3b 0d 0a 09 09 09 09 73 74 72 69 6e  ode);......strin
ab30: 67 20 6f 70 4e 61 6d 65 20 3d 20 47 65 74 4e 6f  g opName = GetNo
ab40: 64 65 4e 61 6d 65 28 6f 70 65 72 61 74 6f 72 4e  deName(operatorN
ab50: 6f 64 65 29 3b 0d 0a 0d 0a 09 09 09 09 69 66 20  ode);........if 
ab60: 28 28 6f 70 4e 61 6d 65 20 3d 3d 20 22 6f 70 5f  ((opName == "op_
ab70: 49 6d 70 6c 69 63 69 74 22 29 20 7c 7c 20 28 6f  Implicit") || (o
ab80: 70 4e 61 6d 65 20 3d 3d 20 22 6f 70 5f 45 78 70  pName == "op_Exp
ab90: 6c 69 63 69 74 22 29 29 20 7b 0d 0a 09 09 09 09  licit")) {......
aba0: 09 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78 2e  .fileName = ctx.
abb0: 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47 65  _nameResolver.Ge
abc0: 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 63  tFilenameForId(c
abd0: 74 78 2e 43 75 72 72 65 6e 74 41 73 73 65 6d 62  tx.CurrentAssemb
abe0: 6c 79 4e 61 6d 65 2c 20 6f 70 65 72 61 74 6f 72  lyName, operator
abf0: 49 44 29 3b 0d 0a 09 09 09 09 09 63 74 78 2e 68  ID);.......ctx.h
ac00: 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65 54  tmlHelp.AddFileT
ac10: 6f 43 6f 6e 74 65 6e 74 73 28 47 65 74 4f 70 65  oContents(GetOpe
ac20: 72 61 74 6f 72 44 69 73 70 6c 61 79 4e 61 6d 65  ratorDisplayName
ac30: 28 63 74 78 2c 20 6f 70 65 72 61 74 6f 72 4e 6f  (ctx, operatorNo
ac40: 64 65 29 2c 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a  de), fileName,..
ac50: 09 09 09 09 09 09 09 09 09 09 09 09 20 20 20 48  ............   H
ac60: 74 6d 6c 48 65 6c 70 49 63 6f 6e 2e 50 61 67 65  tmlHelpIcon.Page
ac70: 29 3b 0d 0a 0d 0a 09 09 09 09 09 61 72 67 75 6d  );.........argum
ac80: 65 6e 74 73 20 3d 20 6e 65 77 20 58 73 6c 74 41  ents = new XsltA
ac90: 72 67 75 6d 65 6e 74 4c 69 73 74 28 29 3b 0d 0a  rgumentList();..
aca0: 09 09 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41  .....arguments.A
acb0: 64 64 50 61 72 61 6d 28 22 6d 65 6d 62 65 72 2d  ddParam("member-
acc0: 69 64 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74  id", String.Empt
acd0: 79 2c 20 6f 70 65 72 61 74 6f 72 49 44 29 3b 0d  y, operatorID);.
ace0: 0a 09 09 09 09 09 54 72 61 6e 73 66 6f 72 6d 41  ......TransformA
acf0: 6e 64 57 72 69 74 65 52 65 73 75 6c 74 28 63 74  ndWriteResult(ct
ad00: 78 2c 20 22 6d 65 6d 62 65 72 22 2c 20 61 72 67  x, "member", arg
ad10: 75 6d 65 6e 74 73 2c 20 66 69 6c 65 4e 61 6d 65  uments, fileName
ad20: 29 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 7d 0d  );......}.....}.
ad30: 0a 0d 0a 09 09 09 63 74 78 2e 68 74 6d 6c 48 65  ......ctx.htmlHe
ad40: 6c 70 2e 43 6c 6f 73 65 42 6f 6f 6b 49 6e 43 6f  lp.CloseBookInCo
ad50: 6e 74 65 6e 74 73 28 29 3b 0d 0a 09 09 7d 0d 0a  ntents();....}..
ad60: 0d 0a 09 09 70 72 69 76 61 74 65 20 73 74 61 74  ....private stat
ad70: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4f 70 65  ic string GetOpe
ad80: 72 61 74 6f 72 44 69 73 70 6c 61 79 4e 61 6d 65  ratorDisplayName
ad90: 28 42 75 69 6c 64 50 72 6f 6a 65 63 74 43 6f 6e  (BuildProjectCon
ada0: 74 65 78 74 20 63 74 78 2c 20 58 6d 6c 4e 6f 64  text ctx, XmlNod
adb0: 65 20 6f 70 65 72 61 74 6f 72 4e 6f 64 65 29 0d  e operatorNode).
adc0: 0a 09 09 7b 0d 0a 09 09 09 73 74 72 69 6e 67 20  ...{.....string 
add0: 6e 61 6d 65 20 3d 20 47 65 74 4e 6f 64 65 4e 61  name = GetNodeNa
ade0: 6d 65 28 6f 70 65 72 61 74 6f 72 4e 6f 64 65 29  me(operatorNode)
adf0: 3b 0d 0a 0d 0a 09 09 09 73 77 69 74 63 68 20 28  ;.......switch (
ae00: 6e 61 6d 65 29 20 7b 0d 0a 09 09 09 09 63 61 73  name) {......cas
ae10: 65 20 22 6f 70 5f 44 65 63 72 65 6d 65 6e 74 22  e "op_Decrement"
ae20: 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22  :.......return "
ae30: 44 65 63 72 65 6d 65 6e 74 20 4f 70 65 72 61 74  Decrement Operat
ae40: 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22  or";......case "
ae50: 6f 70 5f 49 6e 63 72 65 6d 65 6e 74 22 3a 0d 0a  op_Increment":..
ae60: 09 09 09 09 09 72 65 74 75 72 6e 20 22 49 6e 63  .....return "Inc
ae70: 72 65 6d 65 6e 74 20 4f 70 65 72 61 74 6f 72 22  rement Operator"
ae80: 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f  ;......case "op_
ae90: 55 6e 61 72 79 4e 65 67 61 74 69 6f 6e 22 3a 0d  UnaryNegation":.
aea0: 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 55 6e  ......return "Un
aeb0: 61 72 79 20 4e 65 67 61 74 69 6f 6e 20 4f 70 65  ary Negation Ope
aec0: 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73  rator";......cas
aed0: 65 20 22 6f 70 5f 55 6e 61 72 79 50 6c 75 73 22  e "op_UnaryPlus"
aee0: 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22  :.......return "
aef0: 55 6e 61 72 79 20 50 6c 75 73 20 4f 70 65 72 61  Unary Plus Opera
af00: 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20  tor";......case 
af10: 22 6f 70 5f 4c 6f 67 69 63 61 6c 4e 6f 74 22 3a  "op_LogicalNot":
af20: 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 4c  .......return "L
af30: 6f 67 69 63 61 6c 20 4e 6f 74 20 4f 70 65 72 61  ogical Not Opera
af40: 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20  tor";......case 
af50: 22 6f 70 5f 54 72 75 65 22 3a 0d 0a 09 09 09 09  "op_True":......
af60: 09 72 65 74 75 72 6e 20 22 54 72 75 65 20 4f 70  .return "True Op
af70: 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61  erator";......ca
af80: 73 65 20 22 6f 70 5f 46 61 6c 73 65 22 3a 0d 0a  se "op_False":..
af90: 09 09 09 09 09 72 65 74 75 72 6e 20 22 46 61 6c  .....return "Fal
afa0: 73 65 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09  se Operator";...
afb0: 09 09 09 63 61 73 65 20 22 6f 70 5f 41 64 64 72  ...case "op_Addr
afc0: 65 73 73 4f 66 22 3a 0d 0a 09 09 09 09 09 72 65  essOf":.......re
afd0: 74 75 72 6e 20 22 41 64 64 72 65 73 73 20 4f 66  turn "Address Of
afe0: 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09   Operator";.....
aff0: 09 63 61 73 65 20 22 6f 70 5f 4f 6e 65 73 43 6f  .case "op_OnesCo
b000: 6d 70 6c 65 6d 65 6e 74 22 3a 0d 0a 09 09 09 09  mplement":......
b010: 09 72 65 74 75 72 6e 20 22 4f 6e 65 73 20 43 6f  .return "Ones Co
b020: 6d 70 6c 65 6d 65 6e 74 20 4f 70 65 72 61 74 6f  mplement Operato
b030: 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f  r";......case "o
b040: 70 5f 50 6f 69 6e 74 65 72 44 65 72 65 66 65 72  p_PointerDerefer
b050: 65 6e 63 65 22 3a 0d 0a 09 09 09 09 09 72 65 74  ence":.......ret
b060: 75 72 6e 20 22 50 6f 69 6e 74 65 72 20 44 65 72  urn "Pointer Der
b070: 65 66 65 72 65 6e 63 65 20 4f 70 65 72 61 74 6f  eference Operato
b080: 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f  r";......case "o
b090: 70 5f 41 64 64 69 74 69 6f 6e 22 3a 0d 0a 09 09  p_Addition":....
b0a0: 09 09 09 72 65 74 75 72 6e 20 22 41 64 64 69 74  ...return "Addit
b0b0: 69 6f 6e 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a  ion Operator";..
b0c0: 09 09 09 09 63 61 73 65 20 22 6f 70 5f 53 75 62  ....case "op_Sub
b0d0: 74 72 61 63 74 69 6f 6e 22 3a 0d 0a 09 09 09 09  traction":......
b0e0: 09 72 65 74 75 72 6e 20 22 53 75 62 74 72 61 63  .return "Subtrac
b0f0: 74 69 6f 6e 20 4f 70 65 72 61 74 6f 72 22 3b 0d  tion Operator";.
b100: 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f 4d 75  .....case "op_Mu
b110: 6c 74 69 70 6c 79 22 3a 0d 0a 09 09 09 09 09 72  ltiply":.......r
b120: 65 74 75 72 6e 20 22 4d 75 6c 74 69 70 6c 69 63  eturn "Multiplic
b130: 61 74 69 6f 6e 20 4f 70 65 72 61 74 6f 72 22 3b  ation Operator";
b140: 0d 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f 44  ......case "op_D
b150: 69 76 69 73 69 6f 6e 22 3a 0d 0a 09 09 09 09 09  ivision":.......
b160: 72 65 74 75 72 6e 20 22 44 69 76 69 73 69 6f 6e  return "Division
b170: 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09   Operator";.....
b180: 09 63 61 73 65 20 22 6f 70 5f 4d 6f 64 75 6c 75  .case "op_Modulu
b190: 73 22 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e  s":.......return
b1a0: 20 22 4d 6f 64 75 6c 75 73 20 4f 70 65 72 61 74   "Modulus Operat
b1b0: 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22  or";......case "
b1c0: 6f 70 5f 45 78 63 6c 75 73 69 76 65 4f 72 22 3a  op_ExclusiveOr":
b1d0: 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 45  .......return "E
b1e0: 78 63 6c 75 73 69 76 65 20 4f 72 20 4f 70 65 72  xclusive Or Oper
b1f0: 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65  ator";......case
b200: 20 22 6f 70 5f 42 69 74 77 69 73 65 41 6e 64 22   "op_BitwiseAnd"
b210: 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22  :.......return "
b220: 42 69 74 77 69 73 65 20 41 6e 64 20 4f 70 65 72  Bitwise And Oper
b230: 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65  ator";......case
b240: 20 22 6f 70 5f 42 69 74 77 69 73 65 4f 72 22 3a   "op_BitwiseOr":
b250: 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 42  .......return "B
b260: 69 74 77 69 73 65 20 4f 72 20 4f 70 65 72 61 74  itwise Or Operat
b270: 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22  or";......case "
b280: 6f 70 5f 4c 6f 67 69 63 61 6c 41 6e 64 22 3a 0d  op_LogicalAnd":.
b290: 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 4c 6f  ......return "Lo
b2a0: 67 69 63 61 6c 41 6e 64 20 4f 70 65 72 61 74 6f  gicalAnd Operato
b2b0: 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f  r";......case "o
b2c0: 70 5f 4c 6f 67 69 63 61 6c 4f 72 22 3a 0d 0a 09  p_LogicalOr":...
b2d0: 09 09 09 09 72 65 74 75 72 6e 20 22 4c 6f 67 69  ....return "Logi
b2e0: 63 61 6c 20 4f 72 20 4f 70 65 72 61 74 6f 72 22  cal Or Operator"
b2f0: 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f  ;......case "op_
b300: 41 73 73 69 67 6e 22 3a 0d 0a 09 09 09 09 09 72  Assign":.......r
b310: 65 74 75 72 6e 20 22 41 73 73 69 67 6e 6d 65 6e  eturn "Assignmen
b320: 74 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09  t Operator";....
b330: 09 09 63 61 73 65 20 22 6f 70 5f 4c 65 66 74 53  ..case "op_LeftS
b340: 68 69 66 74 22 3a 0d 0a 09 09 09 09 09 72 65 74  hift":.......ret
b350: 75 72 6e 20 22 4c 65 66 74 20 53 68 69 66 74 20  urn "Left Shift 
b360: 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09  Operator";......
b370: 63 61 73 65 20 22 6f 70 5f 52 69 67 68 74 53 68  case "op_RightSh
b380: 69 66 74 22 3a 0d 0a 09 09 09 09 09 72 65 74 75  ift":.......retu
b390: 72 6e 20 22 52 69 67 68 74 20 53 68 69 66 74 20  rn "Right Shift 
b3a0: 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09  Operator";......
b3b0: 63 61 73 65 20 22 6f 70 5f 53 69 67 6e 65 64 52  case "op_SignedR
b3c0: 69 67 68 74 53 68 69 66 74 22 3a 0d 0a 09 09 09  ightShift":.....
b3d0: 09 09 72 65 74 75 72 6e 20 22 53 69 67 6e 65 64  ..return "Signed
b3e0: 20 52 69 67 68 74 20 53 68 69 66 74 20 4f 70 65   Right Shift Ope
b3f0: 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73  rator";......cas
b400: 65 20 22 6f 70 5f 55 6e 73 69 67 6e 65 64 52 69  e "op_UnsignedRi
b410: 67 68 74 53 68 69 66 74 22 3a 0d 0a 09 09 09 09  ghtShift":......
b420: 09 72 65 74 75 72 6e 20 22 55 6e 73 69 67 6e 65  .return "Unsigne
b430: 64 20 52 69 67 68 74 20 53 68 69 66 74 20 4f 70  d Right Shift Op
b440: 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61  erator";......ca
b450: 73 65 20 22 6f 70 5f 45 71 75 61 6c 69 74 79 22  se "op_Equality"
b460: 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22  :.......return "
b470: 45 71 75 61 6c 69 74 79 20 4f 70 65 72 61 74 6f  Equality Operato
b480: 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f  r";......case "o
b490: 70 5f 47 72 65 61 74 65 72 54 68 61 6e 22 3a 0d  p_GreaterThan":.
b4a0: 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 47 72  ......return "Gr
b4b0: 65 61 74 65 72 20 54 68 61 6e 20 4f 70 65 72 61  eater Than Opera
b4c0: 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20  tor";......case 
b4d0: 22 6f 70 5f 4c 65 73 73 54 68 61 6e 22 3a 0d 0a  "op_LessThan":..
b4e0: 09 09 09 09 09 72 65 74 75 72 6e 20 22 4c 65 73  .....return "Les
b4f0: 73 20 54 68 61 6e 20 4f 70 65 72 61 74 6f 72 22  s Than Operator"
b500: 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f  ;......case "op_
b510: 49 6e 65 71 75 61 6c 69 74 79 22 3a 0d 0a 09 09  Inequality":....
b520: 09 09 09 72 65 74 75 72 6e 20 22 49 6e 65 71 75  ...return "Inequ
b530: 61 6c 69 74 79 20 4f 70 65 72 61 74 6f 72 22 3b  ality Operator";
b540: 0d 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f 47  ......case "op_G
b550: 72 65 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61  reaterThanOrEqua
b560: 6c 22 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e  l":.......return
b570: 20 22 47 72 65 61 74 65 72 20 54 68 61 6e 20 4f   "Greater Than O
b580: 72 20 45 71 75 61 6c 20 4f 70 65 72 61 74 6f 72  r Equal Operator
b590: 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f 70  ";......case "op
b5a0: 5f 4c 65 73 73 54 68 61 6e 4f 72 45 71 75 61 6c  _LessThanOrEqual
b5b0: 22 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20  ":.......return 
b5c0: 22 4c 65 73 73 20 54 68 61 6e 20 4f 72 20 45 71  "Less Than Or Eq
b5d0: 75 61 6c 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a  ual Operator";..
b5e0: 09 09 09 09 63 61 73 65 20 22 6f 70 5f 55 6e 73  ....case "op_Uns
b5f0: 69 67 6e 65 64 52 69 67 68 74 53 68 69 66 74 41  ignedRightShiftA
b600: 73 73 69 67 6e 6d 65 6e 74 22 3a 0d 0a 09 09 09  ssignment":.....
b610: 09 09 72 65 74 75 72 6e 20 22 55 6e 73 69 67 6e  ..return "Unsign
b620: 65 64 20 52 69 67 68 74 20 53 68 69 66 74 20 41  ed Right Shift A
b630: 73 73 69 67 6e 6d 65 6e 74 20 4f 70 65 72 61 74  ssignment Operat
b640: 6f 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22  or";......case "
b650: 6f 70 5f 4d 65 6d 62 65 72 53 65 6c 65 63 74 69  op_MemberSelecti
b660: 6f 6e 22 3a 0d 0a 09 09 09 09 09 72 65 74 75 72  on":.......retur
b670: 6e 20 22 4d 65 6d 62 65 72 20 53 65 6c 65 63 74  n "Member Select
b680: 69 6f 6e 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a  ion Operator";..
b690: 09 09 09 09 63 61 73 65 20 22 6f 70 5f 52 69 67  ....case "op_Rig
b6a0: 68 74 53 68 69 66 74 41 73 73 69 67 6e 6d 65 6e  htShiftAssignmen
b6b0: 74 22 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e  t":.......return
b6c0: 20 22 52 69 67 68 74 20 53 68 69 66 74 20 41 73   "Right Shift As
b6d0: 73 69 67 6e 6d 65 6e 74 20 4f 70 65 72 61 74 6f  signment Operato
b6e0: 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f  r";......case "o
b6f0: 70 5f 4d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e  p_Multiplication
b700: 41 73 73 69 67 6e 6d 65 6e 74 22 3a 0d 0a 09 09  Assignment":....
b710: 09 09 09 72 65 74 75 72 6e 20 22 4d 75 6c 74 69  ...return "Multi
b720: 70 6c 69 63 61 74 69 6f 6e 20 41 73 73 69 67 6e  plication Assign
b730: 6d 65 6e 74 20 4f 70 65 72 61 74 6f 72 22 3b 0d  ment Operator";.
b740: 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f 50 6f  .....case "op_Po
b750: 69 6e 74 65 72 54 6f 4d 65 6d 62 65 72 53 65 6c  interToMemberSel
b760: 65 63 74 69 6f 6e 22 3a 0d 0a 09 09 09 09 09 72  ection":.......r
b770: 65 74 75 72 6e 20 22 50 6f 69 6e 74 65 72 20 54  eturn "Pointer T
b780: 6f 20 4d 65 6d 62 65 72 20 53 65 6c 65 63 74 69  o Member Selecti
b790: 6f 6e 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09  on Operator";...
b7a0: 09 09 09 63 61 73 65 20 22 6f 70 5f 53 75 62 74  ...case "op_Subt
b7b0: 72 61 63 74 69 6f 6e 41 73 73 69 67 6e 6d 65 6e  ractionAssignmen
b7c0: 74 22 3a 0d 0a 09 09 09 09 09 72 65 74 75 72 6e  t":.......return
b7d0: 20 22 53 75 62 74 72 61 63 74 69 6f 6e 20 41 73   "Subtraction As
b7e0: 73 69 67 6e 6d 65 6e 74 20 4f 70 65 72 61 74 6f  signment Operato
b7f0: 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f  r";......case "o
b800: 70 5f 45 78 63 6c 75 73 69 76 65 4f 72 41 73 73  p_ExclusiveOrAss
b810: 69 67 6e 6d 65 6e 74 22 3a 0d 0a 09 09 09 09 09  ignment":.......
b820: 72 65 74 75 72 6e 20 22 45 78 63 6c 75 73 69 76  return "Exclusiv
b830: 65 20 4f 72 20 41 73 73 69 67 6e 6d 65 6e 74 20  e Or Assignment 
b840: 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09  Operator";......
b850: 63 61 73 65 20 22 6f 70 5f 4c 65 66 74 53 68 69  case "op_LeftShi
b860: 66 74 41 73 73 69 67 6e 6d 65 6e 74 22 3a 0d 0a  ftAssignment":..
b870: 09 09 09 09 09 72 65 74 75 72 6e 20 22 4c 65 66  .....return "Lef
b880: 74 20 53 68 69 66 74 20 41 73 73 69 67 6e 6d 65  t Shift Assignme
b890: 6e 74 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09  nt Operator";...
b8a0: 09 09 09 63 61 73 65 20 22 6f 70 5f 4d 6f 64 75  ...case "op_Modu
b8b0: 6c 75 73 41 73 73 69 67 6e 6d 65 6e 74 22 3a 0d  lusAssignment":.
b8c0: 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 4d 6f  ......return "Mo
b8d0: 64 75 6c 75 73 20 41 73 73 69 67 6e 6d 65 6e 74  dulus Assignment
b8e0: 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09   Operator";.....
b8f0: 09 63 61 73 65 20 22 6f 70 5f 41 64 64 69 74 69  .case "op_Additi
b900: 6f 6e 41 73 73 69 67 6e 6d 65 6e 74 22 3a 0d 0a  onAssignment":..
b910: 09 09 09 09 09 72 65 74 75 72 6e 20 22 41 64 64  .....return "Add
b920: 69 74 69 6f 6e 20 41 73 73 69 67 6e 6d 65 6e 74  ition Assignment
b930: 20 4f 70 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09   Operator";.....
b940: 09 63 61 73 65 20 22 6f 70 5f 42 69 74 77 69 73  .case "op_Bitwis
b950: 65 41 6e 64 41 73 73 69 67 6e 6d 65 6e 74 22 3a  eAndAssignment":
b960: 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 22 42  .......return "B
b970: 69 74 77 69 73 65 20 41 6e 64 20 41 73 73 69 67  itwise And Assig
b980: 6e 6d 65 6e 74 20 4f 70 65 72 61 74 6f 72 22 3b  nment Operator";
b990: 0d 0a 09 09 09 09 63 61 73 65 20 22 6f 70 5f 42  ......case "op_B
b9a0: 69 74 77 69 73 65 4f 72 41 73 73 69 67 6e 6d 65  itwiseOrAssignme
b9b0: 6e 74 22 3a 0d 0a 09 09 09 09 09 72 65 74 75 72  nt":.......retur
b9c0: 6e 20 22 42 69 74 77 69 73 65 20 4f 72 20 41 73  n "Bitwise Or As
b9d0: 73 69 67 6e 6d 65 6e 74 20 4f 70 65 72 61 74 6f  signment Operato
b9e0: 72 22 3b 0d 0a 09 09 09 09 63 61 73 65 20 22 6f  r";......case "o
b9f0: 70 5f 43 6f 6d 6d 61 22 3a 0d 0a 09 09 09 09 09  p_Comma":.......
ba00: 72 65 74 75 72 6e 20 22 43 6f 6d 6d 61 20 4f 70  return "Comma Op
ba10: 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61  erator";......ca
ba20: 73 65 20 22 6f 70 5f 44 69 76 69 73 69 6f 6e 41  se "op_DivisionA
ba30: 73 73 69 67 6e 6d 65 6e 74 22 3a 0d 0a 09 09 09  ssignment":.....
ba40: 09 09 72 65 74 75 72 6e 20 22 44 69 76 69 73 69  ..return "Divisi
ba50: 6f 6e 20 41 73 73 69 67 6e 6d 65 6e 74 20 4f 70  on Assignment Op
ba60: 65 72 61 74 6f 72 22 3b 0d 0a 09 09 09 09 63 61  erator";......ca
ba70: 73 65 20 22 6f 70 5f 45 78 70 6c 69 63 69 74 22  se "op_Explicit"
ba80: 3a 20 7b 0d 0a 09 09 09 09 09 09 58 6d 6c 4e 6f  : {........XmlNo
ba90: 64 65 20 70 61 72 61 6d 65 74 65 72 4e 6f 64 65  de parameterNode
baa0: 20 3d 20 63 74 78 2e 53 65 6c 65 63 74 53 69 6e   = ctx.SelectSin
bab0: 67 6c 65 4e 6f 64 65 28 6f 70 65 72 61 74 6f 72  gleNode(operator
bac0: 4e 6f 64 65 2c 20 22 6e 64 6f 63 3a 70 61 72 61  Node, "ndoc:para
bad0: 6d 65 74 65 72 22 29 3b 0d 0a 09 09 09 09 09 09  meter");........
bae0: 73 74 72 69 6e 67 20 66 72 6f 6d 20 3d 20 47 65  string from = Ge
baf0: 74 4e 6f 64 65 54 79 70 65 49 64 28 70 61 72 61  tNodeTypeId(para
bb00: 6d 65 74 65 72 4e 6f 64 65 29 3b 0d 0a 09 09 09  meterNode);.....
bb10: 09 09 09 73 74 72 69 6e 67 20 74 6f 20 3d 20 47  ...string to = G
bb20: 65 74 4e 6f 64 65 54 79 70 65 49 64 28 63 74 78  etNodeTypeId(ctx
bb30: 2e 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64  .SelectSingleNod
bb40: 65 28 6f 70 65 72 61 74 6f 72 4e 6f 64 65 2c 20  e(operatorNode, 
bb50: 22 6e 64 6f 63 3a 72 65 74 75 72 6e 54 79 70 65  "ndoc:returnType
bb60: 22 29 29 3b 0d 0a 09 09 09 09 09 09 72 65 74 75  "));........retu
bb70: 72 6e 20 22 45 78 70 6c 69 63 69 74 20 22 20 2b  rn "Explicit " +
bb80: 20 53 74 72 69 70 4e 61 6d 65 73 70 61 63 65 28   StripNamespace(
bb90: 66 72 6f 6d 29 20 2b 20 22 20 74 6f 20 22 20 2b  from) + " to " +
bba0: 20 53 74 72 69 70 4e 61 6d 65 73 70 61 63 65 28   StripNamespace(
bbb0: 74 6f 29 20 2b 20 22 20 43 6f 6e 76 65 72 73 69  to) + " Conversi
bbc0: 6f 6e 22 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09  on";.......}....
bbd0: 09 09 63 61 73 65 20 22 6f 70 5f 49 6d 70 6c 69  ..case "op_Impli
bbe0: 63 69 74 22 3a 20 7b 0d 0a 09 09 09 09 09 09 58  cit": {........X
bbf0: 6d 6c 4e 6f 64 65 20 70 61 72 61 6d 65 74 65 72  mlNode parameter
bc00: 4e 6f 64 65 20 3d 20 63 74 78 2e 53 65 6c 65 63  Node = ctx.Selec
bc10: 74 53 69 6e 67 6c 65 4e 6f 64 65 28 6f 70 65 72  tSingleNode(oper
bc20: 61 74 6f 72 4e 6f 64 65 2c 20 22 6e 64 6f 63 3a  atorNode, "ndoc:
bc30: 70 61 72 61 6d 65 74 65 72 22 29 3b 0d 0a 09 09  parameter");....
bc40: 09 09 09 09 73 74 72 69 6e 67 20 66 72 6f 6d 20  ....string from 
bc50: 3d 20 47 65 74 4e 6f 64 65 54 79 70 65 49 64 28  = GetNodeTypeId(
bc60: 70 61 72 61 6d 65 74 65 72 4e 6f 64 65 29 3b 0d  parameterNode);.
bc70: 0a 09 09 09 09 09 09 73 74 72 69 6e 67 20 74 6f  .......string to
bc80: 20 3d 20 47 65 74 4e 6f 64 65 54 79 70 65 49 64   = GetNodeTypeId
bc90: 28 63 74 78 2e 53 65 6c 65 63 74 53 69 6e 67 6c  (ctx.SelectSingl
bca0: 65 4e 6f 64 65 28 6f 70 65 72 61 74 6f 72 4e 6f  eNode(operatorNo
bcb0: 64 65 2c 20 22 6e 64 6f 63 3a 72 65 74 75 72 6e  de, "ndoc:return
bcc0: 54 79 70 65 22 29 29 3b 0d 0a 09 09 09 09 09 09  Type"));........
bcd0: 72 65 74 75 72 6e 20 22 49 6d 70 6c 69 63 69 74  return "Implicit
bce0: 20 22 20 2b 20 53 74 72 69 70 4e 61 6d 65 73 70   " + StripNamesp
bcf0: 61 63 65 28 66 72 6f 6d 29 20 2b 20 22 20 74 6f  ace(from) + " to
bd00: 20 22 20 2b 20 53 74 72 69 70 4e 61 6d 65 73 70   " + StripNamesp
bd10: 61 63 65 28 74 6f 29 20 2b 20 22 20 43 6f 6e 76  ace(to) + " Conv
bd20: 65 72 73 69 6f 6e 22 3b 0d 0a 09 09 09 09 09 7d  ersion";.......}
bd30: 0d 0a 09 09 09 09 64 65 66 61 75 6c 74 3a 0d 0a  ......default:..
bd40: 09 09 09 09 09 72 65 74 75 72 6e 20 22 45 52 52  .....return "ERR
bd50: 4f 52 22 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d  OR";.....}....}.
bd60: 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 76 6f 69  .....private voi
bd70: 64 20 4d 61 6b 65 48 74 6d 6c 46 6f 72 45 76 65  d MakeHtmlForEve
bd80: 6e 74 73 28 42 75 69 6c 64 41 73 73 65 6d 62 6c  nts(BuildAssembl
bd90: 79 43 6f 6e 74 65 78 74 20 63 74 78 2c 20 58 6d  yContext ctx, Xm
bda0: 6c 4e 6f 64 65 20 74 79 70 65 4e 6f 64 65 29 0d  lNode typeNode).
bdb0: 0a 09 09 7b 0d 0a 09 09 09 58 6d 6c 4e 6f 64 65  ...{.....XmlNode
bdc0: 4c 69 73 74 20 64 65 63 6c 61 72 65 64 45 76 65  List declaredEve
bdd0: 6e 74 4e 6f 64 65 73 20 3d 20 63 74 78 2e 53 65  ntNodes = ctx.Se
bde0: 6c 65 63 74 4e 6f 64 65 73 28 74 79 70 65 4e 6f  lectNodes(typeNo
bdf0: 64 65 2c 20 22 6e 64 6f 63 3a 65 76 65 6e 74 5b  de, "ndoc:event[
be00: 6e 6f 74 28 40 64 65 63 6c 61 72 69 6e 67 54 79  not(@declaringTy
be10: 70 65 29 5d 22 29 3b 0d 0a 0d 0a 09 09 09 69 66  pe)]");.......if
be20: 20 28 64 65 63 6c 61 72 65 64 45 76 65 6e 74 4e   (declaredEventN
be30: 6f 64 65 73 2e 43 6f 75 6e 74 20 3e 20 30 29 20  odes.Count > 0) 
be40: 7b 0d 0a 09 09 09 09 58 6d 6c 4e 6f 64 65 4c 69  {......XmlNodeLi
be50: 73 74 20 65 76 65 6e 74 73 20 3d 20 63 74 78 2e  st events = ctx.
be60: 53 65 6c 65 63 74 4e 6f 64 65 73 28 74 79 70 65  SelectNodes(type
be70: 4e 6f 64 65 2c 20 22 6e 73 3a 65 76 65 6e 74 22  Node, "ns:event"
be80: 29 3b 0d 0a 0d 0a 09 09 09 09 69 66 20 28 65 76  );........if (ev
be90: 65 6e 74 73 2e 43 6f 75 6e 74 20 3e 20 30 29 20  ents.Count > 0) 
bea0: 7b 0d 0a 09 09 09 09 09 2f 2f 73 74 72 69 6e 67  {.......//string
beb0: 20 74 79 70 65 4e 61 6d 65 20 3d 20 28 73 74 72   typeName = (str
bec0: 69 6e 67 29 74 79 70 65 4e 6f 64 65 2e 41 74 74  ing)typeNode.Att
bed0: 72 69 62 75 74 65 73 5b 22 6e 61 6d 65 22 5d 2e  ributes["name"].
bee0: 56 61 6c 75 65 3b 0d 0a 09 09 09 09 09 73 74 72  Value;.......str
bef0: 69 6e 67 20 74 79 70 65 49 44 20 3d 20 47 65 74  ing typeID = Get
bf00: 4e 6f 64 65 49 64 28 74 79 70 65 4e 6f 64 65 29  NodeId(typeNode)
bf10: 3b 0d 0a 09 09 09 09 09 73 74 72 69 6e 67 20 66  ;.......string f
bf20: 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78 2e 5f 6e  ileName = ctx._n
bf30: 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47 65 74 46  ameResolver.GetF
bf40: 69 6c 65 6e 61 6d 65 46 6f 72 45 76 65 6e 74 4c  ilenameForEventL
bf50: 69 73 74 28 63 74 78 2e 43 75 72 72 65 6e 74 41  ist(ctx.CurrentA
bf60: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70  ssemblyName, typ
bf70: 65 49 44 29 3b 0d 0a 0d 0a 09 09 09 09 09 63 74  eID);.........ct
bf80: 78 2e 68 74 6d 6c 48 65 6c 70 2e 41 64 64 46 69  x.htmlHelp.AddFi
bf90: 6c 65 54 6f 43 6f 6e 74 65 6e 74 73 28 22 45 76  leToContents("Ev
bfa0: 65 6e 74 73 22 2c 20 66 69 6c 65 4e 61 6d 65 29  ents", fileName)
bfb0: 3b 0d 0a 0d 0a 09 09 09 09 09 58 73 6c 74 41 72  ;.........XsltAr
bfc0: 67 75 6d 65 6e 74 4c 69 73 74 20 61 72 67 75 6d  gumentList argum
bfd0: 65 6e 74 73 20 3d 20 6e 65 77 20 58 73 6c 74 41  ents = new XsltA
bfe0: 72 67 75 6d 65 6e 74 4c 69 73 74 28 29 3b 0d 0a  rgumentList();..
bff0: 09 09 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41  .....arguments.A
c000: 64 64 50 61 72 61 6d 28 22 74 79 70 65 2d 69 64  ddParam("type-id
c010: 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c  ", String.Empty,
c020: 20 74 79 70 65 49 44 29 3b 0d 0a 09 09 09 09 09   typeID);.......
c030: 61 72 67 75 6d 65 6e 74 73 2e 41 64 64 50 61 72  arguments.AddPar
c040: 61 6d 28 22 6d 65 6d 62 65 72 2d 74 79 70 65 22  am("member-type"
c050: 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20  , String.Empty, 
c060: 22 65 76 65 6e 74 22 29 3b 0d 0a 09 09 09 09 09  "event");.......
c070: 54 72 61 6e 73 66 6f 72 6d 41 6e 64 57 72 69 74  TransformAndWrit
c080: 65 52 65 73 75 6c 74 28 63 74 78 2c 20 22 69 6e  eResult(ctx, "in
c090: 64 69 76 69 64 75 61 6c 6d 65 6d 62 65 72 73 22  dividualmembers"
c0a0: 2c 20 61 72 67 75 6d 65 6e 74 73 2c 20 66 69 6c  , arguments, fil
c0b0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09 09  eName);.........
c0c0: 63 74 78 2e 68 74 6d 6c 48 65 6c 70 2e 4f 70 65  ctx.htmlHelp.Ope
c0d0: 6e 42 6f 6f 6b 49 6e 43 6f 6e 74 65 6e 74 73 28  nBookInContents(
c0e0: 29 3b 0d 0a 0d 0a 09 09 09 09 09 69 6e 74 5b 5d  );.........int[]
c0f0: 20 69 6e 64 65 78 65 73 20 3d 20 53 6f 72 74 4e   indexes = SortN
c100: 6f 64 65 73 42 79 41 74 74 72 69 62 75 74 65 28  odesByAttribute(
c110: 65 76 65 6e 74 73 2c 20 22 69 64 22 29 3b 0d 0a  events, "id");..
c120: 0d 0a 09 09 09 09 09 66 6f 72 65 61 63 68 20 28  .......foreach (
c130: 69 6e 74 20 69 6e 64 65 78 20 69 6e 20 69 6e 64  int index in ind
c140: 65 78 65 73 29 20 7b 0d 0a 09 09 09 09 09 09 58  exes) {........X
c150: 6d 6c 4e 6f 64 65 20 65 76 65 6e 74 45 6c 65 6d  mlNode eventElem
c160: 65 6e 74 20 3d 20 65 76 65 6e 74 73 5b 69 6e 64  ent = events[ind
c170: 65 78 5d 3b 0d 0a 0d 0a 09 09 09 09 09 09 69 66  ex];..........if
c180: 20 28 58 6d 6c 55 74 69 6c 73 2e 47 65 74 41 74   (XmlUtils.GetAt
c190: 74 72 69 62 75 74 65 53 74 72 69 6e 67 28 65 76  tributeString(ev
c1a0: 65 6e 74 45 6c 65 6d 65 6e 74 2c 20 22 64 65 63  entElement, "dec
c1b0: 6c 61 72 69 6e 67 54 79 70 65 22 2c 20 66 61 6c  laringType", fal
c1c0: 73 65 29 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0d 0a  se) == null) {..
c1d0: 09 09 09 09 09 09 09 73 74 72 69 6e 67 20 65 76  .......string ev
c1e0: 65 6e 74 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64  entName = GetNod
c1f0: 65 4e 61 6d 65 28 65 76 65 6e 74 45 6c 65 6d 65  eName(eventEleme
c200: 6e 74 29 3b 0d 0a 09 09 09 09 09 09 09 73 74 72  nt);.........str
c210: 69 6e 67 20 65 76 65 6e 74 49 44 20 3d 20 47 65  ing eventID = Ge
c220: 74 4e 6f 64 65 49 64 28 65 76 65 6e 74 45 6c 65  tNodeId(eventEle
c230: 6d 65 6e 74 29 3b 0d 0a 0d 0a 09 09 09 09 09 09  ment);..........
c240: 09 66 69 6c 65 4e 61 6d 65 20 3d 20 63 74 78 2e  .fileName = ctx.
c250: 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72 2e 47 65  _nameResolver.Ge
c260: 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 63  tFilenameForId(c
c270: 74 78 2e 43 75 72 72 65 6e 74 41 73 73 65 6d 62  tx.CurrentAssemb
c280: 6c 79 4e 61 6d 65 2c 20 65 76 65 6e 74 49 44 29  lyName, eventID)
c290: 3b 0d 0a 09 09 09 09 09 09 09 63 74 78 2e 68 74  ;.........ctx.ht
c2a0: 6d 6c 48 65 6c 70 2e 41 64 64 46 69 6c 65 54 6f  mlHelp.AddFileTo
c2b0: 43 6f 6e 74 65 6e 74 73 28 65 76 65 6e 74 4e 61  Contents(eventNa
c2c0: 6d 65 20 2b 20 22 20 45 76 65 6e 74 22 2c 0d 0a  me + " Event",..
c2d0: 09 09 09 09 09 09 09 09 66 69 6c 65 4e 61 6d 65  ........fileName
c2e0: 2c 0d 0a 09 09 09 09 09 09 09 09 48 74 6d 6c 48  ,..........HtmlH
c2f0: 65 6c 70 49 63 6f 6e 2e 50 61 67 65 29 3b 0d 0a  elpIcon.Page);..
c300: 0d 0a 09 09 09 09 09 09 09 61 72 67 75 6d 65 6e  .........argumen
c310: 74 73 20 3d 20 6e 65 77 20 58 73 6c 74 41 72 67  ts = new XsltArg
c320: 75 6d 65 6e 74 4c 69 73 74 28 29 3b 0d 0a 09 09  umentList();....
c330: 09 09 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41  .....arguments.A
c340: 64 64 50 61 72 61 6d 28 22 65 76 65 6e 74 2d 69  ddParam("event-i
c350: 64 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  d", String.Empty
c360: 2c 20 65 76 65 6e 74 49 44 29 3b 0d 0a 09 09 09  , eventID);.....
c370: 09 09 09 09 54 72 61 6e 73 66 6f 72 6d 41 6e 64  ....TransformAnd
c380: 57 72 69 74 65 52 65 73 75 6c 74 28 63 74 78 2c  WriteResult(ctx,
c390: 20 22 65 76 65 6e 74 22 2c 20 61 72 67 75 6d 65   "event", argume
c3a0: 6e 74 73 2c 20 66 69 6c 65 4e 61 6d 65 29 3b 0d  nts, fileName);.
c3b0: 0a 09 09 09 09 09 09 7d 0d 0a 09 09 09 09 09 7d  .......}.......}
c3c0: 0d 0a 0d 0a 09 09 09 09 09 63 74 78 2e 68 74 6d  .........ctx.htm
c3d0: 6c 48 65 6c 70 2e 43 6c 6f 73 65 42 6f 6f 6b 49  lHelp.CloseBookI
c3e0: 6e 43 6f 6e 74 65 6e 74 73 28 29 3b 0d 0a 09 09  nContents();....
c3f0: 09 09 7d 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a  ..}.....}....}..
c400: 0d 0a 09 09 70 72 69 76 61 74 65 20 73 74 61 74  ....private stat
c410: 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 61 72  ic string GetPar
c420: 61 6d 4c 69 73 74 28 58 6d 6c 4e 6f 64 65 4c 69  amList(XmlNodeLi
c430: 73 74 20 70 61 72 61 6d 65 74 65 72 4e 6f 64 65  st parameterNode
c440: 73 29 0d 0a 09 09 7b 0d 0a 09 09 09 41 72 72 61  s)....{.....Arra
c450: 79 4c 69 73 74 20 70 61 72 61 6d 65 74 65 72 73  yList parameters
c460: 20 3d 20 6e 65 77 20 41 72 72 61 79 4c 69 73 74   = new ArrayList
c470: 28 29 3b 0d 0a 0d 0a 09 09 09 66 6f 72 65 61 63  ();.......foreac
c480: 68 20 28 58 6d 6c 4e 6f 64 65 20 70 61 72 61 6d  h (XmlNode param
c490: 65 74 65 72 4e 6f 64 65 20 69 6e 20 70 61 72 61  eterNode in para
c4a0: 6d 65 74 65 72 4e 6f 64 65 73 29 20 7b 0d 0a 0d  meterNodes) {...
c4b0: 0a 09 09 09 09 73 74 72 69 6e 67 20 70 61 72 61  .....string para
c4c0: 6d 65 74 65 72 54 79 70 65 4e 61 6d 65 20 3d 20  meterTypeName = 
c4d0: 47 65 74 50 61 72 61 6d 65 74 65 72 54 79 70 65  GetParameterType
c4e0: 4e 61 6d 65 28 70 61 72 61 6d 65 74 65 72 4e 6f  Name(parameterNo
c4f0: 64 65 2c 20 22 64 69 73 70 6c 61 79 4e 61 6d 65  de, "displayName
c500: 22 29 3b 0d 0a 09 09 09 09 0d 0a 09 09 09 09 70  ");............p
c510: 61 72 61 6d 65 74 65 72 73 2e 41 64 64 28 70 61  arameters.Add(pa
c520: 72 61 6d 65 74 65 72 54 79 70 65 4e 61 6d 65 29  rameterTypeName)
c530: 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 73 74  ;.....}.......st
c540: 72 69 6e 67 5b 5d 20 70 61 72 61 6d 65 74 65 72  ring[] parameter
c550: 54 79 70 65 4e 61 6d 65 73 20 3d 20 28 73 74 72  TypeNames = (str
c560: 69 6e 67 5b 5d 29 20 70 61 72 61 6d 65 74 65 72  ing[]) parameter
c570: 73 2e 54 6f 41 72 72 61 79 28 74 79 70 65 6f 66  s.ToArray(typeof
c580: 20 28 73 74 72 69 6e 67 29 29 3b 0d 0a 09 09 09   (string));.....
c590: 73 74 72 69 6e 67 20 70 61 72 61 6d 4c 69 73 74  string paramList
c5a0: 20 3d 20 22 28 22 20 2b 20 73 74 72 69 6e 67 2e   = "(" + string.
c5b0: 4a 6f 69 6e 28 22 2c 22 2c 20 70 61 72 61 6d 65  Join(",", parame
c5c0: 74 65 72 54 79 70 65 4e 61 6d 65 73 29 20 2b 20  terTypeNames) + 
c5d0: 22 29 22 3b 0d 0a 0d 0a 09 09 09 72 65 74 75 72  ")";.......retur
c5e0: 6e 20 70 61 72 61 6d 4c 69 73 74 3b 0d 0a 09 09  n paramList;....
c5f0: 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 73  }......private s
c600: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
c610: 50 61 72 61 6d 65 74 65 72 54 79 70 65 4e 61 6d  ParameterTypeNam
c620: 65 28 58 6d 6c 4e 6f 64 65 20 72 6f 6f 74 2c 20  e(XmlNode root, 
c630: 73 74 72 69 6e 67 20 74 79 70 65 41 74 74 72 69  string typeAttri
c640: 62 75 74 65 4e 61 6d 65 29 0d 0a 09 09 7b 0d 0a  buteName)....{..
c650: 09 09 09 58 6d 6c 41 74 74 72 69 62 75 74 65 20  ...XmlAttribute 
c660: 74 79 70 65 41 74 74 20 3d 20 72 6f 6f 74 2e 41  typeAtt = root.A
c670: 74 74 72 69 62 75 74 65 73 5b 74 79 70 65 41 74  ttributes[typeAt
c680: 74 72 69 62 75 74 65 4e 61 6d 65 5d 3b 0d 0a 09  tributeName];...
c690: 09 09 72 65 74 75 72 6e 20 74 79 70 65 41 74 74  ..return typeAtt
c6a0: 2e 56 61 6c 75 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a  .Value;....}....
c6b0: 09 09 70 72 69 76 61 74 65 20 73 74 61 74 69 63  ..private static
c6c0: 20 73 74 72 69 6e 67 20 47 65 74 4e 6f 64 65 49   string GetNodeI
c6d0: 64 28 58 6d 6c 4e 6f 64 65 20 6e 6f 64 65 29 0d  d(XmlNode node).
c6e0: 0a 09 09 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20  ...{.....return 
c6f0: 58 6d 6c 55 74 69 6c 73 2e 47 65 74 4e 6f 64 65  XmlUtils.GetNode
c700: 49 64 28 6e 6f 64 65 29 3b 0d 0a 09 09 7d 0d 0a  Id(node);....}..
c710: 0d 0a 09 09 70 72 69 76 61 74 65 20 73 74 61 74  ....private stat
c720: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e 6f 64  ic string GetNod
c730: 65 54 79 70 65 49 64 28 58 6d 6c 4e 6f 64 65 20  eTypeId(XmlNode 
c740: 6e 6f 64 65 29 0d 0a 09 09 7b 0d 0a 09 09 09 72  node)....{.....r
c750: 65 74 75 72 6e 20 58 6d 6c 55 74 69 6c 73 2e 47  eturn XmlUtils.G
c760: 65 74 4e 6f 64 65 54 79 70 65 49 64 28 6e 6f 64  etNodeTypeId(nod
c770: 65 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72  e);....}......pr
c780: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
c790: 69 6e 67 20 47 65 74 4e 6f 64 65 4e 61 6d 65 28  ing GetNodeName(
c7a0: 58 6d 6c 4e 6f 64 65 20 6e 6f 64 65 29 0d 0a 09  XmlNode node)...
c7b0: 09 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 58 6d  .{.....return Xm
c7c0: 6c 55 74 69 6c 73 2e 47 65 74 4e 6f 64 65 4e 61  lUtils.GetNodeNa
c7d0: 6d 65 28 6e 6f 64 65 29 3b 0d 0a 09 09 7d 0d 0a  me(node);....}..
c7e0: 0d 0a 09 09 70 72 69 76 61 74 65 20 73 74 61 74  ....private stat
c7f0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e 6f 64  ic string GetNod
c800: 65 44 69 73 70 6c 61 79 4e 61 6d 65 28 58 6d 6c  eDisplayName(Xml
c810: 4e 6f 64 65 20 6e 6f 64 65 29 0d 0a 09 09 7b 0d  Node node)....{.
c820: 0a 09 09 09 72 65 74 75 72 6e 20 58 6d 6c 55 74  ....return XmlUt
c830: 69 6c 73 2e 47 65 74 4e 6f 64 65 44 69 73 70 6c  ils.GetNodeDispl
c840: 61 79 4e 61 6d 65 28 6e 6f 64 65 29 3b 0d 0a 09  ayName(node);...
c850: 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20  .}......private 
c860: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74  static string St
c870: 72 69 70 4e 61 6d 65 73 70 61 63 65 28 73 74 72  ripNamespace(str
c880: 69 6e 67 20 6e 61 6d 65 29 0d 0a 09 09 7b 0d 0a  ing name)....{..
c890: 09 09 09 73 74 72 69 6e 67 20 72 65 73 75 6c 74  ...string result
c8a0: 20 3d 20 6e 61 6d 65 3b 0d 0a 0d 0a 09 09 09 69   = name;.......i
c8b0: 6e 74 20 6c 61 73 74 44 6f 74 20 3d 20 6e 61 6d  nt lastDot = nam
c8c0: 65 2e 4c 61 73 74 49 6e 64 65 78 4f 66 28 27 2e  e.LastIndexOf('.
c8d0: 27 29 3b 0d 0a 0d 0a 09 09 09 69 66 20 28 6c 61  ');.......if (la
c8e0: 73 74 44 6f 74 20 21 3d 20 2d 31 29 20 7b 0d 0a  stDot != -1) {..
c8f0: 09 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 61 6d  ....result = nam
c900: 65 2e 53 75 62 73 74 72 69 6e 67 28 6c 61 73 74  e.Substring(last
c910: 44 6f 74 20 2b 20 31 29 3b 0d 0a 09 09 09 7d 0d  Dot + 1);.....}.
c920: 0a 0d 0a 09 09 09 72 65 74 75 72 6e 20 72 65 73  ......return res
c930: 75 6c 74 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70  ult;....}......p
c940: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
c950: 74 5b 5d 20 53 6f 72 74 4e 6f 64 65 73 42 79 41  t[] SortNodesByA
c960: 74 74 72 69 62 75 74 65 28 58 6d 6c 4e 6f 64 65  ttribute(XmlNode
c970: 4c 69 73 74 20 6e 6f 64 65 73 2c 20 73 74 72 69  List nodes, stri
c980: 6e 67 20 61 74 74 72 69 62 75 74 65 4e 61 6d 65  ng attributeName
c990: 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 6e 74 20 6c  )....{.....int l
c9a0: 65 6e 67 74 68 20 3d 20 6e 6f 64 65 73 2e 43 6f  ength = nodes.Co
c9b0: 75 6e 74 3b 0d 0a 09 09 09 73 74 72 69 6e 67 5b  unt;.....string[
c9c0: 5d 20 6e 61 6d 65 73 20 3d 20 6e 65 77 20 73 74  ] names = new st
c9d0: 72 69 6e 67 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 09  ring[length];...
c9e0: 09 09 69 6e 74 5b 5d 20 69 6e 64 65 78 65 73 20  ..int[] indexes 
c9f0: 3d 20 6e 65 77 20 69 6e 74 5b 6c 65 6e 67 74 68  = new int[length
ca00: 5d 3b 0d 0a 09 09 09 69 6e 74 20 69 20 3d 20 30  ];.....int i = 0
ca10: 3b 0d 0a 0d 0a 09 09 09 66 6f 72 65 61 63 68 20  ;.......foreach 
ca20: 28 58 6d 6c 4e 6f 64 65 20 6e 6f 64 65 20 69 6e  (XmlNode node in
ca30: 20 6e 6f 64 65 73 29 20 7b 0d 0a 09 09 09 09 6e   nodes) {......n
ca40: 61 6d 65 73 5b 69 5d 20 3d 20 6e 6f 64 65 2e 41  ames[i] = node.A
ca50: 74 74 72 69 62 75 74 65 73 5b 61 74 74 72 69 62  ttributes[attrib
ca60: 75 74 65 4e 61 6d 65 5d 2e 56 61 6c 75 65 3b 0d  uteName].Value;.
ca70: 0a 09 09 09 09 69 6e 64 65 78 65 73 5b 69 5d 20  .....indexes[i] 
ca80: 3d 20 69 2b 2b 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a  = i++;.....}....
ca90: 09 09 09 41 72 72 61 79 2e 53 6f 72 74 28 6e 61  ...Array.Sort(na
caa0: 6d 65 73 2c 20 69 6e 64 65 78 65 73 29 3b 0d 0a  mes, indexes);..
cab0: 0d 0a 09 09 09 72 65 74 75 72 6e 20 69 6e 64 65  .....return inde
cac0: 78 65 73 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70  xes;....}......p
cad0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
cae0: 72 69 6e 67 5b 5d 20 53 6f 72 74 4e 61 6d 65 73  ring[] SortNames
caf0: 70 61 63 65 73 28 42 75 69 6c 64 50 72 6f 6a 65  paces(BuildProje
cb00: 63 74 43 6f 6e 74 65 78 74 20 63 74 78 2c 20 49  ctContext ctx, I
cb10: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 61 73 73  List<string> ass
cb20: 65 6d 62 6c 79 4e 61 6d 65 73 2c 20 73 74 72 69  emblyNames, stri
cb30: 6e 67 20 64 65 66 61 75 6c 74 4e 61 6d 65 73 70  ng defaultNamesp
cb40: 61 63 65 29 0d 0a 09 09 7b 0d 0a 09 09 09 4e 61  ace)....{.....Na
cb50: 6d 65 56 61 6c 75 65 43 6f 6c 6c 65 63 74 69 6f  meValueCollectio
cb60: 6e 20 6e 61 6d 65 73 70 61 63 65 41 73 73 65 6d  n namespaceAssem
cb70: 62 6c 69 65 73 20 3d 20 6e 65 77 20 4e 61 6d 65  blies = new Name
cb80: 56 61 6c 75 65 43 6f 6c 6c 65 63 74 69 6f 6e 28  ValueCollection(
cb90: 29 3b 0d 0a 09 09 09 69 6e 74 20 6e 4e 6f 64 65  );.....int nNode
cba0: 73 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  s = assemblyName
cbb0: 73 2e 43 6f 75 6e 74 3b 0d 0a 09 09 09 66 6f 72  s.Count;.....for
cbc0: 20 28 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c   (int i = 0; i <
cbd0: 20 6e 4e 6f 64 65 73 3b 20 69 2b 2b 29 20 7b 0d   nNodes; i++) {.
cbe0: 0a 09 09 09 09 73 74 72 69 6e 67 20 61 73 73 65  .....string asse
cbf0: 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d  mblyName = assem
cc00: 62 6c 79 4e 61 6d 65 73 5b 69 5d 3b 0d 0a 09 09  blyNames[i];....
cc10: 09 09 47 65 74 4e 61 6d 65 73 70 61 63 65 73 46  ..GetNamespacesF
cc20: 72 6f 6d 41 73 73 65 6d 62 6c 79 28 63 74 78 2c  romAssembly(ctx,
cc30: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6e   assemblyName, n
cc40: 61 6d 65 73 70 61 63 65 41 73 73 65 6d 62 6c 69  amespaceAssembli
cc50: 65 73 29 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09  es);.....}......
cc60: 09 73 74 72 69 6e 67 5b 5d 20 6e 61 6d 65 73 70  .string[] namesp
cc70: 61 63 65 73 20 3d 20 6e 61 6d 65 73 70 61 63 65  aces = namespace
cc80: 41 73 73 65 6d 62 6c 69 65 73 2e 41 6c 6c 4b 65  Assemblies.AllKe
cc90: 79 73 3b 0d 0a 09 09 09 69 66 20 28 73 74 72 69  ys;.....if (stri
cca0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
ccb0: 28 64 65 66 61 75 6c 74 4e 61 6d 65 73 70 61 63  (defaultNamespac
ccc0: 65 29 29 20 7b 0d 0a 09 09 09 09 41 72 72 61 79  e)) {......Array
ccd0: 2e 53 6f 72 74 28 6e 61 6d 65 73 70 61 63 65 73  .Sort(namespaces
cce0: 29 3b 0d 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0d  );.....} else {.
ccf0: 0a 09 09 09 09 41 72 72 61 79 2e 53 6f 72 74 28  .....Array.Sort(
cd00: 6e 61 6d 65 73 70 61 63 65 73 2c 20 28 78 2c 20  namespaces, (x, 
cd10: 79 29 20 3d 3e 0d 0a 09 09 09 09 7b 0d 0a 09 09  y) =>......{....
cd20: 09 09 09 69 66 20 28 78 20 3d 3d 20 79 29 20 7b  ...if (x == y) {
cd30: 0d 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 30  ........return 0
cd40: 3b 0d 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 69  ;.......} else i
cd50: 66 20 28 78 20 3d 3d 20 6e 75 6c 6c 20 7c 7c 20  f (x == null || 
cd60: 78 20 3d 3d 20 64 65 66 61 75 6c 74 4e 61 6d 65  x == defaultName
cd70: 73 70 61 63 65 29 20 7b 0d 0a 09 09 09 09 09 09  space) {........
cd80: 72 65 74 75 72 6e 20 2d 31 3b 0d 0a 09 09 09 09  return -1;......
cd90: 09 7d 20 65 6c 73 65 20 69 66 20 28 79 20 3d 3d  .} else if (y ==
cda0: 20 64 65 66 61 75 6c 74 4e 61 6d 65 73 70 61 63   defaultNamespac
cdb0: 65 29 20 7b 0d 0a 09 09 09 09 09 09 72 65 74 75  e) {........retu
cdc0: 72 6e 20 31 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09  rn 1;.......}...
cdd0: 09 09 09 09 72 65 74 75 72 6e 20 78 2e 43 6f 6d  ....return x.Com
cde0: 70 61 72 65 54 6f 28 79 29 3b 0d 0a 09 09 09 09  pareTo(y);......
cdf0: 7d 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09 72 65  });.....}.....re
ce00: 74 75 72 6e 20 6e 61 6d 65 73 70 61 63 65 73 3b  turn namespaces;
ce10: 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61  ....}......priva
ce20: 74 65 20 76 6f 69 64 20 54 72 61 6e 73 66 6f 72  te void Transfor
ce30: 6d 41 6e 64 57 72 69 74 65 52 65 73 75 6c 74 28  mAndWriteResult(
ce40: 42 75 69 6c 64 41 73 73 65 6d 62 6c 79 43 6f 6e  BuildAssemblyCon
ce50: 74 65 78 74 20 63 74 78 2c 0d 0a 09 09 09 73 74  text ctx,.....st
ce60: 72 69 6e 67 20 74 72 61 6e 73 66 6f 72 6d 4e 61  ring transformNa
ce70: 6d 65 2c 0d 0a 09 09 09 58 73 6c 74 41 72 67 75  me,.....XsltArgu
ce80: 6d 65 6e 74 4c 69 73 74 20 61 72 67 75 6d 65 6e  mentList argumen
ce90: 74 73 2c 0d 0a 09 09 09 73 74 72 69 6e 67 20 66  ts,.....string f
cea0: 69 6c 65 6e 61 6d 65 29 0d 0a 09 09 7b 0d 0a 09  ilename)....{...
ceb0: 09 09 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e  ..Trace.WriteLin
cec0: 65 28 66 69 6c 65 6e 61 6d 65 29 3b 0d 0a 23 69  e(filename);..#i
ced0: 66 20 44 45 42 55 47 0d 0a 09 09 09 69 6e 74 20  f DEBUG.....int 
cee0: 73 74 61 72 74 20 3d 20 45 6e 76 69 72 6f 6e 6d  start = Environm
cef0: 65 6e 74 2e 54 69 63 6b 43 6f 75 6e 74 3b 0d 0a  ent.TickCount;..
cf00: 23 65 6e 64 69 66 0d 0a 0d 0a 09 09 09 45 78 74  #endif.......Ext
cf10: 65 72 6e 61 6c 48 74 6d 6c 50 72 6f 76 69 64 65  ernalHtmlProvide
cf20: 72 20 68 74 6d 6c 50 72 6f 76 69 64 65 72 20 3d  r htmlProvider =
cf30: 20 6e 65 77 20 45 78 74 65 72 6e 61 6c 48 74 6d   new ExternalHtm
cf40: 6c 50 72 6f 76 69 64 65 72 28 4d 79 43 6f 6e 66  lProvider(MyConf
cf50: 69 67 2c 20 66 69 6c 65 6e 61 6d 65 29 3b 0d 0a  ig, filename);..
cf60: 0d 0a 09 09 09 74 72 79 20 7b 0d 0a 0d 0a 09 09  .....try {......
cf70: 09 09 53 74 72 65 61 6d 57 72 69 74 65 72 20 73  ..StreamWriter s
cf80: 74 72 65 61 6d 57 72 69 74 65 72 3b 0d 0a 09 09  treamWriter;....
cf90: 09 09 73 74 72 69 6e 67 20 66 75 6c 6c 50 61 74  ..string fullPat
cfa0: 68 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65  h = Path.Combine
cfb0: 28 63 74 78 2e 57 6f 72 6b 69 6e 67 44 69 72 65  (ctx.WorkingDire
cfc0: 63 74 6f 72 79 2e 46 75 6c 6c 4e 61 6d 65 2c 20  ctory.FullName, 
cfd0: 66 69 6c 65 6e 61 6d 65 29 3b 0d 0a 09 09 09 09  filename);......
cfe0: 75 73 69 6e 67 20 28 73 74 72 65 61 6d 57 72 69  using (streamWri
cff0: 74 65 72 20 3d 20 6e 65 77 20 53 74 72 65 61 6d  ter = new Stream
d000: 57 72 69 74 65 72 28 0d 0a 09 09 09 09 09 46 69  Writer(.......Fi
d010: 6c 65 2e 4f 70 65 6e 28 66 75 6c 6c 50 61 74 68  le.Open(fullPath
d020: 2c 20 46 69 6c 65 4d 6f 64 65 2e 43 72 65 61 74  , FileMode.Creat
d030: 65 29 2c 0d 0a 09 09 09 09 09 63 74 78 2e 43 75  e),.......ctx.Cu
d040: 72 72 65 6e 74 46 69 6c 65 45 6e 63 6f 64 69 6e  rrentFileEncodin
d050: 67 29 29 20 7b 0d 0a 09 09 09 09 09 73 74 72 69  g)) {.......stri
d060: 6e 67 20 44 6f 63 4c 61 6e 67 43 6f 64 65 20 3d  ng DocLangCode =
d070: 20 45 6e 75 6d 2e 47 65 74 4e 61 6d 65 28 74 79   Enum.GetName(ty
d080: 70 65 6f 66 28 53 64 6b 4c 61 6e 67 75 61 67 65  peof(SdkLanguage
d090: 29 2c 20 4d 79 43 6f 6e 66 69 67 2e 53 64 6b 44  ), MyConfig.SdkD
d0a0: 6f 63 4c 61 6e 67 75 61 67 65 29 2e 52 65 70 6c  ocLanguage).Repl
d0b0: 61 63 65 28 22 5f 22 2c 20 22 2d 22 29 3b 0d 0a  ace("_", "-");..
d0c0: 09 09 09 09 09 0d 0a 09 09 09 09 09 4d 73 64 6e  ............Msdn
d0d0: 58 73 6c 74 55 74 69 6c 69 74 69 65 73 20 75 74  XsltUtilities ut
d0e0: 69 6c 69 74 69 65 73 20 3d 20 6e 65 77 20 4d 73  ilities = new Ms
d0f0: 64 6e 58 73 6c 74 55 74 69 6c 69 74 69 65 73 28  dnXsltUtilities(
d100: 63 74 78 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76 65  ctx._nameResolve
d110: 72 2c 20 63 74 78 2e 43 75 72 72 65 6e 74 41 73  r, ctx.CurrentAs
d120: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 4d 79 43 6f  semblyName, MyCo
d130: 6e 66 69 67 2e 53 64 6b 44 6f 63 56 65 72 73 69  nfig.SdkDocVersi
d140: 6f 6e 53 74 72 69 6e 67 2c 20 44 6f 63 4c 61 6e  onString, DocLan
d150: 67 43 6f 64 65 2c 20 4d 79 43 6f 6e 66 69 67 2e  gCode, MyConfig.
d160: 53 64 6b 4c 69 6e 6b 73 4f 6e 57 65 62 2c 20 63  SdkLinksOnWeb, c
d170: 74 78 2e 43 75 72 72 65 6e 74 46 69 6c 65 45 6e  tx.CurrentFileEn
d180: 63 6f 64 69 6e 67 29 3b 0d 0a 09 09 09 09 09 63  coding);.......c
d190: 74 78 2e 5f 6e 61 6d 65 52 65 73 6f 6c 76 65 72  tx._nameResolver
d1a0: 2e 75 74 69 6c 69 74 69 65 73 20 3d 20 75 74 69  .utilities = uti
d1b0: 6c 69 74 69 65 73 3b 0d 0a 0d 0a 09 09 09 09 09  lities;.........
d1c0: 69 66 20 28 61 72 67 75 6d 65 6e 74 73 2e 47 65  if (arguments.Ge
d1d0: 74 50 61 72 61 6d 28 22 61 73 73 65 6d 62 6c 79  tParam("assembly
d1e0: 2d 6e 61 6d 65 22 2c 20 73 74 72 69 6e 67 2e 45  -name", string.E
d1f0: 6d 70 74 79 29 20 3d 3d 20 6e 75 6c 6c 29 20 7b  mpty) == null) {
d200: 0d 0a 09 09 09 09 09 09 61 72 67 75 6d 65 6e 74  ........argument
d210: 73 2e 41 64 64 50 61 72 61 6d 28 22 61 73 73 65  s.AddParam("asse
d220: 6d 62 6c 79 2d 6e 61 6d 65 22 2c 20 53 74 72 69  mbly-name", Stri
d230: 6e 67 2e 45 6d 70 74 79 2c 20 63 74 78 2e 43 75  ng.Empty, ctx.Cu
d240: 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d  rrentAssemblyNam
d250: 65 29 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09  e);.......}.....
d260: 09 09 61 72 67 75 6d 65 6e 74 73 2e 41 64 64 50  ..arguments.AddP
d270: 61 72 61 6d 28 22 6e 64 6f 63 2d 74 69 74 6c 65  aram("ndoc-title
d280: 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c  ", String.Empty,
d290: 20 4d 79 43 6f 6e 66 69 67 2e 54 69 74 6c 65 29   MyConfig.Title)
d2a0: 3b 0d 0a 09 09 09 09 09 61 72 67 75 6d 65 6e 74  ;.......argument
d2b0: 73 2e 41 64 64 50 61 72 61 6d 28 22 6e 64 6f 63  s.AddParam("ndoc
d2c0: 2d 76 62 2d 73 79 6e 74 61 78 22 2c 20 53 74 72  -vb-syntax", Str
d2d0: 69 6e 67 2e 45 6d 70 74 79 2c 20 4d 79 43 6f 6e  ing.Empty, MyCon
d2e0: 66 69 67 2e 53 68 6f 77 56 69 73 75 61 6c 42 61  fig.ShowVisualBa
d2f0: 73 69 63 29 3b 0d 0a 09 09 09 09 09 61 72 67 75  sic);.......argu
d300: 6d 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22  ments.AddParam("
d310: 6e 64 6f 63 2d 6f 6d 69 74 2d 6f 62 6a 65 63 74  ndoc-omit-object
d320: 2d 74 61 67 73 22 2c 20 53 74 72 69 6e 67 2e 45  -tags", String.E
d330: 6d 70 74 79 2c 20 28 28 4d 79 43 6f 6e 66 69 67  mpty, ((MyConfig
d340: 2e 4f 75 74 70 75 74 54 61 72 67 65 74 20 26 20  .OutputTarget & 
d350: 4f 75 74 70 75 74 54 79 70 65 2e 48 74 6d 6c 48  OutputType.HtmlH
d360: 65 6c 70 29 20 3d 3d 20 30 29 29 3b 0d 0a 09 09  elp) == 0));....
d370: 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41 64 64  ...arguments.Add
d380: 50 61 72 61 6d 28 22 6e 64 6f 63 2d 64 6f 63 75  Param("ndoc-docu
d390: 6d 65 6e 74 2d 61 74 74 72 69 62 75 74 65 73 22  ment-attributes"
d3a0: 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20  , String.Empty, 
d3b0: 4d 79 43 6f 6e 66 69 67 2e 44 6f 63 75 6d 65 6e  MyConfig.Documen
d3c0: 74 41 74 74 72 69 62 75 74 65 73 29 3b 0d 0a 09  tAttributes);...
d3d0: 09 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41 64  ....arguments.Ad
d3e0: 64 50 61 72 61 6d 28 22 6e 64 6f 63 2d 64 6f 63  dParam("ndoc-doc
d3f0: 75 6d 65 6e 74 65 64 2d 61 74 74 72 69 62 75 74  umented-attribut
d400: 65 73 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74  es", String.Empt
d410: 79 2c 20 4d 79 43 6f 6e 66 69 67 2e 44 6f 63 75  y, MyConfig.Docu
d420: 6d 65 6e 74 65 64 41 74 74 72 69 62 75 74 65 73  mentedAttributes
d430: 29 3b 0d 0a 0d 0a 09 09 09 09 09 61 72 67 75 6d  );.........argum
d440: 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 6e  ents.AddParam("n
d450: 64 6f 63 2d 73 64 6b 2d 64 6f 63 2d 62 61 73 65  doc-sdk-doc-base
d460: 2d 75 72 6c 22 2c 20 53 74 72 69 6e 67 2e 45 6d  -url", String.Em
d470: 70 74 79 2c 20 75 74 69 6c 69 74 69 65 73 2e 53  pty, utilities.S
d480: 64 6b 44 6f 63 42 61 73 65 55 72 6c 29 3b 0d 0a  dkDocBaseUrl);..
d490: 09 09 09 09 09 61 72 67 75 6d 65 6e 74 73 2e 41  .....arguments.A
d4a0: 64 64 50 61 72 61 6d 28 22 6e 64 6f 63 2d 73 64  ddParam("ndoc-sd
d4b0: 6b 2d 64 6f 63 2d 66 69 6c 65 2d 65 78 74 22 2c  k-doc-file-ext",
d4c0: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 75   String.Empty, u
d4d0: 74 69 6c 69 74 69 65 73 2e 53 64 6b 44 6f 63 45  tilities.SdkDocE
d4e0: 78 74 29 3b 0d 0a 09 09 09 09 09 61 72 67 75 6d  xt);.......argum
d4f0: 65 6e 74 73 2e 41 64 64 50 61 72 61 6d 28 22 6e  ents.AddParam("n
d500: 64 6f 63 2d 73 64 6b 2d 64 6f 63 2d 6c 61 6e 67  doc-sdk-doc-lang
d510: 75 61 67 65 22 2c 20 53 74 72 69 6e 67 2e 45 6d  uage", String.Em
d520: 70 74 79 2c 20 75 74 69 6c 69 74 69 65 73 2e 53  pty, utilities.S
d530: 64 6b 44 6f 63 4c 61 6e 67 75 61 67 65 29 3b 0d  dkDocLanguage);.
d540: 0a 0d 0a 09 09 09 09 09 61 72 67 75 6d 65 6e 74  ........argument
d550: 73 2e 41 64 64 45 78 74 65 6e 73 69 6f 6e 4f 62  s.AddExtensionOb
d560: 6a 65 63 74 28 22 75 72 6e 3a 4e 44 6f 63 55 74  ject("urn:NDocUt
d570: 69 6c 22 2c 20 75 74 69 6c 69 74 69 65 73 29 3b  il", utilities);
d580: 0d 0a 09 09 09 09 09 61 72 67 75 6d 65 6e 74 73  .......arguments
d590: 2e 41 64 64 45 78 74 65 6e 73 69 6f 6e 4f 62 6a  .AddExtensionObj
d5a0: 65 63 74 28 22 75 72 6e 3a 4e 44 6f 63 45 78 74  ect("urn:NDocExt
d5b0: 65 72 6e 61 6c 48 74 6d 6c 22 2c 20 68 74 6d 6c  ernalHtml", html
d5c0: 50 72 6f 76 69 64 65 72 29 3b 0d 0a 0d 0a 09 09  Provider);......
d5d0: 09 09 09 2f 2f 55 73 65 20 6e 65 77 20 6f 76 65  ...//Use new ove
d5e0: 72 6c 6f 61 64 20 73 6f 20 77 65 20 64 6f 6e 27  rload so we don'
d5f0: 74 20 67 65 74 20 6f 62 73 6f 6c 65 74 65 20 77  t get obsolete w
d600: 61 72 6e 69 6e 67 73 20 2d 20 63 6c 65 61 6e 20  arnings - clean 
d610: 63 6f 6d 70 69 6c 65 20 3a 29 0d 0a 0d 0a 09 09  compile :)......
d620: 09 09 09 58 73 6c 54 72 61 6e 73 66 6f 72 6d 28  ...XslTransform(
d630: 63 74 78 2c 20 74 72 61 6e 73 66 6f 72 6d 4e 61  ctx, transformNa
d640: 6d 65 2c 20 63 74 78 2e 47 65 74 58 50 61 74 68  me, ctx.GetXPath
d650: 4e 61 76 69 67 61 62 6c 65 28 29 2c 20 61 72 67  Navigable(), arg
d660: 75 6d 65 6e 74 73 2c 20 73 74 72 65 61 6d 57 72  uments, streamWr
d670: 69 74 65 72 2c 20 66 75 6c 6c 50 61 74 68 29 3b  iter, fullPath);
d680: 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a 09  ......}.....}...
d690: 09 09 63 61 74 63 68 28 49 4f 45 78 63 65 70 74  ..catch(IOExcept
d6a0: 69 6f 6e 20 65 78 29 0d 0a 09 09 09 7b 0d 0a 09  ion ex).....{...
d6b0: 09 09 09 74 68 72 6f 77 20 6e 65 77 20 44 6f 63  ...throw new Doc
d6c0: 75 6d 65 6e 74 65 72 45 78 63 65 70 74 69 6f 6e  umenterException
d6d0: 28 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22  (string.Format("
d6e0: 49 4f 20 65 72 72 6f 72 20 77 68 69 6c 65 20 63  IO error while c
d6f0: 72 65 61 74 69 6e 67 20 66 69 6c 65 20 7b 30 7d  reating file {0}
d700: 22 2c 20 66 69 6c 65 6e 61 6d 65 29 2c 20 65 78  ", filename), ex
d710: 29 3b 0d 0a 09 09 09 7d 0d 0a 2f 2f 09 09 09 63  );.....}..//...c
d720: 61 74 63 68 20 28 50 61 74 68 54 6f 6f 4c 6f 6e  atch (PathTooLon
d730: 67 45 78 63 65 70 74 69 6f 6e 20 65 29 20 7b 0d  gException e) {.
d740: 0a 2f 2f 09 09 09 09 74 68 72 6f 77 20 6e 65 77  .//....throw new
d750: 20 50 61 74 68 54 6f 6f 4c 6f 6e 67 45 78 63 65   PathTooLongExce
d760: 70 74 69 6f 6e 28 65 2e 4d 65 73 73 61 67 65 20  ption(e.Message 
d770: 2b 20 22 5c 6e 54 68 65 20 66 69 6c 65 20 74 68  + "\nThe file th
d780: 61 74 20 4e 44 6f 63 33 20 77 61 73 20 74 72 79  at NDoc3 was try
d790: 69 6e 67 20 74 6f 20 63 72 65 61 74 65 20 68 61  ing to create ha
d7a0: 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  d the following 
d7b0: 6e 61 6d 65 3a 5c 6e 22 20 2b 20 50 61 74 68 2e  name:\n" + Path.
d7c0: 43 6f 6d 62 69 6e 65 28 63 74 78 2e 57 6f 72 6b  Combine(ctx.Work
d7d0: 69 6e 67 44 69 72 65 63 74 6f 72 79 2e 46 75 6c  ingDirectory.Ful
d7e0: 6c 4e 61 6d 65 2c 20 66 69 6c 65 6e 61 6d 65 29  lName, filename)
d7f0: 29 3b 0d 0a 2f 2f 09 09 09 7d 0d 0a 0d 0a 23 69  );..//...}....#i
d800: 66 20 44 45 42 55 47 0d 0a 09 09 09 44 65 62 75  f DEBUG.....Debu
d810: 67 2e 57 72 69 74 65 4c 69 6e 65 28 28 45 6e 76  g.WriteLine((Env
d820: 69 72 6f 6e 6d 65 6e 74 2e 54 69 63 6b 43 6f 75  ironment.TickCou
d830: 6e 74 20 2d 20 73 74 61 72 74 29 20 2b 20 22 20  nt - start) + " 
d840: 6d 73 65 63 2e 22 29 3b 0d 0a 23 65 6e 64 69 66  msec.");..#endif
d850: 0d 0a 09 09 09 63 74 78 2e 68 74 6d 6c 48 65 6c  .....ctx.htmlHel
d860: 70 2e 41 64 64 46 69 6c 65 54 6f 50 72 6f 6a 65  p.AddFileToProje
d870: 63 74 28 66 69 6c 65 6e 61 6d 65 29 3b 0d 0a 09  ct(filename);...
d880: 09 7d 0d 0a 09 7d 0d 0a 7d 0d 0a                 .}...}..}..