Bee.BeeDriver.xml 92 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657
  1. <?xml version="1.0"?>
  2. <doc>
  3. <assembly>
  4. <name>Bee.BeeDriver</name>
  5. </assembly>
  6. <members>
  7. <member name="T:Bee.BeeDriver.BeeDriver">
  8. <summary>
  9. BeeDriver is a tool that lets one setup and control external bee graphs. Unity uses this for script compilation.
  10. You are supposed to bring your own prebuilt buildprogram that can create bee DAG .json files. BeeDriver will invoke
  11. your buildprogram whenever it has no previous dag.json graph, or when the bee backend (currently tundra2.exe) has reason to
  12. believe the previous dag.json file is no longer reliable.
  13. Once you supply your buildprogram, you can call beeDriver.Build(), or beeDriver.BuildAsync(), and when at
  14. some point bee is done building, you get back an BeeDriverResult result that has results of all individual nodes that were built.
  15. It is up to the user of BeeDriver to parse those results.
  16. It is common to want to share some data between the user of BeeDriver and the build program. You can use the .InputData.Add()
  17. facility to help with this. The data you pass in will be serialized into a json file that is easy for the buildprogram to consume. Unity
  18. uses this to inform the buildprogram about things like playersettings.
  19. BeeDriver exposes several extension points. You can supply your own implementation of ProgressAPI, which wll be invoked
  20. (on a thread) in realtime as nodes are building.
  21. You can supply your own SourceFileUpdaterBase. The Unity script updater is an example of this. Each SourceFileUpdaterBase gets
  22. to take a look at output from nodes and say if it thinks it can fix any problems. If so, it will be run.
  23. The last extension point is the SourceFileUpdatersResultHandler. Here you have to provide an implementation that is responsible
  24. for doing something with the results of the source file updaters. In Unity's case this is not trivial: to overwrite files it
  25. has to ask the VCS integration to make files readable. It has to ask for consent for the user. If the files live in an immutable package,
  26. it needs to let packman know it will be overwriting some files. Unity's usage of BeeBriver provides an implementation of SourceFileUpdatersResultHandler
  27. that does all this.
  28. </summary>
  29. </member>
  30. <member name="P:Bee.BeeDriver.BeeDriver.DagJsonFile">
  31. <summary>
  32. The location of the dag json file used by the build
  33. </summary>
  34. </member>
  35. <member name="M:Bee.BeeDriver.BeeDriver.#ctor(Bee.BeeDriver.RunnableProgram,Bee.BeeDriver.RunnableProgram,System.String,System.String,System.String,Bee.BeeDriver.SourceFileUpdaterBase[],Bee.BeeDriver.SourceFileUpdatersResultHandler,Bee.BeeDriver.ProgressAPI,System.Boolean,System.String,System.String)">
  36. <summary>
  37. Entrypoint for the BeeDriver. Once you construct it, invoke .Add(), .Build() or .BuildAsync()
  38. </summary>
  39. <param name="buildProgram">The buildprogram that should be used. Typically one would use a SystemProcessRunnableProgram here.</param>
  40. <param name="backendProgram">Which tundra backend program to use.</param>
  41. <param name="projectRoot">The root directory for the build graph. Typically this matches the Unity's project folder.</param>
  42. <param name="dagName">The name of the dag to use. Choose different dag names if you have different configurations that user will switch between.</param>
  43. <param name="buildStateDirectory">Directory where to store the buildstate files.</param>
  44. <param name="sourceFileUpdaters">A list of SourceFileUpdaters to use for this BeeDriver.</param>
  45. <param name="processSourceFileUpdatersResult">An implementation that can take care of handling the results of the sourcefile updaters.</param>
  46. <param name="progressApi">An implementation that will be notified on a thread, in realtime, of the progress of the build.</param>
  47. <param name="continueBuildingAfterFirstFailure">If set to false the bee driver will stop as quickly as possible once a single node has failed.</param>
  48. <param name="profilerOutputFile">Path to write a chrome://tracing style profiler output file for the build.</param>
  49. <param name="profilerProcessName">The process name to report in the profiler output file</param>
  50. </member>
  51. <member name="P:Bee.BeeDriver.BeeDriver.DataForBuildProgram">
  52. <summary>
  53. Use DataForBuildProgram to write c# objects to disk that can be conveniently read from your buildprogram.
  54. </summary>
  55. </member>
  56. <member name="P:Bee.BeeDriver.BeeDriver.DataFromBuildProgram">
  57. <summary>
  58. Use DataFromBuildProgram to read c# objects from disk that have been written by the buildprogram.
  59. </summary>
  60. </member>
  61. <member name="M:Bee.BeeDriver.BeeDriver.Build(System.String)">
  62. <summary>
  63. This builds the given targetname, and will only return when a buildresult is ready.
  64. </summary>
  65. <param name="target">the name of a target in the buildgraph generated by the buildprogram</param>
  66. <returns>The BeeDriverResult for this build</returns>
  67. </member>
  68. <member name="M:Bee.BeeDriver.BeeDriver.Build">
  69. <summary>
  70. This builds all targets, and will only return when a buildresult is ready.
  71. </summary>
  72. <returns>The BeeDriverResult for this build</returns>
  73. </member>
  74. <member name="M:Bee.BeeDriver.BeeDriver.WaitForResult">
  75. <summary>
  76. Block until the result of the currently active build is ready.
  77. </summary>
  78. <returns>The BeeDriverResult for the currently active build</returns>
  79. </member>
  80. <member name="M:Bee.BeeDriver.BeeDriver.BuildAsync">
  81. <summary>
  82. Start a build, and immediately return. You can periodically invoke .Tick() to see if the build is already finished.
  83. </summary>
  84. </member>
  85. <member name="M:Bee.BeeDriver.BeeDriver.BuildAsync(System.String)">
  86. <summary>
  87. Start a build, and immediately return. You can periodically invoke .Tick() to see if the build is already finished.
  88. </summary>
  89. <param name="target">the name of a target in the buildgraph generated by the buildprogram</param>
  90. </member>
  91. <member name="M:Bee.BeeDriver.BeeDriver.Tick(System.Boolean)">
  92. <summary>
  93. Use Tick() to periodically check if the currently active build is already finished.
  94. </summary>
  95. <returns>Will return null if the build is not finished, otherwise will return the BeeDriverResult of the active build</returns>
  96. </member>
  97. <member name="M:Bee.BeeDriver.BeeDriver.CancelBuild">
  98. <summary>
  99. Cancel build. This does not abort the build immediately but rather gracefully shuts down the build.
  100. Users should keep calling Tick() until a result is returned.
  101. </summary>
  102. </member>
  103. <member name="M:Bee.BeeDriver.BeeDriver.Dispose">
  104. <summary>
  105. Calling Dispose will abort any currently active build. This might not be immediate as the backend process that might be running could require a bit of time
  106. to finish currently in-flight nodes as well as write out some bookkeeping data files.
  107. </summary>
  108. </member>
  109. <member name="M:Bee.BeeDriver.BeeDriver.Finalize">
  110. <summary>
  111. Finalizer. A safety mechinism to make sure all resources are cleaned up even if .Dispose is not called.
  112. </summary>
  113. </member>
  114. <member name="T:Bee.BeeDriver.BeeDriverResult">
  115. <summary>
  116. A data object holding information related to the result of a build
  117. </summary>
  118. </member>
  119. <member name="P:Bee.BeeDriver.BeeDriverResult.NodeResults">
  120. <summary>
  121. An array of all the nodeResults for all nodes that have executed as part of the build
  122. </summary>
  123. </member>
  124. <member name="P:Bee.BeeDriver.BeeDriverResult.Success">
  125. <summary>
  126. Whether or not the build was successful.
  127. </summary>
  128. </member>
  129. <member name="P:Bee.BeeDriver.BeeDriverResult.BeeDriverMessages">
  130. <summary>
  131. Messages that are not about individual nodes, but about BeeDriver specific things that have to be communicated. Things like
  132. a buildprogram throwing an exception. A script updater not producing any results when it promised to do so. The backend crashing.
  133. </summary>
  134. </member>
  135. <member name="T:Bee.BeeDriver.BeeDriverResult.Message">
  136. <summary>
  137. A Message that is not about individual nodes, but about BeeDriver specific things that have to be communicated. Things like
  138. a buildprogram throwing an exception. A script updater not producing any results when it promised to do so. The backend crashing.
  139. </summary>
  140. </member>
  141. <member name="M:Bee.BeeDriver.BeeDriverResult.Message.#ctor(System.String,Bee.BeeDriver.BeeDriverResult.MessageKind)">
  142. <summary>
  143. Constructor
  144. </summary>
  145. </member>
  146. <member name="P:Bee.BeeDriver.BeeDriverResult.Message.Text">
  147. <summary>
  148. The text payload of the message
  149. </summary>
  150. </member>
  151. <member name="P:Bee.BeeDriver.BeeDriverResult.Message.Kind">
  152. <summary>
  153. Wether the message is a warning or an error
  154. </summary>
  155. </member>
  156. <member name="M:Bee.BeeDriver.BeeDriverResult.Message.ToString">
  157. <summary>
  158. string representation of the message
  159. </summary>
  160. <returns></returns>
  161. </member>
  162. <member name="M:Bee.BeeDriver.BeeDriverResult.ToString">
  163. <summary>
  164. text summary of the success status and all beedriver messages.
  165. </summary>
  166. <returns></returns>
  167. </member>
  168. <member name="T:Bee.BeeDriver.BeeDriverResult.MessageKind">
  169. <summary>
  170. Warning/Error enum for BeeDrivermessage
  171. </summary>
  172. </member>
  173. <member name="F:Bee.BeeDriver.BeeDriverResult.MessageKind.Warning">
  174. <summary>
  175. It was a warning
  176. </summary>
  177. </member>
  178. <member name="F:Bee.BeeDriver.BeeDriverResult.MessageKind.Error">
  179. <summary>
  180. It was an error
  181. </summary>
  182. </member>
  183. <member name="T:Bee.BeeDriver.BeeBackendLogMessage">
  184. <summary>
  185. base class for various messages that can appear in a bee backend log
  186. </summary>
  187. </member>
  188. <member name="F:Bee.BeeDriver.BeeBackendLogMessage.msg">
  189. <summary>
  190. the message payload
  191. </summary>
  192. </member>
  193. <member name="T:Bee.BeeDriver.NodeResult">
  194. <summary>
  195. Results from the bee backend about a specific node having been executed.
  196. </summary>
  197. </member>
  198. <member name="F:Bee.BeeDriver.NodeResult.annotation">
  199. <summary>
  200. the annotation of the dag node
  201. </summary>
  202. </member>
  203. <member name="F:Bee.BeeDriver.NodeResult.displayName">
  204. <summary>
  205. Human-readable description of what this node does for showing in progress bars
  206. or other UI elements.
  207. </summary>
  208. </member>
  209. <member name="F:Bee.BeeDriver.NodeResult.stdout">
  210. <summary>
  211. the stdout of the action that was run
  212. </summary>
  213. </member>
  214. <member name="F:Bee.BeeDriver.NodeResult.outputfile">
  215. <summary>
  216. the first outputfile of the node
  217. </summary>
  218. </member>
  219. <member name="F:Bee.BeeDriver.NodeResult.outputdirectory">
  220. <summary>
  221. the first output directory if any of the node
  222. </summary>
  223. </member>
  224. <member name="F:Bee.BeeDriver.NodeResult.exitcode">
  225. <summary>
  226. the exitcode the action finished with
  227. </summary>
  228. </member>
  229. <member name="F:Bee.BeeDriver.NodeResult.processed_node_count">
  230. <summary>
  231. this corresponds to the first number in the [20/3043] messages that you see in normal bee output.
  232. </summary>
  233. </member>
  234. <member name="F:Bee.BeeDriver.NodeResult.number_of_nodes_ever_queued">
  235. <summary>
  236. The total number of nodes ever queued. Beware that this number is not constant. It is guaranteed to never decrease.
  237. </summary>
  238. </member>
  239. <member name="F:Bee.BeeDriver.NodeResult.cmdline">
  240. <summary>
  241. The commandline of this node. will only be filled in when the node failed.
  242. </summary>
  243. </member>
  244. <member name="F:Bee.BeeDriver.NodeResult.rsps">
  245. <summary>
  246. The response files used by this node. will only be filled in when the node failed.
  247. </summary>
  248. </member>
  249. <member name="F:Bee.BeeDriver.NodeResult.profiler_output">
  250. <summary>
  251. If this node had a profileroutput set it will be reported here
  252. </summary>
  253. </member>
  254. <member name="T:Bee.BeeDriver.ProgressAPI">
  255. <summary>
  256. When using a BeeDriver, you can pass in a class derived from ProgressAPI to be notified of the progress of a running build. Beware
  257. that these progress notifications will be delivered on a background thread. They are guaranteed to come from the same thread, but you
  258. have to take care of data-synchronization with your mainthread yourself.
  259. </summary>
  260. </member>
  261. <member name="M:Bee.BeeDriver.ProgressAPI.Start">
  262. <summary>
  263. Override this method. The object it returns will receive the Report invocations for this build.
  264. </summary>
  265. </member>
  266. <member name="T:Bee.BeeDriver.ProgressAPI.ProgressToken">
  267. <summary>
  268. Derive from ProgressToken your own class that has the logic you want to happen on progress notifications.
  269. </summary>
  270. </member>
  271. <member name="M:Bee.BeeDriver.ProgressAPI.ProgressToken.Report(System.String)">
  272. <summary>
  273. This overload of Report is called for phase-changing messages. things like "running buildprogram". "running scriptupdater".
  274. </summary>
  275. <param name="msg"> the message payload </param>
  276. </member>
  277. <member name="M:Bee.BeeDriver.ProgressAPI.ProgressToken.Report(Bee.BeeDriver.NodeResult)">
  278. <summary>
  279. This overload of Report is called for each node that finished running.
  280. </summary>
  281. <param name="nodeResult">nodeResult is a dataobject that has a lot of detail about the node that just finished running</param>
  282. </member>
  283. <member name="M:Bee.BeeDriver.ProgressAPI.ProgressToken.ReportNodeStarted(Bee.BeeDriver.NodeResult)">
  284. <summary>
  285. ReportNodeStarted is called for each node that starts running.
  286. </summary>
  287. <param name="nodeResult">nodeResult is a dataobject that has a lot of detail about the node that just started running</param>
  288. </member>
  289. <member name="M:Bee.BeeDriver.ProgressAPI.ProgressToken.Finish">
  290. <summary>
  291. Finish will be called when the build has finished.
  292. </summary>
  293. </member>
  294. <member name="T:Bee.BeeDriver.RunnableProgram">
  295. <summary>
  296. Abstraction of runnable programs that makes it easy to test different bee driver components against fake external programs that we can easily make crash / do uncommon things
  297. </summary>
  298. </member>
  299. <member name="M:Bee.BeeDriver.RunnableProgram.Start(System.String,System.String[])">
  300. <summary>
  301. Start should start this runnable program, and return a RunningProgram derived object.
  302. </summary>
  303. </member>
  304. <member name="M:Bee.BeeDriver.RunnableProgram.StartImpl(System.String,System.String[])">
  305. <summary>
  306. StartImpl will be invoked when the user invokes Start()
  307. </summary>
  308. </member>
  309. <member name="T:Bee.BeeDriver.RunningProgram">
  310. <summary>
  311. Abstraction layer for running programs.
  312. </summary>
  313. </member>
  314. <member name="M:Bee.BeeDriver.RunningProgram.#ctor(Bee.BeeDriver.StdOutMode)">
  315. <summary>
  316. Constructor
  317. </summary>
  318. </member>
  319. <member name="P:Bee.BeeDriver.RunningProgram.HasExited">
  320. <summary>
  321. Whether or not this running program has exited
  322. </summary>
  323. </member>
  324. <member name="P:Bee.BeeDriver.RunningProgram.HasExitedImpl">
  325. <summary>
  326. This method should return wether or not your runningprogram has exited.
  327. </summary>
  328. </member>
  329. <member name="P:Bee.BeeDriver.RunningProgram.ExitCode">
  330. <summary>
  331. The exitcode this running program exited with
  332. </summary>
  333. </member>
  334. <member name="P:Bee.BeeDriver.RunningProgram.Name">
  335. <summary>
  336. The name by which to refer to this program in log messages
  337. </summary>
  338. </member>
  339. <member name="M:Bee.BeeDriver.RunningProgram.GetStdoutAndStdErrCombined">
  340. <summary>
  341. The combined stdout/stderr output of the running program that has exited
  342. </summary>
  343. </member>
  344. <member name="M:Bee.BeeDriver.RunningProgram.WaitForExit">
  345. <summary>
  346. Will return when the program has exited.
  347. </summary>
  348. </member>
  349. <member name="M:Bee.BeeDriver.RunningProgram.Abort">
  350. <summary>
  351. Aborts this running program
  352. </summary>
  353. </member>
  354. <member name="M:Bee.BeeDriver.RunningProgram.AbortImpl">
  355. <summary>
  356. AbortImpl will be invoked when the user wants to abort this process
  357. </summary>
  358. </member>
  359. <member name="M:Bee.BeeDriver.RunningProgram.CloseStandardInput">
  360. <summary>
  361. Will close the standard input stream to the process. This can be used as a cross platform mechanism to signal "your host would like you to stop running now".
  362. </summary>
  363. </member>
  364. <member name="M:Bee.BeeDriver.RunningProgram.CloseStandardInputImpl">
  365. <summary>
  366. CloseStandardInputImpl will be invoked when the user invokes CloseStandardInput()
  367. </summary>
  368. </member>
  369. <member name="T:Bee.BeeDriver.SourceFileUpdaterBase">
  370. <summary>
  371. Implement this base class to plug in a facility like the Unity script updater that is able to modify original source files based on compiler errors/warnings.
  372. </summary>
  373. </member>
  374. <member name="M:Bee.BeeDriver.SourceFileUpdaterBase.StartIfYouCanFixProblemsInTheseMessages(Bee.BeeDriver.NodeResult,Bee.BeeDriver.BeeDriver)">
  375. <summary>
  376. Implement this method to return a Task specific to your implementation that represents an ongoing process that will produce updated files.
  377. If the updater does not have anything to update, it's supposed to return null.
  378. </summary>
  379. <param name="nodeResult">The node result to analyze. typically you would look into the .stdout property.</param>
  380. <param name="beeDriver">The beeDriver doing the build.</param>
  381. ///
  382. <returns></returns>
  383. </member>
  384. <member name="T:Bee.BeeDriver.SourceFileUpdaterBase.Task">
  385. <summary>
  386. The base type that should be used for what your SourceFileUpdaterBase implementation returns from StartIfYouCanFixProblemsInTheseMessages
  387. </summary>
  388. </member>
  389. <member name="M:Bee.BeeDriver.SourceFileUpdaterBase.Task.#ctor(Bee.BeeDriver.NodeResult,System.Boolean)">
  390. <summary>
  391. Constructor
  392. </summary>
  393. <param name="nodeResult">The noderesult this task will attempt to fix</param>
  394. <param name="produceErrorIfNoUpdatesAreProduced">If we should produce an error if no updates are produced. Set this to false if you're not sure ahead of time if your updater will be able to fix the problem.</param>
  395. </member>
  396. <member name="P:Bee.BeeDriver.SourceFileUpdaterBase.Task.Finished">
  397. <summary>
  398. Whether or not this currently running updater is finished
  399. </summary>
  400. </member>
  401. <member name="M:Bee.BeeDriver.SourceFileUpdaterBase.Task.WaitUntilFinished">
  402. <summary>
  403. Block until the sourcefile updater finished
  404. </summary>
  405. </member>
  406. <member name="P:Bee.BeeDriver.SourceFileUpdaterBase.Task.NodeResult">
  407. <summary>
  408. The noderesult that has the failure this updater is trying to fix
  409. </summary>
  410. </member>
  411. <member name="P:Bee.BeeDriver.SourceFileUpdaterBase.Task.ProduceErrorIfNoUpdatesAreProduced">
  412. <summary>
  413. If we should produce an error if no updates are produced. Set this to false if you're not sure ahead of time if your updater will be able to fix the problem.
  414. </summary>
  415. </member>
  416. <member name="P:Bee.BeeDriver.SourceFileUpdaterBase.Task.Results">
  417. <summary>
  418. The results of the running of this sourcefile updater
  419. </summary>
  420. </member>
  421. <member name="M:Bee.BeeDriver.SourceFileUpdaterBase.Task.Abort">
  422. <summary>
  423. Invoking Abort will stop the running source updating proces as soon as possible
  424. </summary>
  425. </member>
  426. <member name="T:Bee.BeeDriver.SourceFileUpdaterBase.Results">
  427. <summary>
  428. Data about the results of running a sourcefile updater.
  429. </summary>
  430. </member>
  431. <member name="F:Bee.BeeDriver.SourceFileUpdaterBase.Results.ProducedUpdates">
  432. <summary>
  433. Returns the produced updates by this sourcefile updater.
  434. </summary>
  435. </member>
  436. <member name="F:Bee.BeeDriver.SourceFileUpdaterBase.Results.Messages">
  437. <summary>
  438. Returns the list of messages for this sourcefile updater. Use this to communciate errors/warnings that happened as part of the updating.
  439. </summary>
  440. </member>
  441. <member name="T:Bee.BeeDriver.SourceFileUpdaterBase.Update">
  442. <summary>
  443. A type that represents a single update the sourcefile updater has produced
  444. </summary>
  445. </member>
  446. <member name="F:Bee.BeeDriver.SourceFileUpdaterBase.Update.originalFileWithError">
  447. <summary>
  448. the original file that had the error the sourcefileupdater knows how to fix
  449. </summary>
  450. </member>
  451. <member name="F:Bee.BeeDriver.SourceFileUpdaterBase.Update.tempFileWithNewContents">
  452. <summary>
  453. the actual fixed content to be applied to the original file with error.
  454. </summary>
  455. </member>
  456. <member name="T:Bee.BeeDriver.SourceFileUpdatersResultHandler">
  457. <summary>
  458. Implementors of this base class are responsible for applying the results of all the source file updaters.
  459. The Unity implementation of this class will coordinate with the VCS integration, with Packman, and ask for user consent
  460. depending on if the sourcecode is versioned or in a package.
  461. </summary>
  462. </member>
  463. <member name="M:Bee.BeeDriver.SourceFileUpdatersResultHandler.ProcessUpdaterResults(Bee.BeeDriver.SourceFileUpdaterBase.Update[])">
  464. <summary>
  465. This method will be invoked after the beedriver has finished waiting on all running script updaters.
  466. </summary>
  467. <param name="producedUpdates">The updates that all sourcefileupdaters have produced that need to be applied</param>
  468. </member>
  469. <member name="T:Bee.BeeDriver.StdOutMode">
  470. <summary>
  471. StdOut writing behaviour for a SystemProcessRunnableProgram
  472. </summary>
  473. </member>
  474. <member name="F:Bee.BeeDriver.StdOutMode.Off">
  475. <summary>
  476. Don't log anything
  477. </summary>
  478. </member>
  479. <member name="F:Bee.BeeDriver.StdOutMode.Stream">
  480. <summary>
  481. Stream the programs stdout and stderr directly to the host process stdout/stderr
  482. </summary>
  483. </member>
  484. <member name="F:Bee.BeeDriver.StdOutMode.LogStartArgumentsAndExitcode">
  485. <summary>
  486. Write to stdout the starting arguments and exist code
  487. </summary>
  488. </member>
  489. <member name="F:Bee.BeeDriver.StdOutMode.LogStdOutOnFinish">
  490. <summary>
  491. Write to stdout the captured stdout when the program finished
  492. </summary>
  493. </member>
  494. <member name="T:Bee.BeeDriver.SystemProcessRunnableProgram">
  495. <summary>
  496. Use SystemProcessRunnableProgram to represent a normal system process that can be run.
  497. </summary>
  498. </member>
  499. <member name="M:Bee.BeeDriver.SystemProcessRunnableProgram.#ctor(System.String,System.String)">
  500. <summary>
  501. Constructor
  502. </summary>
  503. <param name="executable">The executable to run</param>
  504. <param name="alwaysArgument">Any arguments that should always be passed to the executable</param>
  505. </member>
  506. <member name="M:Bee.BeeDriver.SystemProcessRunnableProgram.#ctor(System.String,System.String[],System.Collections.Generic.Dictionary{System.String,System.String},Bee.BeeDriver.StdOutMode)">
  507. <summary>
  508. Constructor
  509. </summary>
  510. <param name="executable">The executable to run</param>
  511. <param name="alwaysArguments">Any arguments that should always be passed to the executable</param>
  512. <param name="alwaysEnvironmentVariables">Environment variables to set when running this program</param>
  513. <param name="stdOutMode">The stdout logging behaviour to use</param>
  514. </member>
  515. <member name="M:Bee.BeeDriver.SystemProcessRunnableProgram.StartImpl(System.String,System.String[])">
  516. <summary>
  517. The Start implementation.
  518. </summary>
  519. </member>
  520. <member name="T:Bee.Serialization.ObjectsToDisk">
  521. <summary>
  522. A helper class to facilitate easy typesafe data transfer between two .net processes that reference a single shared data assembly.
  523. </summary>
  524. </member>
  525. <member name="P:Bee.Serialization.ObjectsToDisk.DidWrite">
  526. <summary>
  527. Returns if Write() has already been called
  528. </summary>
  529. </member>
  530. <member name="M:Bee.Serialization.ObjectsToDisk.Add``1(``0)">
  531. <summary>
  532. Adds a csharp object as a data payload. It will be serialized and readable on the reading process through .Get()
  533. </summary>
  534. </member>
  535. <member name="M:Bee.Serialization.ObjectsToDisk.Add(System.Type,System.Object)">
  536. <summary>
  537. Adds a csharp object as a data payload. It will be serialized and readable on the reading process through .Get()
  538. </summary>
  539. </member>
  540. <member name="M:Bee.Serialization.ObjectsToDisk.Write(System.String)">
  541. <summary>
  542. Writes all the data that was Add()ed to a file
  543. </summary>
  544. </member>
  545. <member name="T:Bee.Serialization.ObjectsFromDisk">
  546. <summary>
  547. A helper class to facilitate easy typesafe data transfer between two .net processes that reference a single shared data assembly.
  548. </summary>
  549. </member>
  550. <member name="M:Bee.Serialization.ObjectsFromDisk.#ctor(System.String)">
  551. <summary>
  552. Read and deserialize a json file into an ObjectsFromDisk instance
  553. </summary>
  554. </member>
  555. <member name="M:Bee.Serialization.ObjectsFromDisk.FromString(System.String)">
  556. <summary>
  557. Read and deserialize a json string into an ObjectsFromDisk instance
  558. </summary>
  559. </member>
  560. <member name="M:Bee.Serialization.ObjectsFromDisk.Get``1">
  561. <summary>
  562. Get a deserialied csharp object from a serialized file. It must have been .Add()ed from an ObjectsToDisk class previously
  563. </summary>
  564. </member>
  565. <member name="M:Bee.Serialization.ObjectsFromDisk.TryGet``1(``0@)">
  566. <summary>
  567. Get a deserialied csharp object from a serialized file. It must have been .Add()ed from an ObjectsToDisk class previously
  568. </summary>
  569. </member>
  570. <member name="M:Bee.Serialization.ObjectsFromDisk.TryGet(System.Type,System.Object@)">
  571. <summary>
  572. Get a deserialied csharp object from a serialized file. It must have been .Add()ed from an ObjectsToDisk class previously
  573. </summary>
  574. </member>
  575. <member name="M:Bee.Serialization.ObjectsFromDisk.Get(System.Type)">
  576. <summary>
  577. Get a deserialied csharp object from a serialized file. It must have been .Add()ed from an ObjectsToDisk class previously
  578. </summary>
  579. </member>
  580. <member name="T:Bee.Core.TinyProfiler2Base">
  581. <summary>Methods shared by both <see cref="T:Bee.Core.TinyProfiler2"/>and <see cref="T:Bee.Core.Track"/></summary>
  582. </member>
  583. <member name="M:Bee.Core.TinyProfiler2Base.Section(System.String,System.Collections.Generic.Dictionary{System.String,System.String})">
  584. <summary>Profile a section tracked by an IDisposable object</summary>
  585. <remarks>TraceEvent duration is calculated the first time Dispose is called.</remarks>
  586. <param name="label">Label of what is being profiled. If omitted, this is the name of the calling function.</param>
  587. <param name="metadata">A dictionary of metadata associated with the event.</param>
  588. <returns>An IDisposable object tracking the profiled section.</returns>
  589. </member>
  590. <member name="M:Bee.Core.TinyProfiler2Base.Section(System.String,System.Action,System.Collections.Generic.Dictionary{System.String,System.String})">
  591. <summary>Profiles the submitted Action</summary>
  592. <param name="label">Label of what is being profiled.</param>
  593. <param name="action">Code to be profiled.</param>
  594. <param name="metadata">A dictionary of metadata associated with the event.</param>
  595. </member>
  596. <member name="M:Bee.Core.TinyProfiler2Base.Section``1(System.String,System.Func{``0},System.Collections.Generic.Dictionary{System.String,System.String})">
  597. <summary>Profiles the submitted Func</summary>
  598. <param name="label">Label of what is being profiled.</param>
  599. <param name="func">Code to be profiled.</param>
  600. <param name="metadata">A dictionary of metadata associated with the event.</param>
  601. </member>
  602. <member name="M:Bee.Core.TinyProfiler2Base.Section(System.Action,System.Collections.Generic.Dictionary{System.String,System.String},System.String)">
  603. <summary>Profiles the submitted Action</summary>
  604. <param name="action">Code to be profiled.</param>
  605. <param name="metadata">A dictionary of metadata associated with the event.</param>
  606. <param name="label">Default initialized to calling member name</param>
  607. </member>
  608. <member name="M:Bee.Core.TinyProfiler2Base.Section``1(System.Func{``0},System.Collections.Generic.Dictionary{System.String,System.String},System.String)">
  609. <summary>Profiles the submitted Func</summary>
  610. <param name="func">Code to be profiled.</param>
  611. <param name="metadata">A dictionary of metadata associated with the event.</param>
  612. <param name="label">Default initialized to calling member name</param>
  613. </member>
  614. <member name="T:Bee.Core.TinyProfiler2">
  615. <summary>A profiler capable of emitting a chrome trace report</summary>
  616. <remarks>
  617. </remarks>
  618. </member>
  619. <member name="P:Bee.Core.TinyProfiler2.Global">
  620. <summary>Global profiler instance</summary>
  621. </member>
  622. <member name="M:Bee.Core.TinyProfiler2.ResetGlobalInstance">
  623. <summary>Resets the global instance</summary>
  624. </member>
  625. <member name="P:Bee.Core.TinyProfiler2.StartTime">
  626. <summary>Absolute time of profiler instantiation</summary>
  627. <remarks>Can be used to align event timestamps from other systems to this profiler instance.</remarks>
  628. </member>
  629. <member name="P:Bee.Core.TinyProfiler2.ElapsedProfilerTime">
  630. <summary>Time that has passed since profiler instantiation</summary>
  631. </member>
  632. <member name="P:Bee.Core.TinyProfiler2.CurrentThreadTrack">
  633. <summary>Get or implicitly create a track for the current thread</summary>
  634. <remarks>A track need at least one event to be visible in the chrome trace report</remarks>
  635. </member>
  636. <member name="P:Bee.Core.TinyProfiler2.DefaultOptions">
  637. Default options for writing a chrome trace report
  638. </member>
  639. <member name="M:Bee.Core.TinyProfiler2.#ctor">
  640. <summary>Create a new profiler instance</summary>
  641. </member>
  642. <member name="M:Bee.Core.TinyProfiler2.SetupNewTrack(System.String)">
  643. <summary>Setup a new track</summary>
  644. <remarks>
  645. A track for the most common use case represents a thread.
  646. But a user can also explicitly setup a track to hold submitted events and sections.</remarks>
  647. <param name="trackName">Name of the track</param>
  648. <returns>An instance assigned to the created track</returns>
  649. </member>
  650. <member name="M:Bee.Core.TinyProfiler2.AddExternalTraceEventsFile(System.String)">
  651. <summary>Add .traceevents file to be included in the report</summary>
  652. <param name="traceEventsFile">Path to .traceevents file</param>
  653. </member>
  654. <member name="M:Bee.Core.TinyProfiler2.AddExternalTraceEventsFile(System.Threading.Tasks.Task{System.String})">
  655. <summary>Add .traceevents file to be included in the report</summary>
  656. <remarks>
  657. This function allow you to pass a Task returning the file instead of the file itself.
  658. Using this you can start writing out the profile data, before all ExternalTraceFiles are ready.
  659. ExternalTraceFiles are consumed as late as possible and only when ready.
  660. </remarks>
  661. <param name="traceEventsFile">Task to be completed before appending .traceevents file to the report</param>
  662. </member>
  663. <member name="M:Bee.Core.TinyProfiler2.Write(System.String,Bee.Core.ChromeTraceOptions)">
  664. <summary>Write a chrome trace events to stream</summary>
  665. <remarks>
  666. If the extension of the file passed is '.traceevents' this method will invoke WriteChromeTraceEvents(), otherwise it will call WriteChromeTrace()
  667. See <see cref="F:Bee.Core.ChromeTraceOptions.ExternalTraceEventFiles"/>.
  668. </remarks>
  669. <param name="file">output file</param>
  670. <param name="options">chrome trace serialization options</param>
  671. </member>
  672. <member name="M:Bee.Core.TinyProfiler2.WriteChromeTrace(System.String,Bee.Core.ChromeTraceOptions)">
  673. <summary>Write a chrome trace report data to file</summary>
  674. <param name="file">output file</param>
  675. <param name="options">chrome trace serialization options</param>
  676. </member>
  677. <member name="M:Bee.Core.TinyProfiler2.WriteChromeTraceEvents(System.String,Bee.Core.ChromeTraceOptions)">
  678. <summary>Write a chrome trace events to stream</summary>
  679. <remarks>
  680. This is a list of trace events that can later be concatenated with reports from other processes or sessions.
  681. See <see cref="F:Bee.Core.ChromeTraceOptions.ExternalTraceEventFiles"/>.
  682. </remarks>
  683. <param name="file">output file</param>
  684. <param name="options">chrome trace serialization options</param>
  685. </member>
  686. <member name="M:Bee.Core.TinyProfiler2.WriteChromeTrace(System.IO.TextWriter,Bee.Core.ChromeTraceOptions)">
  687. <summary>Write a chrome trace report data to stream</summary>
  688. <param name="output">output stream</param>
  689. <param name="options">chrome trace serialization options</param>
  690. </member>
  691. <member name="M:Bee.Core.TinyProfiler2.WriteChromeTraceEvents(System.IO.TextWriter,Bee.Core.ChromeTraceOptions)">
  692. <summary>Write a chrome trace events to stream</summary>
  693. <remarks>
  694. This is a list of trace events that can later be concatenated with reports from other processes or sessions.
  695. See <see cref="F:Bee.Core.ChromeTraceOptions.ExternalTraceEventFiles"/>.
  696. </remarks>
  697. <param name="output">output stream</param>
  698. <param name="options">chrome trace serialization options</param>
  699. </member>
  700. <member name="T:Bee.Core.Track">
  701. <summary>A track in the chrome trace report is the same as "lane" or "thread"</summary>
  702. <remarks>
  703. A track is either an explicitly created track <see cref="M:Bee.Core.TinyProfiler2.SetupNewTrack(System.String)"/> or implicitly created
  704. for the current thread <see cref="P:Bee.Core.TinyProfiler2.CurrentThreadTrack"/>.
  705. Note that when creating events manually using an external clock source. Make sure timestamp is relative to <see cref="P:Bee.Core.Track.ProfilerStartTime"/>.
  706. One way to do that is to use <see cref="M:Bee.Core.Track.CreateEvent(System.DateTimeOffset,System.String,System.Collections.Generic.Dictionary{System.String,System.String})"/>.
  707. </remarks>
  708. </member>
  709. <member name="P:Bee.Core.Track.Id">
  710. <summary>Track Id</summary>
  711. <remarks>
  712. Explicitly created tracks use upper 32 bits to generate unique ids while thread tracks use the lower 32 bits
  713. to store <see cref="P:System.Threading.Thread.ManagedThreadId"/>
  714. </remarks>
  715. </member>
  716. <member name="P:Bee.Core.Track.Name">
  717. <summary>Name of the track</summary>
  718. <remarks>Thread tracks copy <see cref="P:System.Threading.Thread.Name"/> at the time of track creation</remarks>
  719. </member>
  720. <member name="P:Bee.Core.Track.ElapsedProfilerTime">
  721. <summary>Time that has elapsed since the profiler was instantiated</summary>
  722. </member>
  723. <member name="P:Bee.Core.Track.ProfilerStartTime">
  724. <summary>Time of profiler instantiation</summary>
  725. </member>
  726. <member name="M:Bee.Core.Track.#ctor(System.Threading.Thread,Bee.Core.TinyProfiler2)">
  727. <summary>Create track from thread</summary>
  728. <param name="thread"></param>
  729. <param name="profiler"></param>
  730. </member>
  731. <member name="M:Bee.Core.Track.#ctor(System.String,Bee.Core.TinyProfiler2)">
  732. <summary>Create track from name</summary>
  733. <param name="name"></param>
  734. <param name="profiler"></param>
  735. </member>
  736. <member name="M:Bee.Core.Track.CreateEvent(System.TimeSpan,System.String,System.Collections.Generic.Dictionary{System.String,System.String})">
  737. <summary>Create and register a trace event with the profiler</summary>
  738. <remarks>Duration can be set after the fact.</remarks>
  739. <param name="timestamp">Start time of the event. This should be relative instantiation time of the profiler. In most cases <see cref="P:Bee.Core.Track.ProfilerStartTime"/>.</param>
  740. <param name="label">Label of what is being profiled. If omitted, this is the name of the calling function.</param>
  741. <param name="metadata">A dictionary of metadata associated with the event.</param>
  742. <returns>A trace event initialized according to parameters</returns>
  743. </member>
  744. <member name="M:Bee.Core.Track.CreateEvent(System.String,System.Collections.Generic.Dictionary{System.String,System.String})">
  745. <summary>Create and register a trace event with the profiler</summary>
  746. <remarks>
  747. Timestamp of the event will be set to current time at event creation.
  748. Duration can be set after the fact.
  749. </remarks>
  750. <param name="label">Label of what is being profiled. If omitted, this is the name of the calling function.</param>
  751. <param name="metadata">A dictionary of metadata associated with the event.</param>
  752. <returns>A trace event initialized according to parameters</returns>
  753. </member>
  754. <member name="M:Bee.Core.Track.CreateEvent(System.DateTimeOffset,System.String,System.Collections.Generic.Dictionary{System.String,System.String})">
  755. <summary>Create and register a trace event with the profiler</summary>
  756. <remarks>Mainly intended for externally occuring events. Duration can be set after the fact.</remarks>
  757. <param name="timestamp">Start time of the event.</param>
  758. <param name="label">Label of what is being profiled. If omitted, this is the name of the calling function.</param>
  759. <param name="metadata">A dictionary of metadata associated with the event.</param>
  760. <returns>A trace event initialized according to parameters</returns>
  761. </member>
  762. <member name="M:Bee.Core.Track.SetEventDuration(Bee.Core.TraceEvent,System.TimeSpan)">
  763. <summary>Sets duration of the TraceEvent</summary>
  764. <param name="traceEvent">The event to receive duration</param>
  765. <param name="duration">Duration of the event</param>
  766. <returns>The event</returns>
  767. </member>
  768. <member name="M:Bee.Core.Track.SetEventDurationBasedOnCurrentTime(Bee.Core.TraceEvent)">
  769. <summary>Sets duration of the TraceEvent to ElapsedProfilerTime - event start time</summary>
  770. <param name="traceEvent">The event to receive duration</param>
  771. <returns>The event</returns>
  772. </member>
  773. <member name="M:Bee.Core.Track.SetEventDurationBasedOnEndTime(Bee.Core.TraceEvent,System.DateTimeOffset)">
  774. <summary>Sets duration of the TraceEvent to endTime - event start time</summary>
  775. <remarks>Mainly intended for externally occuring events and paired with <see cref="M:Bee.Core.Track.CreateEvent(System.TimeSpan,System.String,System.Collections.Generic.Dictionary{System.String,System.String})"/></remarks>
  776. <param name="traceEvent">The event to receive duration</param>
  777. <param name="endTime">Time when the event ended</param>
  778. <returns>The event</returns>
  779. </member>
  780. <member name="T:Bee.Core.TraceEvent">
  781. <summary>TraceEvent</summary>
  782. </member>
  783. <member name="T:Bee.Core.ChromeTraceOptions">
  784. <summary>Chrome trace serialization options</summary>
  785. </member>
  786. <member name="F:Bee.Core.ChromeTraceOptions.EventDurationThreshold">
  787. <summary>If an event has a duration less than this it will be excluded from the report</summary>
  788. <remarks>1 microsecond is default</remarks>
  789. </member>
  790. <member name="F:Bee.Core.ChromeTraceOptions.ProcessId">
  791. <summary>Id of the process</summary>
  792. <remarks>Defaults to current process id.</remarks>
  793. </member>
  794. <member name="F:Bee.Core.ChromeTraceOptions.ProcessName">
  795. <summary>Process name as seen in the chrome trace UI</summary>
  796. <remarks>Defaults to entry assembly name.</remarks>
  797. </member>
  798. <member name="F:Bee.Core.ChromeTraceOptions.ProcessSortIndex">
  799. <summary>Process sort index</summary>
  800. <remarks>
  801. This index decide how different processes are sorted in the chrome trace report.
  802. Lower indices, including negative ones are sorted topmost.
  803. </remarks>
  804. </member>
  805. <member name="F:Bee.Core.ChromeTraceOptions.ExternalTraceEventFiles">
  806. <summary>Additional trace event files</summary>
  807. <remarks>
  808. Any additional trace event files that should be merged with the current report.
  809. You need to pass a Task returning the file instead of the file itself.
  810. For more info: <see cref="M:Bee.Core.TinyProfiler2.AddExternalTraceEventsFile(System.Threading.Tasks.Task{System.String})"/>.
  811. </remarks>
  812. </member>
  813. <member name="F:Bee.Core.ChromeTraceOptions.HeaderMetadata">
  814. <summary>
  815. A dictionary of metadata about the machine that will be emitted in the header
  816. </summary>
  817. </member>
  818. <member name="T:Bee.Core.SectionDisposable">
  819. <summary>IDisposable struct that records duration on <see cref="M:Bee.Core.SectionDisposable.Dispose"/></summary>
  820. </member>
  821. <member name="M:Bee.Core.SectionDisposable.Dispose">
  822. <summary>Record duration</summary>
  823. </member>
  824. <member name="T:Bee.Core.TraceEventsData">
  825. <summary>TraceEvents data</summary>
  826. <remarks>
  827. We keep structs in a separate array from managed references to create less GC pressure.
  828. We also keep a separate a regular list for Metadata as we assume that usage of metadata is rare and by using a
  829. regular list we can create our own sparse array.
  830. </remarks>
  831. </member>
  832. <member name="T:Bee.Core.ChromeTrace">
  833. <summary>ChromeTrace is responsible for json serialization of TraceEvent data</summary>
  834. <remarks>
  835. The implementation is highly specific to the profiler implementation and should not be seen in any way as a
  836. general purpose utility.
  837. </remarks>
  838. </member>
  839. <member name="T:Bee.Core.BucketArray`1">
  840. <summary>BucketArray is optimized for quick lookup and insert</summary>
  841. <remarks>
  842. BucketArray will only lock the first time an entry is inserted into a bucket. Bucket sizes grow exponentially.
  843. For an initial bucket size of 1024 that means there are at most 21 buckets for a 32 bit integer range.
  844. Note! get by index isn't protected, which means it's undefined behavior to access an item not previously written.
  845. It may throw a NullReferenceException or return default(T) depending on the situation.
  846. </remarks>
  847. </member>
  848. <member name="T:NiceIO.NPath">
  849. <summary>
  850. A filesystem path.
  851. </summary>
  852. <remarks>
  853. The path can be absolute or relative; the entity it refers to could be a file or a directory, and may or may not
  854. actually exist in the filesystem.
  855. </remarks>
  856. </member>
  857. <member name="M:NiceIO.NPath.#ctor(System.String)">
  858. <summary>
  859. Create a new NPath.
  860. </summary>
  861. <param name="path">The path that this NPath should represent.</param>
  862. </member>
  863. <member name="M:NiceIO.NPath.Combine(System.String)">
  864. <summary>
  865. Create a new NPath by appending a path fragment.
  866. </summary>
  867. <param name="append">The path fragment to append. This can be a filename, or a whole relative path.</param>
  868. <returns>A new NPath which is the existing path with the fragment appended.</returns>
  869. </member>
  870. <member name="M:NiceIO.NPath.Combine(System.String,System.String)">
  871. <summary>
  872. Create a new NPath by appending two path fragments, one after the other.
  873. </summary>
  874. <param name="append1">The first path fragment to append.</param>
  875. <param name="append2">The second path fragment to append.</param>
  876. <returns>A new NPath which is the existing path with the first fragment appended, then the second fragment appended.</returns>
  877. </member>
  878. <member name="M:NiceIO.NPath.Combine(NiceIO.NPath)">
  879. <summary>
  880. Create a new NPath by appending a path fragment.
  881. </summary>
  882. <param name="append">The path fragment to append.</param>
  883. <returns>A new NPath which is the existing path with the fragment appended.</returns>
  884. </member>
  885. <member name="M:NiceIO.NPath.Combine(NiceIO.NPath[])">
  886. <summary>
  887. Create a new NPath by appending multiple path fragments.
  888. </summary>
  889. <param name="append">The path fragments to append, in order.</param>
  890. <returns>A new NPath which is this existing path with all the supplied path fragments appended, in order.</returns>
  891. </member>
  892. <member name="P:NiceIO.NPath.Parent">
  893. <summary>
  894. The parent path fragment (i.e. the directory) of the path.
  895. </summary>
  896. </member>
  897. <member name="M:NiceIO.NPath.RelativeTo(NiceIO.NPath)">
  898. <summary>
  899. Create a new NPath by computing the existing path relative to some other base path.
  900. </summary>
  901. <param name="path">The base path that the result should be relative to.</param>
  902. <returns>A new NPath, which refers to the same target as the existing path, but is described relative to the given base path.</returns>
  903. </member>
  904. <member name="M:NiceIO.NPath.ChangeExtension(System.String)">
  905. <summary>
  906. Create an NPath by changing the extension of this one.
  907. </summary>
  908. <param name="extension">The new extension to use. Starting it with a "." character is optional. If you pass an empty string, the resulting path will have the extension stripped entirely, including the dot character.</param>
  909. <returns>A new NPath which is the existing path but with the new extension at the end.</returns>
  910. </member>
  911. <member name="P:NiceIO.NPath.IsRelative">
  912. <summary>
  913. Whether this path is relative (i.e. not absolute) or not.
  914. </summary>
  915. </member>
  916. <member name="P:NiceIO.NPath.FileName">
  917. <summary>
  918. The name of the file or directory given at the end of this path, including any extension.
  919. </summary>
  920. </member>
  921. <member name="P:NiceIO.NPath.FileNameWithoutExtension">
  922. <summary>
  923. The name of the file or directory given at the end of this path, excluding the extension.
  924. </summary>
  925. </member>
  926. <member name="M:NiceIO.NPath.HasDirectory(System.String)">
  927. <summary>
  928. Determines whether the given path is, or is a child of, a directory with the given name.
  929. </summary>
  930. <param name="dir">The name of the directory to search for.</param>
  931. <returns>True if the path describes a file/directory that is or is a child of a directory with the given name; false otherwise.</returns>
  932. </member>
  933. <member name="P:NiceIO.NPath.Depth">
  934. <summary>
  935. The depth of the path, determined by the number of path separators present.
  936. </summary>
  937. </member>
  938. <member name="P:NiceIO.NPath.IsCurrentDir">
  939. <summary>
  940. Tests whether the path is the current directory string ".".
  941. </summary>
  942. </member>
  943. <member name="M:NiceIO.NPath.Exists(NiceIO.NPath)">
  944. <summary>
  945. Tests whether the path exists.
  946. </summary>
  947. <param name="append">An optional path fragment to append before testing.</param>
  948. <returns>True if the path (with optional appended fragment) exists, false otherwise.</returns>
  949. </member>
  950. <member name="M:NiceIO.NPath.DirectoryExists(NiceIO.NPath)">
  951. <summary>
  952. Tests whether the path exists and is a directory.
  953. </summary>
  954. <param name="append">An optional path fragment to append before testing.</param>
  955. <returns>True if the path (with optional appended fragment) exists and is a directory, false otherwise.</returns>
  956. </member>
  957. <member name="M:NiceIO.NPath.FileExists(NiceIO.NPath)">
  958. <summary>
  959. Tests whether the path exists and is a file.
  960. </summary>
  961. <param name="append">An optional path fragment to append before testing.</param>
  962. <returns>True if the path (with optional appended fragment) exists and is a file, false otherwise.</returns>
  963. </member>
  964. <member name="P:NiceIO.NPath.Extension">
  965. <summary>
  966. The extension of the file, excluding the initial "." character.
  967. </summary>
  968. </member>
  969. <member name="P:NiceIO.NPath.UNCServerName">
  970. <summary>
  971. UNC server name of the path, if present. Null if not present.
  972. </summary>
  973. </member>
  974. <member name="P:NiceIO.NPath.DriveLetter">
  975. <summary>
  976. The Windows drive letter of the path, if present. Null if not present.
  977. </summary>
  978. </member>
  979. <member name="M:NiceIO.NPath.InQuotes(NiceIO.SlashMode)">
  980. <summary>
  981. Provides a quoted version of the path as a string, with the requested path separator type.
  982. </summary>
  983. <param name="slashMode">The path separator to use. See the <see cref="T:NiceIO.SlashMode">SlashMode</see> enum for an explanation of the values. Defaults to <c>SlashMode.Forward</c>.</param>
  984. <returns>The path, with the requested path separator type, in quotes.</returns>
  985. </member>
  986. <member name="M:NiceIO.NPath.ToString">
  987. <summary>
  988. Convert this path to a string, using forward slashes as path separators.
  989. </summary>
  990. <returns>The string representation of this path.</returns>
  991. </member>
  992. <member name="M:NiceIO.NPath.ToString(NiceIO.SlashMode)">
  993. <summary>
  994. Convert this path to a string, using the requested path separator type.
  995. </summary>
  996. <param name="slashMode">The path separator type to use. See <see cref="T:NiceIO.SlashMode">SlashMode</see> for possible values.</param>
  997. <returns>The string representation of this path.</returns>
  998. </member>
  999. <member name="M:NiceIO.NPath.Equals(System.Object)">
  1000. <summary>
  1001. Checks if this NPath represents the same path as another object.
  1002. </summary>
  1003. <param name="obj">The object to compare to.</param>
  1004. <returns>True if this NPath represents the same path as the other object; false if it does not, if the other object is not an NPath, or is null.</returns>
  1005. </member>
  1006. <member name="M:NiceIO.NPath.Equals(NiceIO.NPath)">
  1007. <summary>
  1008. Checks if this NPath is equal to another NPath.
  1009. </summary>
  1010. <param name="p">The path to compare to.</param>
  1011. <returns>True if this NPath represents the same path as the other NPath; false otherwise.</returns>
  1012. <remarks>Note that the comparison requires that the paths are the same, not just that the targets are the same; "foo/bar" and "foo/baz/../bar" refer to the same target but will not be treated as equal by this comparison. However, this comparison will ignore case differences when the current operating system does not use case-sensitive filesystems.</remarks>
  1013. </member>
  1014. <member name="M:NiceIO.NPath.op_Equality(NiceIO.NPath,NiceIO.NPath)">
  1015. <summary>
  1016. Compare two NPaths for equality.
  1017. </summary>
  1018. <param name="a">The first NPath to compare.</param>
  1019. <param name="b">The second NPath to compare.</param>
  1020. <returns>True if the NPaths are both equal (or both null), false otherwise. See <see cref="M:NiceIO.NPath.Equals(NiceIO.NPath)">Equals.</see></returns>
  1021. </member>
  1022. <member name="M:NiceIO.NPath.GetHashCode">
  1023. <summary>
  1024. Get an appropriate hash value for this NPath.
  1025. </summary>
  1026. <returns>A hash value for this NPath.</returns>
  1027. </member>
  1028. <member name="M:NiceIO.NPath.CompareTo(System.Object)">
  1029. <summary>
  1030. Compare this NPath to another NPath, returning a value that can be used to sort the two objects in a stable order.
  1031. </summary>
  1032. <param name="obj">The object to compare to. Note that this object must be castable to NPath.</param>
  1033. <returns>A value that indicates the relative order of the two objects. The return value has these meanings:
  1034. <list type="table">
  1035. <listheader><term>Value</term><description>Meaning</description></listheader>
  1036. <item><term>Less than zero</term><description>This instance precedes <c>obj</c> in the sort order.</description></item>
  1037. <item><term>Zero</term><description>This instance occurs in the same position as <c>obj</c> in the sort order.</description></item>
  1038. <item><term>Greater than zero</term><description>This instance follows <c>obj</c> in the sort order.</description></item>
  1039. </list>
  1040. </returns>
  1041. </member>
  1042. <member name="M:NiceIO.NPath.op_Inequality(NiceIO.NPath,NiceIO.NPath)">
  1043. <summary>
  1044. Compare two NPaths for inequality.
  1045. </summary>
  1046. <param name="a">The first NPath to compare.</param>
  1047. <param name="b">The second NPath to compare.</param>
  1048. <returns>True if the NPaths are not equal, false otherwise.</returns>
  1049. </member>
  1050. <member name="M:NiceIO.NPath.HasExtension(System.String)">
  1051. <summary>
  1052. Tests whether this NPath has the provided extension.
  1053. </summary>
  1054. <param name="extension">The extension to test for.</param>
  1055. <returns>True if this NPath has has the provided extension. False otherwise.</returns>
  1056. <remarks>The extension "*" is special, and will return true for all paths if specified.</remarks>
  1057. </member>
  1058. <member name="M:NiceIO.NPath.HasExtension(System.String[])">
  1059. <summary>
  1060. Tests whether this NPath has one of the provided extensions, or if no extensions are provided, whether it has any extension at all.
  1061. </summary>
  1062. <param name="extensions">The possible extensions to test for.</param>
  1063. <returns>True if this NPath has one of the provided extensions; or, if no extensions are provided, true if this NPath has an extension. False otherwise.</returns>
  1064. <remarks>The extension "*" is special, and will return true for all paths if specified.</remarks>
  1065. </member>
  1066. <member name="P:NiceIO.NPath.IsRoot">
  1067. <summary>
  1068. Whether this path is rooted or not (begins with a slash character or drive specifier).
  1069. </summary>
  1070. </member>
  1071. <member name="P:NiceIO.NPath.IsUNC">
  1072. <summary>
  1073. Whether this path starts with an UNC path prefix "\\" or not.
  1074. </summary>
  1075. </member>
  1076. <member name="M:NiceIO.NPath.Files(System.String,System.Boolean)">
  1077. <summary>
  1078. Find all files within this path that match the given filter.
  1079. </summary>
  1080. <param name="filter">The filter to match against the names of files. Wildcards can be included.</param>
  1081. <param name="recurse">If true, search recursively inside subdirectories of this path; if false, search only for files that are immediate children of this path. Defaults to false.</param>
  1082. <returns>An array of files that were found.</returns>
  1083. </member>
  1084. <member name="M:NiceIO.NPath.Files(System.Boolean)">
  1085. <summary>
  1086. Find all files within this path.
  1087. </summary>
  1088. <param name="recurse">If true, search recursively inside subdirectories of this path; if false, search only for files that are immediate children of this path. Defaults to false.</param>
  1089. <returns>An array of files that were found.</returns>
  1090. </member>
  1091. <member name="M:NiceIO.NPath.Files(System.String[],System.Boolean)">
  1092. <summary>
  1093. Find all files within this path that have one of the provided extensions.
  1094. </summary>
  1095. <param name="extensions">The extensions to search for.</param>
  1096. <param name="recurse">If true, search recursively inside subdirectories of this path; if false, search only for files that are immediate children of this path. Defaults to false.</param>
  1097. <returns>An array of files that were found.</returns>
  1098. </member>
  1099. <member name="M:NiceIO.NPath.Contents(System.String,System.Boolean)">
  1100. <summary>
  1101. Find all files or directories within this path that match the given filter.
  1102. </summary>
  1103. <param name="filter">The filter to match against the names of files and directories. Wildcards can be included.</param>
  1104. <param name="recurse">If true, search recursively inside subdirectories of this path; if false, search only for files and directories that are immediate children of this path. Defaults to false.</param>
  1105. <returns>An array of files and directories that were found.</returns>
  1106. </member>
  1107. <member name="M:NiceIO.NPath.Contents(System.Boolean)">
  1108. <summary>
  1109. Find all files and directories within this path.
  1110. </summary>
  1111. <param name="recurse">If true, search recursively inside subdirectories of this path; if false, search only for files and directories that are immediate children of this path. Defaults to false.</param>
  1112. <returns>An array of files and directories that were found.</returns>
  1113. </member>
  1114. <member name="M:NiceIO.NPath.Directories(System.String,System.Boolean)">
  1115. <summary>
  1116. Find all directories within this path that match the given filter.
  1117. </summary>
  1118. <param name="filter">The filter to match against the names of directories. Wildcards can be included.</param>
  1119. <param name="recurse">If true, search recursively inside subdirectories of this path; if false, search only for directories that are immediate children of this path. Defaults to false.</param>
  1120. <returns>An array of directories that were found.</returns>
  1121. </member>
  1122. <member name="M:NiceIO.NPath.Directories(System.Boolean)">
  1123. <summary>
  1124. Find all directories within this path.
  1125. </summary>
  1126. <param name="recurse">If true, search recursively inside subdirectories of this path; if false, search only for directories that are immediate children of this path. Defaults to false.</param>
  1127. <returns>An array of directories that were found.</returns>
  1128. </member>
  1129. <member name="M:NiceIO.NPath.CreateFile">
  1130. <summary>
  1131. Create an empty file at this path.
  1132. </summary>
  1133. <returns>This NPath, for chaining further operations.</returns>
  1134. <remarks>If a file already exists at this path, it will be overwritten.</remarks>
  1135. </member>
  1136. <member name="M:NiceIO.NPath.CreateFile(NiceIO.NPath)">
  1137. <summary>
  1138. Append the given path fragment to this path, and create an empty file there.
  1139. </summary>
  1140. <param name="file">The path fragment to append.</param>
  1141. <returns>The path to the created file, for chaining further operations.</returns>
  1142. <remarks>If a file already exists at that path, it will be overwritten.</remarks>
  1143. </member>
  1144. <member name="M:NiceIO.NPath.CreateDirectory">
  1145. <summary>
  1146. Create this path as a directory if it does not already exist.
  1147. </summary>
  1148. <returns>This NPath, for chaining further operations.</returns>
  1149. <remark>This is identical to <see cref="M:NiceIO.NPath.EnsureDirectoryExists(NiceIO.NPath)"/>, except that EnsureDirectoryExists triggers "Stat" callbacks and this doesn't.</remark>
  1150. </member>
  1151. <member name="M:NiceIO.NPath.CreateDirectory(NiceIO.NPath)">
  1152. <summary>
  1153. Append the given path fragment to this path, and create it as a directory if it does not already exist.
  1154. </summary>
  1155. <param name="directory">The path fragment to append.</param>
  1156. <returns>The path to the created directory, for chaining further operations.</returns>
  1157. </member>
  1158. <member name="M:NiceIO.NPath.CreateSymbolicLink(NiceIO.NPath,System.Boolean)">
  1159. <summary>
  1160. Create this path as a symbolic link to another file or directory.
  1161. </summary>
  1162. <param name="targetPath">The path that this path should be a symbolic link to. Can be relative or absolute.</param>
  1163. <param name="targetIsFile">Specifies whether this link is to a file or to a directory (required on Windows). Defaults to file.</param>
  1164. <returns>The path to the created symbolic link, for chaining further operations.</returns>
  1165. </member>
  1166. <member name="P:NiceIO.NPath.IsSymbolicLink">
  1167. <summary>
  1168. Checks whether the entity referred to by this path is a symbolic link.
  1169. </summary>
  1170. </member>
  1171. <member name="M:NiceIO.NPath.Copy(NiceIO.NPath)">
  1172. <summary>
  1173. Copy this NPath to the given destination.
  1174. </summary>
  1175. <param name="dest">The path to copy to.</param>
  1176. <returns>The path to the copied result, for chaining further operations.</returns>
  1177. </member>
  1178. <member name="M:NiceIO.NPath.Copy(NiceIO.NPath,System.Func{NiceIO.NPath,System.Boolean})">
  1179. <summary>
  1180. Copy this NPath to the given destination, applying a filter function to decide which files are copied.
  1181. </summary>
  1182. <param name="dest">The path to copy to.</param>
  1183. <param name="fileFilter">The filter function. Each candidate file is passed to this function; if the function returns true, the file will be copied, otherwise it will not.</param>
  1184. <returns></returns>
  1185. </member>
  1186. <member name="M:NiceIO.NPath.MakeAbsolute(NiceIO.NPath)">
  1187. <summary>
  1188. Create a new NPath by converting this path into an absolute representation.
  1189. </summary>
  1190. <param name="base">Optional base to use as a root for relative paths.</param>
  1191. <returns></returns>
  1192. </member>
  1193. <member name="M:NiceIO.NPath.Delete(NiceIO.DeleteMode)">
  1194. <summary>
  1195. Deletes the file or directory referred to by the NPath.
  1196. </summary>
  1197. <param name="deleteMode">The deletion mode to use, see <see cref="T:NiceIO.DeleteMode">DeleteMode.</see> Defaults to DeleteMode.Normal.</param>
  1198. <exception cref="T:System.InvalidOperationException">The path does not exist. See also <see cref="M:NiceIO.NPath.DeleteIfExists(NiceIO.DeleteMode)">DeleteIfExists</see>.</exception>
  1199. </member>
  1200. <member name="M:NiceIO.NPath.DeleteIfExists(NiceIO.DeleteMode)">
  1201. <summary>
  1202. Deletes the file or directory referred to by the NPath, if it exists.
  1203. </summary>
  1204. <param name="deleteMode">The deletion mode to use, see <see cref="T:NiceIO.DeleteMode">DeleteMode.</see> Defaults to DeleteMode.Normal.</param>
  1205. <returns>This NPath, for chaining further operations.</returns>
  1206. </member>
  1207. <member name="M:NiceIO.NPath.DeleteContents">
  1208. <summary>
  1209. Deletes all files and directories inside the directory referred to by this NPath.
  1210. </summary>
  1211. <returns>This NPath, for chaining further operations.</returns>
  1212. <exception cref="T:System.InvalidOperationException">This NPath refers to a file, rather than a directory.</exception>
  1213. </member>
  1214. <member name="M:NiceIO.NPath.CreateTempDirectory(System.String)">
  1215. <summary>
  1216. Create a temporary directory in the system temporary location and return the NPath of it.
  1217. </summary>
  1218. <param name="prefix">A prefix to use for the name of the temporary directory.</param>
  1219. <returns>A new NPath which targets the newly created temporary directory.</returns>
  1220. </member>
  1221. <member name="M:NiceIO.NPath.Move(NiceIO.NPath)">
  1222. <summary>
  1223. Move the file or directory targetted by this NPath to a new location.
  1224. </summary>
  1225. <param name="dest">The destination for the move.</param>
  1226. <returns>An NPath representing the newly moved file or directory.</returns>
  1227. </member>
  1228. <member name="P:NiceIO.NPath.CurrentDirectory">
  1229. <summary>
  1230. The current directory in use by the process.
  1231. </summary>
  1232. <remarks>Note that every read from this property will result in an operating system query, unless <see cref="M:NiceIO.NPath.WithFrozenCurrentDirectory(NiceIO.NPath)">WithFrozenCurrentDirectory</see> is used.</remarks>
  1233. </member>
  1234. <member name="M:NiceIO.NPath.SetCurrentDirectory(NiceIO.NPath)">
  1235. <summary>
  1236. Temporarily change the current directory for the process.
  1237. </summary>
  1238. <param name="directory">The new directory to set as the current directory.</param>
  1239. <returns>A token representing the change in current directory. When this is disposed, the current directory will be returned to its previous value. The usual usage pattern is to capture the token with a <c>using</c> statement, such that it is automatically disposed of when the <c>using</c> block exits.</returns>
  1240. </member>
  1241. <member name="P:NiceIO.NPath.HomeDirectory">
  1242. <summary>
  1243. The current user's home directory.
  1244. </summary>
  1245. </member>
  1246. <member name="P:NiceIO.NPath.SystemTemp">
  1247. <summary>
  1248. The system temporary directory.
  1249. </summary>
  1250. </member>
  1251. <member name="M:NiceIO.NPath.EnsureDirectoryExists(NiceIO.NPath)">
  1252. <summary>
  1253. Append an optional path fragment to this NPath, then create it as a directory if it does not already exist.
  1254. </summary>
  1255. <param name="append">The path fragment to append.</param>
  1256. <returns>The path to the directory that is now guaranteed to exist.</returns>
  1257. <remark>This is identical to <see cref="M:NiceIO.NPath.CreateDirectory"/>, except that this triggers "Stat" callbacks and CreateDirectory doesn't.</remark>
  1258. </member>
  1259. <member name="M:NiceIO.NPath.EnsureParentDirectoryExists">
  1260. <summary>
  1261. Create the parent directory of this NPath if it does not already exist.
  1262. </summary>
  1263. <returns>This NPath, for chaining further operations.</returns>
  1264. </member>
  1265. <member name="M:NiceIO.NPath.FileMustExist">
  1266. <summary>
  1267. Throw an exception if this path does not exist as a file.
  1268. </summary>
  1269. <returns>This path, in order to chain further operations.</returns>
  1270. <exception cref="T:System.IO.FileNotFoundException">The path does not exist, or is not a file.</exception>
  1271. </member>
  1272. <member name="M:NiceIO.NPath.DirectoryMustExist">
  1273. <summary>
  1274. Throw an exception if this directory does not exist.
  1275. </summary>
  1276. <returns>This path, in order to chain further operations.</returns>
  1277. <exception cref="T:System.IO.FileNotFoundException">The path does not exist, or is not a directory.</exception>
  1278. </member>
  1279. <member name="M:NiceIO.NPath.IsChildOf(NiceIO.NPath)">
  1280. <summary>
  1281. Check if this path is a child of the given path hierarchy root (i.e. is a file or directory that is inside the given hierachy root directory or one of its descendent directories).
  1282. </summary>
  1283. <param name="potentialBasePath">The path hierarchy root to check.</param>
  1284. <returns>True if this path is a child of the given root path, false otherwise.</returns>
  1285. </member>
  1286. <member name="M:NiceIO.NPath.IsSameAsOrChildOf(NiceIO.NPath)">
  1287. <summary>
  1288. Check if this path is a child of the given path hierarchy root (i.e. is a file or directory that is inside the given hierachy root directory or one of its descendent directories), or is equal to it.
  1289. </summary>
  1290. <param name="potentialBasePath">The path hierarchy root to check.</param>
  1291. <returns>True if this path is equal to or is a child of the given root path, false otherwise.</returns>
  1292. </member>
  1293. <member name="P:NiceIO.NPath.RecursiveParents">
  1294. <summary>
  1295. Return each parent directory of this path, starting with the immediate parent, then that directory's parent, and so on, until the root of the path is reached.
  1296. </summary>
  1297. </member>
  1298. <member name="M:NiceIO.NPath.ParentContaining(NiceIO.NPath)">
  1299. <summary>
  1300. Search all parent directories of this path for one that contains a file or directory with the given name.
  1301. </summary>
  1302. <param name="needle">The name of the file or directory to search for.</param>
  1303. <returns>The path to the parent directory that contains the file or directory, or null if none of the parents contained a file or directory with the requested name.</returns>
  1304. </member>
  1305. <member name="M:NiceIO.NPath.WriteAllText(System.String)">
  1306. <summary>
  1307. Open this path as a text file, write the given string to it, then close the file.
  1308. </summary>
  1309. <param name="contents">The string to write to the text file.</param>
  1310. <returns>The path to this file, for use in chaining further operations.</returns>
  1311. </member>
  1312. <member name="M:NiceIO.NPath.ReplaceAllText(System.String)">
  1313. <summary>
  1314. Open this file as a text file, and replace the contents with the provided string, if they do not already match. Then close the file.
  1315. </summary>
  1316. <param name="contents">The string to replace the file's contents with.</param>
  1317. <returns>The path to this file, for use in chaining further operations.</returns>
  1318. <remarks>Note that if the contents of the file already match the provided string, the file is not modified - this includes not modifying the file's "last written" timestamp.</remarks>
  1319. </member>
  1320. <member name="M:NiceIO.NPath.WriteAllBytes(System.Byte[])">
  1321. <summary>
  1322. Open this path as a file, write the given bytes to it, then close the file.
  1323. </summary>
  1324. <param name="bytes">The bytes to write to the file.</param>
  1325. <returns>The path to this file, for use in chaining further operations.</returns>
  1326. </member>
  1327. <member name="M:NiceIO.NPath.ReadAllText">
  1328. <summary>
  1329. Opens a text file, reads all the text in the file into a single string, then closes the file.
  1330. </summary>
  1331. <returns>The contents of the text file, as a single string.</returns>
  1332. </member>
  1333. <member name="M:NiceIO.NPath.ReadAllBytes">
  1334. <summary>
  1335. Opens a file, reads all the bytes in the file, then closes the file.
  1336. </summary>
  1337. <returns>The contents of the file, as a bytes array.</returns>
  1338. </member>
  1339. <member name="M:NiceIO.NPath.WriteAllLines(System.String[])">
  1340. <summary>
  1341. Opens a text file, writes all entries of a string array as separate lines into the file, then closes the file.
  1342. </summary>
  1343. <param name="contents">The entries to write into the file as separate lines.</param>
  1344. <returns>The path to this file.</returns>
  1345. </member>
  1346. <member name="M:NiceIO.NPath.ReadAllLines">
  1347. <summary>
  1348. Opens a text file, reads all lines of the file into a string array, and then closes the file.
  1349. </summary>
  1350. <returns>A string array containing all lines of the file.</returns>
  1351. </member>
  1352. <member name="M:NiceIO.NPath.CopyFiles(NiceIO.NPath,System.Boolean,System.Func{NiceIO.NPath,System.Boolean})">
  1353. <summary>
  1354. Copy all files in this NPath to the given destination directory.
  1355. </summary>
  1356. <param name="destination">The directory to copy the files to.</param>
  1357. <param name="recurse">If true, files inside subdirectories of this NPath will also be copied. If false, only immediate child files of this NPath will be copied.</param>
  1358. <param name="fileFilter">An optional predicate function that can be used to filter files. It is passed each source file path in turn, and if it returns true, the file is copied; otherwise, the file is not copied.</param>
  1359. <returns>The paths to all the newly copied files.</returns>
  1360. <remarks>Note that the directory structure of the files relative to this NPath will be preserved within the target directory.</remarks>
  1361. </member>
  1362. <member name="M:NiceIO.NPath.MoveFiles(NiceIO.NPath,System.Boolean,System.Func{NiceIO.NPath,System.Boolean})">
  1363. <summary>
  1364. Move all files in this NPath to the given destination directory.
  1365. </summary>
  1366. <param name="destination">The directory to move the files to.</param>
  1367. <param name="recurse">If true, files inside subdirectories of this NPath will also be moved. If false, only immediate child files of this NPath will be moved.</param>
  1368. <param name="fileFilter">An optional predicate function that can be used to filter files. It is passed each source file path in turn, and if it returns true, the file is moved; otherwise, the file is not moved.</param>
  1369. <returns>The paths to all the newly moved files.</returns>
  1370. <remarks>Note that the directory structure of the files relative to this NPath will be preserved within the target directory.</remarks>
  1371. </member>
  1372. <member name="M:NiceIO.NPath.op_Implicit(System.String)~NiceIO.NPath">
  1373. <summary>
  1374. Implicitly construct a new NPath from a string.
  1375. </summary>
  1376. <param name="input">The string to construct the new NPath from.</param>
  1377. </member>
  1378. <member name="M:NiceIO.NPath.SetLastWriteTimeUtc(System.DateTime)">
  1379. <summary>
  1380. Set the last time the file was written to, in UTC.
  1381. </summary>
  1382. <returns>The last time the file was written to, in UTC.</returns>
  1383. <remarks>This is set automatically by the OS when the file is modified, but it can sometimes be useful
  1384. to explicitly update the timestamp without modifying the file contents.</remarks>
  1385. </member>
  1386. <member name="M:NiceIO.NPath.GetLastWriteTimeUtc">
  1387. <summary>
  1388. Get the last time the file was written to, in UTC.
  1389. </summary>
  1390. <returns>The last time the file was written to, in UTC.</returns>
  1391. </member>
  1392. <member name="M:NiceIO.NPath.GetFileSize">
  1393. <summary>
  1394. Get the file length in bytes.
  1395. </summary>
  1396. <returns>The file length in bytes.</returns>
  1397. </member>
  1398. <member name="P:NiceIO.NPath.Attributes">
  1399. <summary>
  1400. The filesystem attributes of the given file, assuming it exists. Note that when you set this property, the
  1401. OS may still modify the the actual attributes of the file beyond what you requested, so setting and then
  1402. getting the property is not guaranteed to roundtrip the value. Note also that some attributes (e.g.
  1403. FileAttributes.Hidden) are not supported on every OS, and may throw exceptions or simply be ignored.
  1404. </summary>
  1405. </member>
  1406. <member name="M:NiceIO.NPath.WithFileSystem(NiceIO.NPath.FileSystem)">
  1407. <summary>
  1408. Until .Dispose is invoked on the returnvalue, makes all NPath's on this thread use the provided filesystem implementation for all filesystem access.
  1409. </summary>
  1410. <param name="fileSystem"></param>
  1411. <returns>An object you can invoke .Dispose() on, which will make all NPath filesystem operations stop using the provided filesystem</returns>
  1412. </member>
  1413. <member name="M:NiceIO.NPath.ResolveWithFileSystem">
  1414. <summary>
  1415. Lets the currently active filesystem resolve the path.
  1416. </summary>
  1417. <returns></returns>
  1418. </member>
  1419. <member name="M:NiceIO.NPath.InQuotesResolved(NiceIO.SlashMode)">
  1420. <summary>
  1421. Shorthand for .ResolveWithFileSystem.InQuotes()
  1422. </summary>
  1423. <param name="slashMode"></param>
  1424. <returns></returns>
  1425. </member>
  1426. <member name="T:NiceIO.NPath.FileSystem">
  1427. <summary>
  1428. Abstract baseclass you can use to plug in different underlying filesystem behaviour for NPath to operate on
  1429. </summary>
  1430. </member>
  1431. <member name="P:NiceIO.NPath.FileSystem.Active">
  1432. <summary>
  1433. The currently active filesystem for NPath operations. Set this using NPath.WithFileSystem()
  1434. </summary>
  1435. </member>
  1436. <member name="M:NiceIO.NPath.FileSystem.Dispose">
  1437. <inheritdoc />
  1438. </member>
  1439. <member name="M:NiceIO.NPath.FileSystem.Resolve(NiceIO.NPath)">
  1440. <summary>
  1441. If your filesystem does any kind of redirection or other magic, Resolve() is required to return the path that can be used against the raw lowlevel filesystem of the OS.
  1442. </summary>
  1443. <param name="path">The path to resolve</param>
  1444. <returns>The resolved path that is valid to use against the OS's real filesystem</returns>
  1445. </member>
  1446. <member name="T:NiceIO.NPath.RelayingFileSystem">
  1447. <summary>
  1448. A Filesystem that forwards all calls to another filesytem. Derive your own filesystem from this if you only want to
  1449. change the behaviour of a few methods.
  1450. </summary>
  1451. </member>
  1452. <member name="P:NiceIO.NPath.RelayingFileSystem.BaseFileSystem">
  1453. <summary>
  1454. The filesystem all methods will be forwarded to
  1455. </summary>
  1456. </member>
  1457. <member name="M:NiceIO.NPath.RelayingFileSystem.#ctor(NiceIO.NPath.FileSystem)">
  1458. <summary>
  1459. Constructor
  1460. </summary>
  1461. <param name="baseFileSystem">the filesystem all calls will be forwarded to</param>
  1462. </member>
  1463. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_GetFiles(NiceIO.NPath,System.String,System.IO.SearchOption)">
  1464. <inheritdoc />
  1465. </member>
  1466. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_Exists(NiceIO.NPath)">
  1467. <inheritdoc />
  1468. </member>
  1469. <member name="M:NiceIO.NPath.RelayingFileSystem.File_Exists(NiceIO.NPath)">
  1470. <inheritdoc />
  1471. </member>
  1472. <member name="M:NiceIO.NPath.RelayingFileSystem.File_WriteAllBytes(NiceIO.NPath,System.Byte[])">
  1473. <inheritdoc />
  1474. </member>
  1475. <member name="M:NiceIO.NPath.RelayingFileSystem.File_Copy(NiceIO.NPath,NiceIO.NPath,System.Boolean)">
  1476. <inheritdoc />
  1477. </member>
  1478. <member name="M:NiceIO.NPath.RelayingFileSystem.File_Delete(NiceIO.NPath)">
  1479. <inheritdoc />
  1480. </member>
  1481. <member name="M:NiceIO.NPath.RelayingFileSystem.File_Move(NiceIO.NPath,NiceIO.NPath)">
  1482. <inheritdoc />
  1483. </member>
  1484. <member name="M:NiceIO.NPath.RelayingFileSystem.File_WriteAllText(NiceIO.NPath,System.String)">
  1485. <inheritdoc />
  1486. </member>
  1487. <member name="M:NiceIO.NPath.RelayingFileSystem.File_ReadAllText(NiceIO.NPath)">
  1488. <inheritdoc />
  1489. </member>
  1490. <member name="M:NiceIO.NPath.RelayingFileSystem.File_WriteAllLines(NiceIO.NPath,System.String[])">
  1491. <inheritdoc />
  1492. </member>
  1493. <member name="M:NiceIO.NPath.RelayingFileSystem.File_ReadAllLines(NiceIO.NPath)">
  1494. <inheritdoc />
  1495. </member>
  1496. <member name="M:NiceIO.NPath.RelayingFileSystem.File_ReadAllBytes(NiceIO.NPath)">
  1497. <inheritdoc />
  1498. </member>
  1499. <member name="M:NiceIO.NPath.RelayingFileSystem.File_SetLastWriteTimeUtc(NiceIO.NPath,System.DateTime)">
  1500. <inheritdoc />
  1501. </member>
  1502. <member name="M:NiceIO.NPath.RelayingFileSystem.File_GetLastWriteTimeUtc(NiceIO.NPath)">
  1503. <inheritdoc />
  1504. </member>
  1505. <member name="M:NiceIO.NPath.RelayingFileSystem.File_SetAttributes(NiceIO.NPath,System.IO.FileAttributes)">
  1506. <inheritdoc />
  1507. </member>
  1508. <member name="M:NiceIO.NPath.RelayingFileSystem.File_GetAttributes(NiceIO.NPath)">
  1509. <inheritdoc />
  1510. </member>
  1511. <member name="M:NiceIO.NPath.RelayingFileSystem.File_GetSize(NiceIO.NPath)">
  1512. <inheritdoc />
  1513. </member>
  1514. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_CreateDirectory(NiceIO.NPath)">
  1515. <inheritdoc />
  1516. </member>
  1517. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_Delete(NiceIO.NPath,System.Boolean)">
  1518. <inheritdoc />
  1519. </member>
  1520. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_Move(NiceIO.NPath,NiceIO.NPath)">
  1521. <inheritdoc />
  1522. </member>
  1523. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_GetCurrentDirectory">
  1524. <inheritdoc />
  1525. </member>
  1526. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_SetCurrentDirectory(NiceIO.NPath)">
  1527. <inheritdoc />
  1528. </member>
  1529. <member name="M:NiceIO.NPath.RelayingFileSystem.Directory_GetDirectories(NiceIO.NPath,System.String,System.IO.SearchOption)">
  1530. <inheritdoc />
  1531. </member>
  1532. <member name="M:NiceIO.NPath.RelayingFileSystem.Resolve(NiceIO.NPath)">
  1533. <inheritdoc />
  1534. </member>
  1535. <member name="M:NiceIO.NPath.RelayingFileSystem.IsSymbolicLink(NiceIO.NPath)">
  1536. <inheritdoc />
  1537. </member>
  1538. <member name="M:NiceIO.NPath.RelayingFileSystem.CreateSymbolicLink(NiceIO.NPath,NiceIO.NPath,System.Boolean)">
  1539. <inheritdoc />
  1540. </member>
  1541. <member name="M:NiceIO.NPath.WithFrozenCurrentDirectory(NiceIO.NPath)">
  1542. <summary>
  1543. Temporarily assume that the current directory is a given value, instead of querying it from the environment when needed, in order to improve performance.
  1544. </summary>
  1545. <param name="frozenCurrentDirectory">The current directory to assume.</param>
  1546. <returns>A token representing the registered callback. This should be disposed of when the assumption is no longer required. The usual usage pattern is to capture the token with a <c>using</c> statement, such that it is automatically disposed of when the <c>using</c> block exits.</returns>
  1547. </member>
  1548. <member name="T:NiceIO.Extensions">
  1549. <summary>
  1550. NPath-related extension methods for other common types.
  1551. </summary>
  1552. </member>
  1553. <member name="M:NiceIO.Extensions.Copy(System.Collections.Generic.IEnumerable{NiceIO.NPath},NiceIO.NPath)">
  1554. <summary>
  1555. Copy these NPaths into the given directory.
  1556. </summary>
  1557. <param name="self">An enumerable sequence of NPaths.</param>
  1558. <param name="dest">The path to the target directory.</param>
  1559. <returns>The paths to the newly copied files.</returns>
  1560. <remarks>All path information in the source paths is ignored, other than the final file name; the resulting copied files and directories will all be immediate children of the target directory.</remarks>
  1561. </member>
  1562. <member name="M:NiceIO.Extensions.Move(System.Collections.Generic.IEnumerable{NiceIO.NPath},NiceIO.NPath)">
  1563. <summary>
  1564. Move these NPaths into the given directory.
  1565. </summary>
  1566. <param name="self">An enumerable sequence of NPaths.</param>
  1567. <param name="dest">The path to the target directory.</param>
  1568. <returns>The paths to the newly moved files.</returns>
  1569. <remarks>All path information in the source paths is ignored, other than the final file name; the resulting moved files and directories will all be immediate children of the target directory.</remarks>
  1570. </member>
  1571. <member name="M:NiceIO.Extensions.Delete(System.Collections.Generic.IEnumerable{NiceIO.NPath})">
  1572. <summary>
  1573. Delete the files/directories targetted by these paths.
  1574. </summary>
  1575. <param name="self">The paths to delete.</param>
  1576. <returns>All paths that were passed in to the method.</returns>
  1577. </member>
  1578. <member name="M:NiceIO.Extensions.InQuotes(System.Collections.Generic.IEnumerable{NiceIO.NPath},NiceIO.SlashMode)">
  1579. <summary>
  1580. Convert all these paths to quoted strings, using the requested path separator type.
  1581. </summary>
  1582. <param name="self">The paths to convert.</param>
  1583. <param name="slashMode">The path separator type to use. Defaults to <c>SlashMode.Forward</c>.</param>
  1584. <returns>The paths, converted to quoted strings.</returns>
  1585. </member>
  1586. <member name="M:NiceIO.Extensions.ToNPath(System.String)">
  1587. <summary>
  1588. Construct a new NPath from this string.
  1589. </summary>
  1590. <param name="path">The string to construct the path from.</param>
  1591. <returns>A new NPath constructed from this string.</returns>
  1592. </member>
  1593. <member name="M:NiceIO.Extensions.ToNPaths(System.Collections.Generic.IEnumerable{System.String})">
  1594. <summary>
  1595. Construct new NPaths from each of these strings.
  1596. </summary>
  1597. <param name="paths">The strings to construct NPaths from.</param>
  1598. <returns>The newly constructed NPaths.</returns>
  1599. </member>
  1600. <member name="M:NiceIO.Extensions.ResolveWithFileSystem(System.Collections.Generic.IEnumerable{NiceIO.NPath})">
  1601. <summary>
  1602. Invokes .ResolveWithFileSystem on all NPaths
  1603. </summary>
  1604. <param name="paths"></param>
  1605. <returns></returns>
  1606. </member>
  1607. <member name="M:NiceIO.Extensions.InQuotesResolved(System.Collections.Generic.IEnumerable{NiceIO.NPath})">
  1608. <summary>
  1609. Invokes InQuotesResolved on all NPaths
  1610. </summary>
  1611. <param name="paths"></param>
  1612. <returns></returns>
  1613. </member>
  1614. <member name="T:NiceIO.SlashMode">
  1615. <summary>
  1616. Describes the different kinds of path separators that can be used when converting NPaths back into strings.
  1617. </summary>
  1618. </member>
  1619. <member name="F:NiceIO.SlashMode.Native">
  1620. <summary>
  1621. Use the slash mode that is native for the current platform - backslashes on Windows, forward slashes on macOS and Linux systems.
  1622. </summary>
  1623. </member>
  1624. <member name="F:NiceIO.SlashMode.Forward">
  1625. <summary>
  1626. Use forward slashes as path separators.
  1627. </summary>
  1628. </member>
  1629. <member name="F:NiceIO.SlashMode.Backward">
  1630. <summary>
  1631. Use backslashes as path separators.
  1632. </summary>
  1633. </member>
  1634. <member name="T:NiceIO.DeleteMode">
  1635. <summary>
  1636. Specifies the way that directory deletion should be performed.
  1637. </summary>
  1638. </member>
  1639. <member name="F:NiceIO.DeleteMode.Normal">
  1640. <summary>
  1641. When deleting a directory, if an IOException occurs, rethrow it.
  1642. </summary>
  1643. </member>
  1644. <member name="F:NiceIO.DeleteMode.Soft">
  1645. <summary>
  1646. When deleting a directory, if an IOException occurs, ignore it. The deletion request may or may not be later fulfilled by the OS.
  1647. </summary>
  1648. </member>
  1649. </members>
  1650. </doc>