Prechádzať zdrojové kódy

Updated to latest Docusaurus.
Tweaked generation.
Fixed some issues.
Added Steam and Crypto.

woollybah 5 rokov pred
rodič
commit
270a31db2a
100 zmenil súbory, kde vykonal 4265 pridanie a 569 odobranie
  1. 1 1
      docs/api/brl/brl.audio/tchannel.md
  2. 5 5
      docs/api/brl/brl.audio/tsound.md
  3. 1 1
      docs/api/brl/brl.bank/tbank.md
  4. 1 1
      docs/api/brl/brl.blitz/tarrayboundsexception.md
  5. 12 0
      docs/api/brl/brl.blitz/tinvalidenumexception.md
  6. 1 1
      docs/api/brl/brl.blitz/truntimeexception.md
  7. 150 0
      docs/api/brl/brl.clipboard/tclipboard.md
  8. 0 17
      docs/api/brl/brl.crypto/tcryptohashkey.md
  9. 0 17
      docs/api/brl/brl.crypto/tcryptosecretboxkey.md
  10. 1 1
      docs/api/brl/brl.event/tevent.md
  11. 224 0
      docs/api/brl/brl.jconv/tjconv.md
  12. 62 0
      docs/api/brl/brl.jconv/tjconvbuilder.md
  13. 9 0
      docs/api/brl/brl.jconv/tjconvserializer.md
  14. 3 3
      docs/api/brl/brl.json/tjson.md
  15. 17 0
      docs/api/brl/brl.json/tjsonarray.md
  16. 8 0
      docs/api/brl/brl.json/tjsonbool.md
  17. 1 1
      docs/api/brl/brl.json/tjsonobject.md
  18. 743 0
      docs/api/brl/brl.linkedlist/tlist.md
  19. 1 1
      docs/api/brl/brl.map/tintkey.md
  20. 5 5
      docs/api/brl/brl.map/tintmap.md
  21. 6 6
      docs/api/brl/brl.map/tmap.md
  22. 1 1
      docs/api/brl/brl.map/tptrkey.md
  23. 5 5
      docs/api/brl/brl.map/tptrmap.md
  24. 5 5
      docs/api/brl/brl.map/tstringmap.md
  25. 1 1
      docs/api/brl/brl.maxlua/tluaobject.md
  26. 9 0
      docs/api/brl/brl.maxunit/assertionfailedexception.md
  27. 184 0
      docs/api/brl/brl.maxunit/tassert.md
  28. 24 0
      docs/api/brl/brl.maxunit/ttest.md
  29. 17 0
      docs/api/brl/brl.maxunit/ttestsuite.md
  30. 178 0
      docs/api/brl/brl.objectlist/tobjectlist.md
  31. 9 0
      docs/api/brl/brl.objectlist/tobjectlistenumerator.md
  32. 12 0
      docs/api/brl/brl.objectlist/tobjectlistreverseenumerator.md
  33. 2 2
      docs/api/brl/brl.pixmap/tpixmaploader.md
  34. 3 3
      docs/api/brl/brl.random/trandom.md
  35. 124 10
      docs/api/brl/brl.reflection/tfield.md
  36. 6 0
      docs/api/brl/brl.reflection/tmember.md
  37. 182 2
      docs/api/brl/brl.reflection/ttypeid.md
  38. 1 1
      docs/api/brl/brl.stream/tcstream.md
  39. 13 0
      docs/api/brl/brl.stream/tio.md
  40. 3 3
      docs/api/brl/brl.stream/tstream.md
  41. 4 4
      docs/api/brl/brl.stream/tstreamfactory.md
  42. 1 1
      docs/api/brl/brl.stringbuilder/tsplitbuffer.md
  43. 301 6
      docs/api/brl/brl.stringbuilder/tstringbuilder.md
  44. 6 0
      docs/api/brl/brl.threads/tcondvar.md
  45. 6 0
      docs/api/brl/brl.threads/tsemaphore.md
  46. 63 0
      docs/api/brl/brl.timer/tchrono.md
  47. 20 1
      docs/api/brl/brl.vector/svec2d.md
  48. 7 1
      docs/api/brl/brl.vector/svec2f.md
  49. 13 1
      docs/api/brl/brl.vector/svec2i.md
  50. 6 0
      docs/api/brl/brl.vector/svec3d.md
  51. 6 0
      docs/api/brl/brl.vector/svec3f.md
  52. 12 0
      docs/api/brl/brl.vector/svec3i.md
  53. 3 3
      docs/api/brl/brl.xml/txmldoc.md
  54. 1 1
      docs/api/brl/brl.xml/txmlnode.md
  55. 17 17
      docs/api/brl/brl_audio.md
  56. 2 2
      docs/api/brl/brl_audiosample.md
  57. 14 14
      docs/api/brl/brl_bank.md
  58. 2 2
      docs/api/brl/brl_bankstream.md
  59. 236 1
      docs/api/brl/brl_clipboard.md
  60. 1 1
      docs/api/brl/brl_d3d7max2d.md
  61. 1 1
      docs/api/brl/brl_d3d9max2d.md
  62. 1 1
      docs/api/brl/brl_directsoundaudio.md
  63. 11 20
      docs/api/brl/brl_endianstream.md
  64. 7 6
      docs/api/brl/brl_event.md
  65. 22 22
      docs/api/brl/brl_eventqueue.md
  66. 21 21
      docs/api/brl/brl_filesystem.md
  67. 1 1
      docs/api/brl/brl_freeaudioaudio.md
  68. 8 8
      docs/api/brl/brl_glgraphics.md
  69. 1 1
      docs/api/brl/brl_glmax2d.md
  70. 41 34
      docs/api/brl/brl_gnet.md
  71. 40 34
      docs/api/brl/brl_graphics.md
  72. 8 8
      docs/api/brl/brl_hook.md
  73. 14 0
      docs/api/brl/brl_jconv.md
  74. 2 2
      docs/api/brl/brl_jpgloader.md
  75. 6 0
      docs/api/brl/brl_json.md
  76. 465 14
      docs/api/brl/brl_linkedlist.md
  77. 5 5
      docs/api/brl/brl_map.md
  78. 155 0
      docs/api/brl/brl_math.md
  79. 111 106
      docs/api/brl/brl_max2d.md
  80. 103 0
      docs/api/brl/brl_maxunit.md
  81. 14 0
      docs/api/brl/brl_objectlist.md
  82. 1 1
      docs/api/brl/brl_openalaudio.md
  83. 17 17
      docs/api/brl/brl_pixmap.md
  84. 2 2
      docs/api/brl/brl_pngloader.md
  85. 6 8
      docs/api/brl/brl_polledinput.md
  86. 1 1
      docs/api/brl/brl_ramstream.md
  87. 6 9
      docs/api/brl/brl_random.md
  88. 0 2
      docs/api/brl/brl_reflection.md
  89. 4 4
      docs/api/brl/brl_retro.md
  90. 6 6
      docs/api/brl/brl_socket.md
  91. 4 4
      docs/api/brl/brl_standardio.md
  92. 60 29
      docs/api/brl/brl_stream.md
  93. 13 13
      docs/api/brl/brl_system.md
  94. 7 6
      docs/api/brl/brl_textstream.md
  95. 10 10
      docs/api/brl/brl_threads.md
  96. 8 3
      docs/api/brl/brl_timer.md
  97. 69 0
      docs/api/brl/brl_uuid.md
  98. 215 21
      docs/api/brl/brl_volumes.md
  99. 47 0
      docs/api/crypto/crypto.crc32/tcrc32.md
  100. 1 1
      docs/api/crypto/crypto.crypto/tcryptoexchangekeypair.md

+ 1 - 1
docs/api/brl/brl.audio/tchannel.md

@@ -99,7 +99,7 @@ cause the audio channel to play at double speed (ie: an octave up).
 Determine whether audio channel is playing
 Determine whether audio channel is playing
 
 
 
 
-[Playing](../../../brl/brl.audio/tchannel/#method-playing-int) will return False if the audio channel is either paused, or has been stopped
+[Playing](../../../brl/brl.audio/tchannel/#method-playingint) will return False if the audio channel is either paused, or has been stopped
 using [Stop](../../../brl/brl.audio/tchannel/#method-stop).
 using [Stop](../../../brl/brl.audio/tchannel/#method-stop).
 
 
 
 

+ 5 - 5
docs/api/brl/brl.audio/tsound.md

@@ -43,7 +43,7 @@ Play the sound
 
 
 
 
 Starts a sound playing through an audio channel.
 Starts a sound playing through an audio channel.
-If no channel is specified, [Play](../../../brl/brl.audio/tsound/#method-play-tchannel-alloced-channel-tchannel-null) automatically allocates a channel for you.
+If no channel is specified, [Play](../../../brl/brl.audio/tsound/#method-playtchannel-allocedchanneltchannelnull-) automatically allocates a channel for you.
 
 
 
 
 #### Returns
 #### Returns
@@ -77,10 +77,10 @@ Cue the sound for playback
 
 
 
 
 Prepares an audio channel for playback of a sound.
 Prepares an audio channel for playback of a sound.
-To actually start the sound, you must use the channel's [SetPaused](../../../brl/brl.audio/tchannel/#method-setpaused-paused-int) method.
-If no channel is specified, [Cue](../../../brl/brl.audio/tsound/#method-cue-tchannel-alloced-channel-tchannel-null) automatically allocates a channel for you.
+To actually start the sound, you must use the channel's [SetPaused](../../../brl/brl.audio/tchannel/#method-setpaused-pausedint-) method.
+If no channel is specified, [Cue](../../../brl/brl.audio/tsound/#method-cuetchannel-allocedchanneltchannelnull-) automatically allocates a channel for you.
 
 
-[Cue](../../../brl/brl.audio/tsound/#method-cue-tchannel-alloced-channel-tchannel-null) allows you to setup various audio channel states such as volume, pan, depth and rate before a sound
+[Cue](../../../brl/brl.audio/tsound/#method-cuetchannel-allocedchanneltchannelnull-) allows you to setup various audio channel states such as volume, pan, depth and rate before a sound
 actually starts playing.
 actually starts playing.
 
 
 
 
@@ -124,7 +124,7 @@ Load sound
 
 
 
 
 <b>url</b> can be either a string, a stream or an audio sample object.
 <b>url</b> can be either a string, a stream or an audio sample object.
-The returned sound object can be played using [Play](../../../brl/brl.audio/tsound/#method-play-tchannel-alloced-channel-tchannel-null) or [Cue](../../../brl/brl.audio/tsound/#method-cue-tchannel-alloced-channel-tchannel-null).
+The returned sound object can be played using [Play](../../../brl/brl.audio/tsound/#method-playtchannel-allocedchanneltchannelnull-) or [Cue](../../../brl/brl.audio/tsound/#method-cuetchannel-allocedchanneltchannelnull-).
 
 
 
 
 #### Returns
 #### Returns

+ 1 - 1
docs/api/brl/brl.bank/tbank.md

@@ -14,7 +14,7 @@ Memory bank
 Get a bank's memory pointer
 Get a bank's memory pointer
 
 
 
 
-Please use [Lock](../../../brl/brl.bank/tbank/#method-lock-byte-ptr) and [Unlock](../../../brl/brl.bank/tbank/#method-unlock) instead of this method.
+Please use [Lock](../../../brl/brl.bank/tbank/#method-lockbyte-ptr) and [Unlock](../../../brl/brl.bank/tbank/#method-unlock) instead of this method.
 
 
 
 
 #### Returns
 #### Returns

+ 1 - 1
docs/api/brl/brl.blitz/tarrayboundsexception.md

@@ -4,7 +4,7 @@ title: TArrayBoundsException
 sidebar_label: TArrayBoundsException
 sidebar_label: TArrayBoundsException
 ---
 ---
 
 
-Null method exception
+Array bounds exception
 
 
 
 
 Thrown when an array element with an index outside the valid range of the array (0 to array.length-1) is accessed. (only in debug mode)
 Thrown when an array element with an index outside the valid range of the array (0 to array.length-1) is accessed. (only in debug mode)

+ 12 - 0
docs/api/brl/brl.blitz/tinvalidenumexception.md

@@ -0,0 +1,12 @@
+---
+id: tinvalidenumexception
+title: TInvalidEnumException
+sidebar_label: TInvalidEnumException
+---
+
+Invalid enum exception
+
+
+Thrown when attempting to cast an invalid value to an [Enum](../../../brl/brl.blitz/#enum). (only in debug mode)
+
+

+ 1 - 1
docs/api/brl/brl.blitz/truntimeexception.md

@@ -7,6 +7,6 @@ sidebar_label: TRuntimeException
 Runtime exception
 Runtime exception
 
 
 
 
-Thrown by [RuntimeError](../../../brl/brl.blitz/#function-runtimeerror-message).
+Thrown by [RuntimeError](../../../brl/brl.blitz/#function-runtimeerror-message-).
 
 
 
 

+ 150 - 0
docs/api/brl/brl.clipboard/tclipboard.md

@@ -17,12 +17,48 @@ Creates a new clipboard instance.
 The clipboard instance, or Null on failure.
 The clipboard instance, or Null on failure.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = New TClipboard.Create()
+
+' print out currently hold text
+print "current: " + clipboard.Text()
+
+' try to set a new text
+If clipboard.SetText("TEST") Then
+	print "set: " + clipboard.Text()
+EndIf
+```
 <br/>
 <br/>
 
 
 ### `Method Clear(clipboardMode:Int = LCB_CLIPBOARD)`
 ### `Method Clear(clipboardMode:Int = LCB_CLIPBOARD)`
 
 
 Clears the contents of the given clipboard.
 Clears the contents of the given clipboard.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = new TClipboard.Create()
+
+' empty the clipboard
+clipboard.Clear()
+
+print "content: ~q" + clipboard.Text() + "~q"
+
+'output:
+'content: ""
+```
 <br/>
 <br/>
 
 
 ### `Method HasOwnership:Int(clipboardMode:Int = LCB_CLIPBOARD)`
 ### `Method HasOwnership:Int(clipboardMode:Int = LCB_CLIPBOARD)`
@@ -33,6 +69,28 @@ Determines if the clipboard content is currently owned.
 [True](../../../brl/brl.blitz/#true) if the clipboard data is owned by the provided instance.
 [True](../../../brl/brl.blitz/#true) if the clipboard data is owned by the provided instance.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = new TClipboard.Create()
+
+' clipboard mode can be:
+' LCB_CLIPBOARD = The primary (global) clipboard [default mode]
+' LCB_PRIMARY = The (global) mouse selection clipboard.
+' LCB_SECONDARY = The largely unused (global) secondary selection clipboard.
+Local clipboardMode:int = LCB_CLIPBOARD
+
+If clipboard.HasOwnerShip(clipboardMode)
+	print "clipboard content created by us"
+Else
+	print "clipboard content of another application"
+EndIf
+```
 <br/>
 <br/>
 
 
 ### `Method Text:String()`
 ### `Method Text:String()`
@@ -43,6 +101,24 @@ Retrieves the text currently held on the clipboard.
 A copy to the retrieved text.
 A copy to the retrieved text.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = New TClipboard.Create()
+
+' try to set a new text
+If clipboard.SetText("TEST") Then
+	Print clipboard.Text()
+EndIf
+
+'output:
+'TEST
+```
 <br/>
 <br/>
 
 
 ### `Method TextEx:String(length:Int Var, clipboardMode:Int = LCB_CLIPBOARD)`
 ### `Method TextEx:String(length:Int Var, clipboardMode:Int = LCB_CLIPBOARD)`
@@ -56,6 +132,34 @@ Retrieves the text currently held on the clipboard.
 A copy to the retrieved text.
 A copy to the retrieved text.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = New TClipboard.Create()
+
+' clipboard mode can be:
+' LCB_CLIPBOARD = The primary (global) clipboard [default mode]
+' LCB_PRIMARY = The (global) mouse selection clipboard.
+' LCB_SECONDARY = The largely unused (global) secondary selection clipboard.
+Local clipboardMode:Int = LCB_CLIPBOARD
+' variable to hold text length when fetching text with TextEx()
+Local textLength:Int
+
+' try to set a new text
+If clipboard.SetTextEx("TEST", clipboardMode) Then
+	Print clipboard.TextEx(textLength, clipboardMode)
+	Print "length of clipboard content: " + textLength
+EndIf
+
+'output:
+'TEST
+'length of clipboard content: 4
+```
 <br/>
 <br/>
 
 
 ### `Method SetText:Int(src:String)`
 ### `Method SetText:Int(src:String)`
@@ -66,6 +170,24 @@ Sets the text for the clipboard.
 [True](../../../brl/brl.blitz/#true) if the clipboard was set (#false on error).
 [True](../../../brl/brl.blitz/#true) if the clipboard was set (#false on error).
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = New TClipboard.Create()
+
+' try to set a new text
+If clipboard.SetText("TEST") Then
+	Print clipboard.Text(clipboard)
+EndIf
+
+'output:
+'TEST
+```
 <br/>
 <br/>
 
 
 ### `Method SetTextEx:Int(src:String, clipboardMode:Int = LCB_CLIPBOARD)`
 ### `Method SetTextEx:Int(src:String, clipboardMode:Int = LCB_CLIPBOARD)`
@@ -76,6 +198,34 @@ Sets the text for the clipboard.
 [True](../../../brl/brl.blitz/#true) if the clipboard was set (#false on error).
 [True](../../../brl/brl.blitz/#true) if the clipboard was set (#false on error).
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = New TClipboard.Create()
+
+' clipboard mode can be:
+' LCB_CLIPBOARD = The primary (global) clipboard [default mode]
+' LCB_PRIMARY = The (global) mouse selection clipboard.
+' LCB_SECONDARY = The largely unused (global) secondary selection clipboard.
+Local clipboardMode:Int = LCB_CLIPBOARD
+' variable to hold text length when fetching text with TextEx()
+Local textLength:Int
+
+' try to set a new text
+If clipboard.SetTextEx("TEST", clipboardMode) Then
+	Print clipboard.TextEx(textLength, clipboardMode)
+	Print "length of clipboard content: " + textLength
+EndIf
+
+'output:
+'TEST
+'length of clipboard content: 4
+```
 <br/>
 <br/>
 
 
 ### `Method Free()`
 ### `Method Free()`

+ 0 - 17
docs/api/brl/brl.crypto/tcryptohashkey.md

@@ -1,17 +0,0 @@
----
-id: tcryptohashkey
-title: TCryptoHashKey
-sidebar_label: TCryptoHashKey
----
-
-A secret key suitable for use with the [TCryptoHash](../../../brl/brl.crypto/tcryptohash) functions.
-
-
-## Functions
-
-### `Function FromString:TCryptoHashKey(key:String)`
-
-Retrieves a key from its String representation.
-
-<br/>
-

+ 0 - 17
docs/api/brl/brl.crypto/tcryptosecretboxkey.md

@@ -1,17 +0,0 @@
----
-id: tcryptosecretboxkey
-title: TCryptoSecretBoxKey
-sidebar_label: TCryptoSecretBoxKey
----
-
-A secret key suitable for use with [TCryptoSecretBox](../../../brl/brl.crypto/tcryptosecretbox).
-
-
-## Functions
-
-### `Function FromString:TCryptoSecretBoxKey(key:String)`
-
-Retrieves a key from its String representation.
-
-<br/>
-

+ 1 - 1
docs/api/brl/brl.event/tevent.md

@@ -58,7 +58,7 @@ Event specific extra information
 Emit this event
 Emit this event
 
 
 
 
-This method runs all [EmitEventHook](../../../brl/brl.event/#global-emiteventhook-int-allochookid) hook function, passing <b>Self</b> as
+This method runs all [EmitEventHook](../../../brl/brl.event/#global-emiteventhookintallochookid) hook function, passing <b>Self</b> as
 the hook data.
 the hook data.
 
 
 
 

+ 224 - 0
docs/api/brl/brl.jconv/tjconv.md

@@ -0,0 +1,224 @@
+---
+id: tjconv
+title: TJConv
+sidebar_label: TJConv
+---
+
+Serialises or deserializes objects to and from JSON.
+
+
+## Methods
+
+### `Method FromJson:Object(json:String, typeName:String)`
+
+Deserializes the specified JSON string into an object of the specified type.
+
+#### Returns
+The deserialized object.
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import brl.jconv
+
+' a serialized object as json
+Local txt:String = "{~qposition~q:{~qx~q:100,~qy~q:50},~qspeed~q:{~qx~q:50,~qy~q:75}}"
+
+' create jconv instance
+Local jconv:TJConv = New TJConvBuilder.Build()
+
+' deserialize into a TPlayer object
+Local player:TPlayer = TPlayer(jconv.FromJson(txt, "TPlayer"))
+
+If player Then
+	Print "Position = " + player.position.x + ", " + player.position.y
+	Print "Speed    = " + player.speed.x + ", " + player.speed.y
+End If
+
+Type TPlayer
+	Field position:TVec2
+	Field speed:TVec2
+End Type
+
+Type TVec2
+	Field x:Int
+	Field y:Int
+End Type
+```
+<br/>
+
+### `Method FromJson:Object(json:String, obj:Object)`
+
+Deserializes the specified JSON string into <b>obj</b>.
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import brl.jconv
+
+' a serialized object as json
+Local txt:String = "{~qposition~q:{~qx~q:100,~qy~q:50},~qspeed~q:{~qx~q:50,~qy~q:75}}"
+
+' create jconv instance
+Local jconv:TJConv = New TJConvBuilder.Build()
+
+' deserialize into a TPlayer object
+Local player:TPlayer = TPlayer(jconv.FromJson(txt, "TPlayer"))
+
+If player Then
+	Print "Position = " + player.position.x + ", " + player.position.y
+	Print "Speed    = " + player.speed.x + ", " + player.speed.y
+End If
+
+Type TPlayer
+	Field position:TVec2
+	Field speed:TVec2
+End Type
+
+Type TVec2
+	Field x:Int
+	Field y:Int
+End Type
+```
+<br/>
+
+### `Method FromJsonInstance:Object(json:TJSON, obj:Object)`
+
+Deserializes the specified JSON instance into <b>obj</b>.
+
+<br/>
+
+### `Method ToJson:String(obj:Object)`
+
+Serializes the specified object into its equivalent JSON representation.
+
+#### Returns
+The JSON representation as a [String](../../../brl/brl.blitz/#string).
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import brl.jconv
+
+
+' create a person with some data
+Local person:TPerson = New TPerson
+person.firstName = "John"
+person.lastName = "Smith"
+
+person.address = New TAddress
+person.address.line1 = "10 Somewhere Street"
+person.address.city = "SomeTown"
+person.address.state = "SomeState"
+
+person.notes = New String[2]
+person.notes[0] = "Note 1"
+person.notes[1] = "Note 2"
+
+' create jconv instance
+Local jconv:TJConv = New TJConvBuilder.Build()
+
+' serialize the person data
+Local s:String = jconv.ToJson(person)
+Print s
+Local p:TPerson = TPerson(jconv.FromJson(s, "TPerson"))
+Print jconv.ToJson(p)
+
+Type TPerson
+
+	Field firstName:String
+	Field lastName:String
+
+	Field address:TAddress
+
+	Field notes:String[]
+End Type
+
+Type TAddress
+
+	Field line1:String
+	Field line2:String
+	Field city:String
+	Field state:String
+
+End Type
+```
+<br/>
+
+### `Method ToJsonInstance:TJSON(obj:Object)`
+
+Serializes the specified object into its equivalent JSON representation.
+
+#### Returns
+A JSON instance.
+
+
+<br/>
+
+### `Method ToJson(obj:Object, stream:TStream)`
+
+Serializes the specified object into its equivalent JSON representation and outputs to a [TStream](../../../brl/brl.stream/tstream).
+
+The stream should be open and writeable.
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import brl.jconv
+
+
+' create a person with some data
+Local person:TPerson = New TPerson
+person.firstName = "John"
+person.lastName = "Smith"
+
+person.address = New TAddress
+person.address.line1 = "10 Somewhere Street"
+person.address.city = "SomeTown"
+person.address.state = "SomeState"
+
+person.notes = New String[2]
+person.notes[0] = "Note 1"
+person.notes[1] = "Note 2"
+
+' create jconv instance
+Local jconv:TJConv = New TJConvBuilder.Build()
+
+' serialize the person data
+Local s:String = jconv.ToJson(person)
+Print s
+Local p:TPerson = TPerson(jconv.FromJson(s, "TPerson"))
+Print jconv.ToJson(p)
+
+Type TPerson
+
+	Field firstName:String
+	Field lastName:String
+
+	Field address:TAddress
+
+	Field notes:String[]
+End Type
+
+Type TAddress
+
+	Field line1:String
+	Field line2:String
+	Field city:String
+	Field state:String
+
+End Type
+```
+<br/>
+

+ 62 - 0
docs/api/brl/brl.jconv/tjconvbuilder.md

@@ -0,0 +1,62 @@
+---
+id: tjconvbuilder
+title: TJConvBuilder
+sidebar_label: TJConvBuilder
+---
+
+Creates an instance of [TJConv](../../../brl/brl.jconv/tjconv) with custom settings.
+
+
+## Methods
+
+### `Method Build:TJConv()`
+
+Builds the [TJConv](../../../brl/brl.jconv/tjconv) instance.
+
+<br/>
+
+### `Method WithEmptyArrays:TJConvBuilder()`
+
+Null/Empty array fields will be output to JSON as `[]`.
+
+The default is not to output these fields.
+
+
+<br/>
+
+### `Method RegisterSerializer:TJConvBuilder(sourceType:String, serializer:Object)`
+
+Registers a serializer for the given source type.
+
+<br/>
+
+### `Method WithBoxing:TJConvBuilder()`
+
+Registers serializers for boxed primitive numbers.
+
+Boxed primitives allow for the provision of serializing [Null](../../../brl/brl.blitz/#null) primitive numbers via JSON.
+
+
+<br/>
+
+### `Method WithPrecision:TJConvBuilder(precision:Int)`
+
+Serialization of real numbers will have a maximum precision of <b>precision</b> fractional digits.
+
+<br/>
+
+### `Method WithIndent:TJConvBuilder(indent:Int)`
+
+Enables pretty-printing of the serialized json, using <b>indent</b> spaces of indentation.
+
+The default, 0, disables pretty-printing. The maximum indent size is 31.
+
+
+<br/>
+
+### `Method WithCompact:TJConvBuilder()`
+
+Enables compact representation, removing extra spacing.
+
+<br/>
+

+ 9 - 0
docs/api/brl/brl.jconv/tjconvserializer.md

@@ -0,0 +1,9 @@
+---
+id: tjconvserializer
+title: TJConvSerializer
+sidebar_label: TJConvSerializer
+---
+
+Serializes BlitzMax type to JSON.
+
+

+ 3 - 3
docs/api/brl/brl.json/tjson.md

@@ -13,7 +13,7 @@ Base type for JSON objects.
 
 
 Returns the JSON representation of the object as a String, or NULL on error.
 Returns the JSON representation of the object as a String, or NULL on error.
 
 
-Valid flags include [JSON_COMPACT](../../../brl/brl.json/#const-json-compact-int-20), [JSON_ENSURE_ASCII](../../../brl/brl.json/#const-json-ensure-ascii-int-40), [JSON_SORT_KEYS](../../../brl/brl.json/#const-json-sort-keys-int-80), [JSON_PRESERVE_ORDER](../../../brl/brl.json/#const-json-preserve-order-int-100), [JSON_ENCODE_ANY](../../../brl/brl.json/#const-json-encode-any-int-200) and [JSON_ESCAPE_SLASH](../../../brl/brl.json/#const-json-escape-slash-int-400).
+Valid flags include [JSON_COMPACT](../../../brl/brl.json/#const-jsoncompactint-20), [JSON_ENSURE_ASCII](../../../brl/brl.json/#const-jsonensureasciiint-40), [JSON_SORT_KEYS](../../../brl/brl.json/#const-jsonsortkeysint-80), [JSON_PRESERVE_ORDER](../../../brl/brl.json/#const-jsonpreserveorderint-100), [JSON_ENCODE_ANY](../../../brl/brl.json/#const-jsonencodeanyint-200) and [JSON_ESCAPE_SLASH](../../../brl/brl.json/#const-jsonescapeslashint-400).
 
 
 
 
 <br/>
 <br/>
@@ -23,7 +23,7 @@ Valid flags include [JSON_COMPACT](../../../brl/brl.json/#const-json-compact-int
 Writes the JSON representation of the object to the stream output.
 Writes the JSON representation of the object to the stream output.
 
 
 The stream should already be open for writing.
 The stream should already be open for writing.
-Valid flags include [JSON_COMPACT](../../../brl/brl.json/#const-json-compact-int-20), [JSON_ENSURE_ASCII](../../../brl/brl.json/#const-json-ensure-ascii-int-40), [JSON_SORT_KEYS](../../../brl/brl.json/#const-json-sort-keys-int-80), [JSON_PRESERVE_ORDER](../../../brl/brl.json/#const-json-preserve-order-int-100), [JSON_ENCODE_ANY](../../../brl/brl.json/#const-json-encode-any-int-200) and [JSON_ESCAPE_SLASH](../../../brl/brl.json/#const-json-escape-slash-int-400).
+Valid flags include [JSON_COMPACT](../../../brl/brl.json/#const-jsoncompactint-20), [JSON_ENSURE_ASCII](../../../brl/brl.json/#const-jsonensureasciiint-40), [JSON_SORT_KEYS](../../../brl/brl.json/#const-jsonsortkeysint-80), [JSON_PRESERVE_ORDER](../../../brl/brl.json/#const-jsonpreserveorderint-100), [JSON_ENCODE_ANY](../../../brl/brl.json/#const-jsonencodeanyint-200) and [JSON_ESCAPE_SLASH](../../../brl/brl.json/#const-jsonescapeslashint-400).
 
 
 
 
 <br/>
 <br/>
@@ -35,7 +35,7 @@ Valid flags include [JSON_COMPACT](../../../brl/brl.json/#const-json-compact-int
 Loads JSON text from a String or TStream.
 Loads JSON text from a String or TStream.
 
 
 The stream should already be open for reading.
 The stream should already be open for reading.
-Valid flags include [JSON_REJECT_DUPLICATES](../../../brl/brl.json/#const-json-reject-duplicates-int-1), [JSON_DISABLE_EOF_CHECK](../../../brl/brl.json/#const-json-disable-eof-check-int-2), [JSON_DECODE_ANY](../../../brl/brl.json/#const-json-decode-any-int-4), [JSON_DECODE_INT_AS_REAL](../../../brl/brl.json/#const-json-decode-int-as-real-int-8) and [JSON_ALLOW_NUL](../../../brl/brl.json/#const-json-allow-nul-int-10).
+Valid flags include [JSON_REJECT_DUPLICATES](../../../brl/brl.json/#const-jsonrejectduplicatesint-1), [JSON_DISABLE_EOF_CHECK](../../../brl/brl.json/#const-jsondisableeofcheckint-2), [JSON_DECODE_ANY](../../../brl/brl.json/#const-jsondecodeanyint-4), [JSON_DECODE_INT_AS_REAL](../../../brl/brl.json/#const-jsondecodeintasrealint-8) and [JSON_ALLOW_NUL](../../../brl/brl.json/#const-jsonallownulint-10).
 
 
 
 
 <br/>
 <br/>

+ 17 - 0
docs/api/brl/brl.json/tjsonarray.md

@@ -7,6 +7,23 @@ sidebar_label: TJSONArray
 A JSON array is an ordered collection of other JSON values.
 A JSON array is an ordered collection of other JSON values.
 
 
 
 
+## Operators
+
+### `Method Operator [] :TJSON(index:Int)`
+
+Returns the element in array at position index.
+
+The valid range for index is from 0 to the return value of Size() minus 1. If index is out of range, NULL is returned.
+
+
+<br/>
+
+### `Method Operator []= (index:Int, value:TJSON)`
+
+Replaces the element in array at position index with value.
+
+<br/>
+
 ## Methods
 ## Methods
 
 
 ### `Method Create:TJSONArray()`
 ### `Method Create:TJSONArray()`

+ 8 - 0
docs/api/brl/brl.json/tjsonbool.md

@@ -7,3 +7,11 @@ sidebar_label: TJSONBool
 A JSON boolean.
 A JSON boolean.
 
 
 
 
+## Methods
+
+### `Method Create:TJSONBool(v:Int)`
+
+Creates an instance of [TJSONBool](../../../brl/brl.json/tjsonbool) with <b>v</b>.
+
+<br/>
+

+ 1 - 1
docs/api/brl/brl.json/tjsonobject.md

@@ -137,7 +137,7 @@ If there already is a value for key, it is replaced by the new value.
 
 
 ### `Method Set:Int(key:String, value:Size_T)`
 ### `Method Set:Int(key:String, value:Size_T)`
 
 
-Sets the value of key to the [Size_t](../../../brl/brl.blitz/#size-t) value.
+Sets the value of key to the [Size_t](../../../brl/brl.blitz/#sizet) value.
 
 
 If there already is a value for key, it is replaced by the new value.
 If there already is a value for key, it is replaced by the new value.
 
 

+ 743 - 0
docs/api/brl/brl.linkedlist/tlist.md

@@ -16,6 +16,34 @@ Clear a linked list
 Removes all objects from <b>list</b>.
 Removes all objects from <b>list</b>.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' print amount of elements in the list
+Print list.Count()
+
+' clear the list and remove all elements
+list.Clear()
+
+' print amount of elements in the list
+Print list.Count()
+
+' outputs:
+' 3
+' 0
+```
 <br/>
 <br/>
 
 
 ### `Method IsEmpty()`
 ### `Method IsEmpty()`
@@ -26,6 +54,32 @@ Check if list is empty
 True if list is empty, else false
 True if list is empty, else false
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' check if the list contains some elements
+If list.IsEmpty() Then
+	Print "list is empty"
+Else
+	Print "list contains elements"
+EndIf
+
+
+' outputs:
+' list contains elements
+```
 <br/>
 <br/>
 
 
 ### `Method Contains( value:Object )`
 ### `Method Contains( value:Object )`
@@ -36,6 +90,33 @@ Check if list contains a value
 True if list contains <b>value</b>, else false
 True if list contains <b>value</b>, else false
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' check if the list contains some elements
+If list.Contains("four") Then
+	Print "four"
+EndIf
+
+If list.Contains("three") Then
+	Print "three"
+EndIf
+
+' outputs:
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method AddFirst:TLink( value:Object )`
 ### `Method AddFirst:TLink( value:Object )`
@@ -46,6 +127,31 @@ Add an object to the start of the list
 A link object
 A link object
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the begin of the list
+list.AddFirst("one")
+list.AddFirst("two")
+list.AddFirst("three")
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' three
+' two
+' one
+```
 <br/>
 <br/>
 
 
 ### `Method AddLast:TLink( value:Object )`
 ### `Method AddLast:TLink( value:Object )`
@@ -56,6 +162,31 @@ Add an object to the end of the list
 A link object
 A link object
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method First:Object()`
 ### `Method First:Object()`
@@ -65,6 +196,31 @@ Returns the first object in the list
 Returns Null if the list is empty.
 Returns Null if the list is empty.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+
+' request the first element in the list and cast it (back) to a string
+' cast is needed as the function returns "object" rather than "string"
+Local value:String = String(list.First())
+
+Print value
+
+' outputs:
+' one
+```
 <br/>
 <br/>
 
 
 ### `Method Last:Object()`
 ### `Method Last:Object()`
@@ -74,6 +230,31 @@ Returns the last object in the list
 Returns Null if the list is empty.
 Returns Null if the list is empty.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+
+' request the last element in the list and cast it (back) to a string
+' cast is needed as the function returns "object" rather than "string"
+Local value:String = String(list.Last())
+
+Print value
+
+' outputs:
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method RemoveFirst:Object()`
 ### `Method RemoveFirst:Object()`
@@ -83,6 +264,33 @@ Removes and returns the first object in the list.
 Returns Null if the list is empty.
 Returns Null if the list is empty.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the begin of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' remove the first element of the list
+list.RemoveFirst()
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method RemoveLast:Object()`
 ### `Method RemoveLast:Object()`
@@ -92,36 +300,225 @@ Removes and returns the last object in the list.
 Returns Null if the list is empty.
 Returns Null if the list is empty.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the begin of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' remove the last element of the list
+list.RemoveLast()
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' two
+```
 <br/>
 <br/>
 
 
 ### `Method FirstLink:TLink()`
 ### `Method FirstLink:TLink()`
 
 
 Returns the first link the list or null if the list is empty.
 Returns the first link the list or null if the list is empty.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' find first link 
+Local link:TLink = list.FirstLink()
+
+' remove the element from the list by utilizing the link
+list.RemoveLink(link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method LastLink:TLink()`
 ### `Method LastLink:TLink()`
 
 
 Returns the last link the list or null if the list is empty.
 Returns the last link the list or null if the list is empty.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' find last link 
+Local link:TLink = list.LastLink()
+
+' remove the element from the list by utilizing the link
+list.RemoveLink(link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' two
+```
 <br/>
 <br/>
 
 
 ### `Method InsertBeforeLink:TLink( value:Object,succ:TLink )`
 ### `Method InsertBeforeLink:TLink( value:Object,succ:TLink )`
 
 
 Inserts an object before the specified list link.
 Inserts an object before the specified list link.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' find the link we want to insert something before or after, here for "two"
+Local link:TLink = list.FindLink("two")
+
+'insert a new element before the link
+list.InsertBeforeLink("before two", link)
+
+'insert a new element after the link
+list.InsertAfterLink("after two", link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' before two
+' two
+' after two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method InsertAfterLink:TLink( value:Object,pred:TLink )`
 ### `Method InsertAfterLink:TLink( value:Object,pred:TLink )`
 
 
 Inserts an object after the specified list link.
 Inserts an object after the specified list link.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' find the link we want to insert something before or after, here for "two"
+Local link:TLink = list.FindLink("two")
+
+'insert a new element before the link
+list.InsertBeforeLink("before two", link)
+
+'insert a new element after the link
+list.InsertAfterLink("after two", link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' before two
+' two
+' after two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method FindLink:TLink( value:Object )`
 ### `Method FindLink:TLink( value:Object )`
 
 
 Returns the first link in the list with the given value, or null if none found.
 Returns the first link in the list with the given value, or null if none found.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' find the TLink instance of the element/object "two" 
+Local link:TLink = list.FindLink("two")
+
+' remove the element from the list by utilizing the link
+list.RemoveLink(link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method ValueAtIndex:Object( index )`
 ### `Method ValueAtIndex:Object( index )`
@@ -131,6 +528,30 @@ Returns the value of the link at the given index.
 Throws an exception if the index is out of range (must be 0..list.Count()-1 inclusive).
 Throws an exception if the index is out of range (must be 0..list.Count()-1 inclusive).
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' find the element at the given index and cast it (back) to a string
+' cast is needed as the function returns "object" rather than "string"
+Local value:String = String(list.ValueAtIndex(1))
+
+Print value 
+
+' outputs:
+' two
+```
 <br/>
 <br/>
 
 
 ### `Method Count()`
 ### `Method Count()`
@@ -141,6 +562,27 @@ Count list length
 The numbers of objects in <b>list</b>.
 The numbers of objects in <b>list</b>.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' print amount of elements in the list
+Print list.Count()
+
+' outputs:
+' 3
+```
 <br/>
 <br/>
 
 
 ### `Method Remove( value:Object )`
 ### `Method Remove( value:Object )`
@@ -150,30 +592,193 @@ Remove an object from a linked list
 Remove scans a list for the specified value and removes its link.
 Remove scans a list for the specified value and removes its link.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the begin of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' remove the string "two"
+list.Remove("two")
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method Swap( list:TList )`
 ### `Method Swap( list:TList )`
 
 
 Swap contents with the list specified.
 Swap contents with the list specified.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+
+' create a second list
+Local list2:TList = New TList
+list2.AddLast("four")
+list2.AddLast("five")
+list2.AddLast("six")
+
+
+' swap the lists
+list.Swap(list2)
+
+' enumerate all the strings in the first list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' four
+' five
+' six
+```
 <br/>
 <br/>
 
 
 ### `Method Copy:TList()`
 ### `Method Copy:TList()`
 
 
 Creates an identical copy of the list.
 Creates an identical copy of the list.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' copy the list elements into another one
+Local list2:TList = list.Copy()
+
+' enumerate all the strings in the first list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' enumerate all the strings in the second list
+For Local a:String = EachIn list2
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+' one
+' two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method Reverse()`
 ### `Method Reverse()`
 
 
 Reverse the order of the list.
 Reverse the order of the list.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' reverse the list
+list.Reverse()
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' three
+' two
+' one
+```
 <br/>
 <br/>
 
 
 ### `Method Reversed:TList()`
 ### `Method Reversed:TList()`
 
 
 Creates a new list that is the reversed version of this list.
 Creates a new list that is the reversed version of this list.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' create another list containing the elements in reversed order
+Local list2:TList = list.Reversed()
+
+' enumerate all the strings in the first list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' enumerate all the strings in the second list
+For Local a:String = EachIn list2
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+' three
+' two
+' one
+```
 <br/>
 <br/>
 
 
 ### `Method Sort( ascending=True,compareFunc( o1:Object,o2:Object ) )`
 ### `Method Sort( ascending=True,compareFunc( o1:Object,o2:Object ) )`
@@ -183,6 +788,63 @@ Sort a list in either ascending (default) or decending order.
 User types should implement a Compare method in order to be sorted.
 User types should implement a Compare method in order to be sorted.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("short")
+list.AddLast("longer")
+list.AddLast("the longest")
+
+
+' DEFAULT SORT
+' sort them (in this case this leads to an alphabetic sort)
+' second parameter sets sort to ascending or not
+list.Sort(True)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' longer
+' short
+' the longest
+
+
+' CUSTOM SORT
+' define a custom compare function
+Function MyCompare:Int( o1:Object, o2:Object )
+	If Len(String(o1)) < Len(String(o2)) Then
+		Return -1 ' o1 before o2
+	ElseIf Len(String(o1)) > Len(String(o2)) Then
+		Return 1 ' o1 after o2
+	Else
+		Return 0 ' equal
+	EndIf
+End Function
+
+' sort them with a custom compare function
+list.Sort(True, MyCompare)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' short
+' longer
+' the longest
+```
 <br/>
 <br/>
 
 
 ### `Method ToArray:Object[]()`
 ### `Method ToArray:Object[]()`
@@ -193,12 +855,70 @@ convert a list to an array
 An array of objects
 An array of objects
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' create an array out of the list elements
+Local objects:Object[] = list.ToArray() 
+
+' enumerate all the strings in the array
+For Local a:String = EachIn objects
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Method RemoveLink( link:TLink )`
 ### `Method RemoveLink( link:TLink )`
 
 
 Remove an object from a linked list.
 Remove an object from a linked list.
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = New TList
+
+' add some string objects to the end of the list
+list.AddLast("one")
+list.AddLast("two")
+list.AddLast("three")
+
+' find the link of the element/object "two" 
+Local link:TLink = list.FindLink("two")
+
+' remove the element from the list by utilizing the link
+list.RemoveLink(link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' three
+```
 <br/>
 <br/>
 
 
 ## Functions
 ## Functions
@@ -211,5 +931,28 @@ Create a list from an array
 A new linked list
 A new linked list
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create an array holding some objects
+Local objects:Object[] = ["one", "two", "three"]
+
+' create a linked list out of the elements
+Local list:TList = TList.FromArray(objects) 
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+```
 <br/>
 <br/>
 
 

+ 1 - 1
docs/api/brl/brl.map/tintkey.md

@@ -7,7 +7,7 @@ sidebar_label: TIntKey
 Int holder for key returned by TIntMap.Keys() enumerator.
 Int holder for key returned by TIntMap.Keys() enumerator.
 
 
 
 
-Because a single instance of [TIntKey](../../../brl/brl.map/tintkey) is used during enumeration, [value](../../../brl/brl.map/tintkey/#field-value-int) changes on each iteration.
+Because a single instance of [TIntKey](../../../brl/brl.map/tintkey) is used during enumeration, [value](../../../brl/brl.map/tintkey/#field-valueint) changes on each iteration.
 
 
 
 
 ## Fields
 ## Fields

+ 5 - 5
docs/api/brl/brl.map/tintmap.md

@@ -74,7 +74,7 @@ Removes all keys and values.
 
 
 <br/>
 <br/>
 
 
-### `Method IsEmpty()`
+### `Method IsEmpty:Int()`
 
 
 Checks if the map is empty.
 Checks if the map is empty.
 
 
@@ -115,7 +115,7 @@ The value associated with <b>key</b>.
 
 
 <br/>
 <br/>
 
 
-### `Method Remove( key:Int )`
+### `Method Remove:Int( key:Int )`
 
 
 Remove a key/value pair from the map.
 Remove a key/value pair from the map.
 
 
@@ -129,7 +129,7 @@ Remove a key/value pair from the map.
 
 
 Gets the map keys.
 Gets the map keys.
 
 
-The object returned by [Keys](../../../brl/brl.map/tintmap/#method-keys-tintmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
+The object returned by [Keys](../../../brl/brl.map/tintmap/#method-keystintmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -142,7 +142,7 @@ An enumeration object
 
 
 Get the map values.
 Get the map values.
 
 
-The object returned by [Values](../../../brl/brl.map/tintmap/#method-values-tintmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
+The object returned by [Values](../../../brl/brl.map/tintmap/#method-valuestintmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -161,7 +161,7 @@ Returns a copy the contents of this map.
 
 
 Returns a node enumeration object.
 Returns a node enumeration object.
 
 
-The object returned by [ObjectEnumerator](../../../brl/brl.map/tintmap/#method-objectenumerator-tintnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
+The object returned by [ObjectEnumerator](../../../brl/brl.map/tintmap/#method-objectenumeratortintnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
 
 
 
 
 <br/>
 <br/>

+ 6 - 6
docs/api/brl/brl.map/tmap.md

@@ -74,7 +74,7 @@ Removes all keys and values.
 
 
 <br/>
 <br/>
 
 
-### `Method IsEmpty()`
+### `Method IsEmpty:Int()`
 
 
 Checks if the map is empty.
 Checks if the map is empty.
 
 
@@ -92,7 +92,7 @@ If the map already contains <b>key</b>, its value is overwritten with <b>value</
 
 
 <br/>
 <br/>
 
 
-### `Method Contains( key:Object )`
+### `Method Contains:Int( key:Object )`
 
 
 Checks if the map contains <b>key</b>.
 Checks if the map contains <b>key</b>.
 
 
@@ -115,7 +115,7 @@ The value associated with <b>key</b>.
 
 
 <br/>
 <br/>
 
 
-### `Method Remove( key:Object )`
+### `Method Remove:Int( key:Object )`
 
 
 Remove a key/value pair from the map.
 Remove a key/value pair from the map.
 
 
@@ -129,7 +129,7 @@ Remove a key/value pair from the map.
 
 
 Gets the map keys.
 Gets the map keys.
 
 
-The object returned by [Keys](../../../brl/brl.map/tmap/#method-keys-tmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
+The object returned by [Keys](../../../brl/brl.map/tmap/#method-keystmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -142,7 +142,7 @@ An enumeration object
 
 
 Get the map values.
 Get the map values.
 
 
-The object returned by [Values](../../../brl/brl.map/tmap/#method-values-tmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
+The object returned by [Values](../../../brl/brl.map/tmap/#method-valuestmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -161,7 +161,7 @@ Returns a copy the contents of this map.
 
 
 Returns a node enumeration Object.
 Returns a node enumeration Object.
 
 
-The object returned by [ObjectEnumerator](../../../brl/brl.map/tmap/#method-objectenumerator-tnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
+The object returned by [ObjectEnumerator](../../../brl/brl.map/tmap/#method-objectenumeratortnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
 
 
 
 
 <br/>
 <br/>

+ 1 - 1
docs/api/brl/brl.map/tptrkey.md

@@ -7,7 +7,7 @@ sidebar_label: TPtrKey
 Byte Ptr holder for key returned by TPtrMap.Keys() enumerator.
 Byte Ptr holder for key returned by TPtrMap.Keys() enumerator.
 
 
 
 
-Because a single instance of [TPtrKey](../../../brl/brl.map/tptrkey) is used during enumeration, [value](../../../brl/brl.map/tptrkey/#field-value-byte-ptr) changes on each iteration.
+Because a single instance of [TPtrKey](../../../brl/brl.map/tptrkey) is used during enumeration, [value](../../../brl/brl.map/tptrkey/#field-valuebyte-ptr) changes on each iteration.
 
 
 
 
 ## Fields
 ## Fields

+ 5 - 5
docs/api/brl/brl.map/tptrmap.md

@@ -74,7 +74,7 @@ Removes all keys and values.
 
 
 <br/>
 <br/>
 
 
-### `Method IsEmpty()`
+### `Method IsEmpty:Int()`
 
 
 Checks if the map is empty.
 Checks if the map is empty.
 
 
@@ -115,7 +115,7 @@ The value associated with <b>key</b>.
 
 
 <br/>
 <br/>
 
 
-### `Method Remove( key:Byte Ptr )`
+### `Method Remove:Int( key:Byte Ptr )`
 
 
 Remove a key/value pair from the map.
 Remove a key/value pair from the map.
 
 
@@ -129,7 +129,7 @@ Remove a key/value pair from the map.
 
 
 Gets the map keys.
 Gets the map keys.
 
 
-The object returned by [Keys](../../../brl/brl.map/tptrmap/#method-keys-tptrmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
+The object returned by [Keys](../../../brl/brl.map/tptrmap/#method-keystptrmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -142,7 +142,7 @@ An enumeration object
 
 
 Get the map values.
 Get the map values.
 
 
-The object returned by [Values](../../../brl/brl.map/tptrmap/#method-values-tptrmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
+The object returned by [Values](../../../brl/brl.map/tptrmap/#method-valuestptrmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -161,7 +161,7 @@ Returns a copy the contents of this map.
 
 
 Returns a node enumeration object.
 Returns a node enumeration object.
 
 
-The object returned by [ObjectEnumerator](../../../brl/brl.map/tptrmap/#method-objectenumerator-tptrnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
+The object returned by [ObjectEnumerator](../../../brl/brl.map/tptrmap/#method-objectenumeratortptrnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
 
 
 
 
 <br/>
 <br/>

+ 5 - 5
docs/api/brl/brl.map/tstringmap.md

@@ -74,7 +74,7 @@ Removes all keys and values.
 
 
 <br/>
 <br/>
 
 
-### `Method IsEmpty()`
+### `Method IsEmpty:Int()`
 
 
 Checks if the map is empty.
 Checks if the map is empty.
 
 
@@ -115,7 +115,7 @@ The value associated with <b>key</b>.
 
 
 <br/>
 <br/>
 
 
-### `Method Remove( key:String )`
+### `Method Remove:Int( key:String )`
 
 
 Remove a key/value pair from the map.
 Remove a key/value pair from the map.
 
 
@@ -129,7 +129,7 @@ Remove a key/value pair from the map.
 
 
 Gets the map keys.
 Gets the map keys.
 
 
-The object returned by [Keys](../../../brl/brl.map/tstringmap/#method-keys-tstringmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
+The object returned by [Keys](../../../brl/brl.map/tstringmap/#method-keyststringmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the keys in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -142,7 +142,7 @@ An enumeration object
 
 
 Get the map values.
 Get the map values.
 
 
-The object returned by [Values](../../../brl/brl.map/tstringmap/#method-values-tstringmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
+The object returned by [Values](../../../brl/brl.map/tstringmap/#method-valueststringmapenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the values in the map.
 
 
 
 
 #### Returns
 #### Returns
@@ -161,7 +161,7 @@ Returns a copy the contents of this map.
 
 
 Returns a node enumeration object.
 Returns a node enumeration object.
 
 
-The object returned by [ObjectEnumerator](../../../brl/brl.map/tstringmap/#method-objectenumerator-tstringnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
+The object returned by [ObjectEnumerator](../../../brl/brl.map/tstringmap/#method-objectenumeratortstringnodeenumerator) can be used with [EachIn](../../../brl/brl.blitz/#eachin) to iterate through the nodes in the map.
 
 
 
 
 <br/>
 <br/>

+ 1 - 1
docs/api/brl/brl.maxlua/tluaobject.md

@@ -40,7 +40,7 @@ Create a lua object
 
 
 
 
 Once a lua object has been created, object methods (actually lua functions defined in the
 Once a lua object has been created, object methods (actually lua functions defined in the
-class) can be invoked using the [Invoke](../../../brl/brl.maxlua/tluaobject/#method-invoke-object-name-args-object) method.
+class) can be invoked using the [Invoke](../../../brl/brl.maxlua/tluaobject/#method-invokeobject-nameargsobject-) method.
 
 
 
 
 <br/>
 <br/>

+ 9 - 0
docs/api/brl/brl.maxunit/assertionfailedexception.md

@@ -0,0 +1,9 @@
+---
+id: assertionfailedexception
+title: AssertionFailedException
+sidebar_label: AssertionFailedException
+---
+
+Failed assertion.
+
+

+ 184 - 0
docs/api/brl/brl.maxunit/tassert.md

@@ -0,0 +1,184 @@
+---
+id: tassert
+title: TAssert
+sidebar_label: TAssert
+---
+
+A set of assert methods.
+
+
+Messages are only displayed when an assert fails.
+
+
+## Functions
+
+### `Function assertTrue(bool:Int, message:String = Null)`
+
+Asserts that a condition is [True](../../../brl/brl.blitz/#true).
+
+If it isn't [True](../../../brl/brl.blitz/#true), it throws an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) with the given message.
+
+
+<br/>
+
+### `Function assertFalse(bool:Int, message:String = Null)`
+
+Asserts that a condition is [False](../../../brl/brl.blitz/#false).
+
+If it isn't [False](../../../brl/brl.blitz/#false), it throws an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) with the given message.
+
+
+<br/>
+
+### `Function fail(message:String)`
+
+Fails a test with the given message.
+
+<br/>
+
+### `Function assertEquals(expected:Object, actual:Object, message:String = Null)`
+
+Asserts that two objects are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEqualsI(expected:Int, actual:Int, message:String = Null)`
+
+Asserts that two ints are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEqualsL(expected:Long, actual:Long, message:String = Null)`
+
+Asserts that two longs are equal.
+
+If they are not equal an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEqualsF(expected:Float, actual:Float, delta:Float = 0, message:String = Null)`
+
+Asserts that two floats are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEqualsD(expected:Double, actual:Double, delta:Double = 0, message:String = Null)`
+
+Asserts that two doubles are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEqualsS(expected:Short, actual:Short, message:String = Null)`
+
+Asserts that two shorts are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEqualsB(expected:Byte, actual:Byte, message:String = Null)`
+
+Asserts that two bytes are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertNotNull(obj:Object, message:String = Null)`
+
+Asserts that an object isn't [Null](../../../brl/brl.blitz/#null).
+
+If it is [Null](../../../brl/brl.blitz/#null), an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertNotNull(value:Byte Ptr, message:String = Null)`
+
+Asserts that a pointer isn't [Null](../../../brl/brl.blitz/#null).
+
+If it is [Null](../../../brl/brl.blitz/#null), an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertNull(obj:Object, message:String = Null)`
+
+Asserts that an [Object](../../../brl/brl.blitz/#object) is [Null](../../../brl/brl.blitz/#null).
+
+
+If it is not [Null](../../../brl/brl.blitz/#null), an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertSame(expected:Object, actual:Object, message:String = Null)`
+
+Asserts that two objects refer to the same [Object](../../../brl/brl.blitz/#object).
+
+If they are not the same, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertNull(value:Byte Ptr, message:String = Null)`
+
+Asserts that an pointer is [Null](../../../brl/brl.blitz/#null).
+
+
+If it is not [Null](../../../brl/brl.blitz/#null), an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertNotSame(expected:Object, actual:Object, message:String = Null)`
+
+Asserts that two objects refer to different objects.
+
+If they are the same, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEquals(expected:UInt, actual:UInt, message:String = Null)`
+
+Asserts that two UInts are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEquals(expected:ULong, actual:ULong, message:String = Null)`
+
+Asserts that two ULongs are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+
+### `Function assertEquals(expected:Size_T, actual:Size_T, message:String = Null)`
+
+Asserts that two Size_Ts are equal.
+
+If they are not equal, an [AssertionFailedException](../../../brl/brl.maxunit/assertionfailedexception) is thrown with the given message.
+
+
+<br/>
+

+ 24 - 0
docs/api/brl/brl.maxunit/ttest.md

@@ -0,0 +1,24 @@
+---
+id: ttest
+title: TTest
+sidebar_label: TTest
+---
+
+A test defines a set of test methods to test.
+
+
+Extend TTest to define your own tests.
+<p>
+Tag a method with `{before}` and initiliaze any variables/data in that method
+</p>
+<p>
+Tag a method with `{after}` to release any permanent resources you allocated in the setup.
+</p>
+<p>
+For each test method you want to run, tag it with `{test}`
+</p>
+<p>
+Any methods not tagged are ignored by MaxUnit.
+</p>
+
+

+ 17 - 0
docs/api/brl/brl.maxunit/ttestsuite.md

@@ -0,0 +1,17 @@
+---
+id: ttestsuite
+title: TTestSuite
+sidebar_label: TTestSuite
+---
+
+A test suite defines the fixture to run multiple tests.
+
+
+## Methods
+
+### `Method run:Int()`
+
+Runs the suite of tests.
+
+<br/>
+

+ 178 - 0
docs/api/brl/brl.objectlist/tobjectlist.md

@@ -0,0 +1,178 @@
+---
+id: tobjectlist
+title: TObjectList
+sidebar_label: TObjectList
+---
+
+Array-backed Object List
+
+
+## Methods
+
+### `Method Clear()`
+
+Clears the list.
+
+Removes all objects from list.
+
+
+<br/>
+
+### `Method IsEmpty:Int()`
+
+Checks if the list is empty.
+
+#### Returns
+[True](../../../brl/brl.blitz/#true) if the list is empty, else [False](../../../brl/brl.blitz/#false)
+
+
+<br/>
+
+### `Method AddFirst(value:Object)`
+
+Adds an object to the start of the list
+
+<br/>
+
+### `Method AddLast(value:Object)`
+
+Adds an object to the end of the list
+
+<br/>
+
+### `Method Contains:Int(obj:Object)`
+
+Checks if the list contains a value
+
+#### Returns
+[True](../../../brl/brl.blitz/#true) if the list contains <b>obj</b>, else [False](../../../brl/brl.blitz/#false)
+
+
+<br/>
+
+### `Method First:Object()`
+
+Returns the first object in the list
+
+Returns [Null](../../../brl/brl.blitz/#null) if the list is empty.
+
+
+<br/>
+
+### `Method Last:Object()`
+
+Returns the last object in the list
+
+Returns [Null](../../../brl/brl.blitz/#null) if the list is empty.
+
+
+<br/>
+
+### `Method RemoveFirst:Object()`
+
+Removes and returns the first object in the list.
+
+Returns [Null](../../../brl/brl.blitz/#null) if the list is empty.
+
+
+<br/>
+
+### `Method RemoveLast:Object()`
+
+Removes and returns the last object in the list.
+
+Returns [Null](../../../brl/brl.blitz/#null) if the list is empty.
+
+
+<br/>
+
+### `Method ValueAtIndex:Object(index:Int)`
+
+Returns the object at the given index.
+
+Throws an exception if the index is out of range (must be 0..list.Count()-1 inclusive).
+
+
+<br/>
+
+### `Method Count:Int()`
+
+Counts the list length
+
+#### Returns
+The numbers of objects in the list.
+
+
+<br/>
+
+### `Method Remove:Int(value:Object, removeAll:Int = False, compactOnRemove:Int = True)`
+
+Removes an object from the list.
+
+Remove scans the list for the specified value and removes it.
+By default, only the first found object is removed.	Enabling <b>removeAll</b> will result in all instances of <b>value</b> being removed from the list.
+By default, the list is compacted on each remove. This can be inefficient if removing several objects from a list. Disabling <b>compactOnRemove</b>
+will skip compaction until either [Compact](../../../brl/brl.objectlist/tobjectlist/#method-compact)() is called, or the current enumerator completes, or a different list method is called.
+This mechanism allows for removal of elements during an enumeration.
+
+
+<br/>
+
+### `Method Compact()`
+
+Compacts the list.
+
+Use with [Remove](../../../brl/brl.objectlist/tobjectlist/#method-removeintvalueobject-removeallint-false-compactonremoveint-true)() and <b>compactOnRemove</b> = [False](../../../brl/brl.blitz/#false).
+
+
+<br/>
+
+### `Method Copy:TObjectList()`
+
+Creates an identical copy of the list.
+
+<br/>
+
+### `Method Reverse()`
+
+Reverses the order of the list.
+
+<br/>
+
+### `Method Reversed:TObjectList()`
+
+Creates a new list that is the reversed version of this list.
+
+<br/>
+
+### `Method ToArray:Object[]()`
+
+Converts the list to an array
+
+#### Returns
+An array of objects
+
+
+<br/>
+
+### `Method Sort(ascending:Int=True, compareFunc:Int( o1:Object,o2:Object ) )`
+
+Sort the list in either ascending (default) or decending order.
+
+User types should implement a Compare method in order to be sorted.
+
+
+<br/>
+
+## Functions
+
+### `Function FromArray:TObjectList(arr:Object[])`
+
+Creates a list from an array
+
+#### Returns
+A new object list
+
+
+<br/>
+

+ 9 - 0
docs/api/brl/brl.objectlist/tobjectlistenumerator.md

@@ -0,0 +1,9 @@
+---
+id: tobjectlistenumerator
+title: TObjectListEnumerator
+sidebar_label: TObjectListEnumerator
+---
+
+Enumerator Object used by [TObjectList](../../../brl/brl.objectlist/tobjectlist) in order to implement [Eachin](../../../brl/brl.blitz/#eachin) support.
+
+

+ 12 - 0
docs/api/brl/brl.objectlist/tobjectlistreverseenumerator.md

@@ -0,0 +1,12 @@
+---
+id: tobjectlistreverseenumerator
+title: TObjectListReverseEnumerator
+sidebar_label: TObjectListReverseEnumerator
+---
+
+Enumerator Object used by [TObjectList](../../../brl/brl.objectlist/tobjectlist) in order to implement [Eachin](../../../brl/brl.blitz/#eachin) support.
+
+
+This enumerator traverses the list in reverse (last to first).
+
+

+ 2 - 2
docs/api/brl/brl.pixmap/tpixmaploader.md

@@ -8,9 +8,9 @@ Abstract base type for pixmap loaders
 
 
 
 
 
 
-To create a new pixmap loader, you should extend TPixmapLoader and implement the [LoadPixmap](../../../brl/brl.pixmap/tpixmaploader/#method-loadpixmap-tpixmap-stream-tstream-abstract) method.
+To create a new pixmap loader, you should extend TPixmapLoader and implement the [LoadPixmap](../../../brl/brl.pixmap/tpixmaploader/#method-loadpixmaptpixmap-streamtstream-abstract) method.
 
 
-To install your pixmap loader, simply create an instance of it using [New](../../../brl/brl.blitz/#new)</font>.
+To install your pixmap loader, simply create an instance of it using [New](../../../brl/brl.blitz/#new).
 
 
 
 
 ## Methods
 ## Methods

+ 3 - 3
docs/api/brl/brl.random/trandom.md

@@ -111,7 +111,7 @@ Generate random double
 
 
 The optional parameters allow you to use Rnd in 3 ways:
 The optional parameters allow you to use Rnd in 3 ways:
 
 
-<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rnd()</td><td>Random double in the range 0 (inclusive) to 1 (exclusive)</td></tr><tr><td>  &Rnd(_x_)</td><td>Random double in the range 0 (inclusive) to n (exclusive)</td></tr><tr><td>  &Rnd(_x,y_)</td><td>Random double in the range x (inclusive) to y (exclusive)</table>
+<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rnd()</td><td>Random double in the range 0 (inclusive) to 1 (exclusive)</td></tr><tr><td>  &Rnd(_x_)</td><td>Random double in the range 0 (inclusive) to n (exclusive)</td></tr><tr><td>  &Rnd(_x,y_)</td><td>Random double in the range x (inclusive) to y (exclusive)</td></tr></table>
 
 
 
 
 
 
@@ -149,9 +149,9 @@ Print "    Exact area = " + Pi     '  4 * Pi/4, compare with estimate
 Generate random integer
 Generate random integer
 
 
 
 
-The optional parameter allows you to use [Rand](../../../brl/brl.random/trandom/#method-rand-intminvalue-int-maxvalue-int-1) in 2 ways:
+The optional parameter allows you to use [Rand](../../../brl/brl.random/trandom/#method-randintminvalueint-maxvalueint-1) in 2 ways:
 
 
-<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rand(x)</td><td>Random integer in the range 1 to x (inclusive)</td></tr><tr><td>  &Rand(x,y)</td><td>Random integer in the range x to y (inclusive)</table>
+<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rand(x)</td><td>Random integer in the range 1 to x (inclusive)</td></tr><tr><td>  &Rand(x,y)</td><td>Random integer in the range x to y (inclusive)</td></tr></table>
 
 
 
 
 
 

+ 124 - 10
docs/api/brl/brl.reflection/tfield.md

@@ -15,9 +15,27 @@ Get field value
 
 
 <br/>
 <br/>
 
 
+### `Method GetByte:Byte( obj:Object )`
+
+Get [Byte](../../../brl/brl.blitz/#byte) field value
+
+<br/>
+
+### `Method GetShort:Short( obj:Object )`
+
+Get [Short](../../../brl/brl.blitz/#short) field value
+
+<br/>
+
 ### `Method GetInt:Int( obj:Object )`
 ### `Method GetInt:Int( obj:Object )`
 
 
-Get int field value
+Get [Int](../../../brl/brl.blitz/#int) field value
+
+<br/>
+
+### `Method GetUInt:UInt( obj:Object )`
+
+Get [UInt](../../../brl/brl.blitz/#uint) field value
 
 
 <br/>
 <br/>
 
 
@@ -27,27 +45,33 @@ Get long field value
 
 
 <br/>
 <br/>
 
 
+### `Method GetULong:ULong( obj:Object )`
+
+Get [ULong](../../../brl/brl.blitz/#ulong) field value
+
+<br/>
+
 ### `Method GetSizet:Size_T( obj:Object )`
 ### `Method GetSizet:Size_T( obj:Object )`
 
 
-Get size_t field value
+Get [Size_T](../../../brl/brl.blitz/#sizet) field value
 
 
 <br/>
 <br/>
 
 
 ### `Method GetFloat:Float( obj:Object )`
 ### `Method GetFloat:Float( obj:Object )`
 
 
-Get float field value
+Get [Float](../../../brl/brl.blitz/#float) field value
 
 
 <br/>
 <br/>
 
 
 ### `Method GetDouble:Double( obj:Object )`
 ### `Method GetDouble:Double( obj:Object )`
 
 
-Get double field value
+Get [Double](../../../brl/brl.blitz/#double) field value
 
 
 <br/>
 <br/>
 
 
 ### `Method GetString$( obj:Object )`
 ### `Method GetString$( obj:Object )`
 
 
-Get string field value
+Get [String](../../../brl/brl.blitz/#string) field value
 
 
 <br/>
 <br/>
 
 
@@ -57,33 +81,123 @@ Set field value
 
 
 <br/>
 <br/>
 
 
+### `Method Set( obj:Object,value:Byte )`
+
+Set [Byte](../../../brl/brl.blitz/#byte) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:Short )`
+
+Set [Short](../../../brl/brl.blitz/#short) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:Int )`
+
+Set [Int](../../../brl/brl.blitz/#int) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:UInt )`
+
+Set [UInt](../../../brl/brl.blitz/#uint) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:Long )`
+
+Set [Long](../../../brl/brl.blitz/#long) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:ULong )`
+
+Set [ULong](../../../brl/brl.blitz/#ulong) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:Size_T )`
+
+Set [Size_T](../../../brl/brl.blitz/#sizet) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:Float )`
+
+Set [Float](../../../brl/brl.blitz/#float) field value
+
+<br/>
+
+### `Method Set( obj:Object,value:Double )`
+
+Set [Double](../../../brl/brl.blitz/#double) field value
+
+<br/>
+
+### `Method SetObject( obj:Object,value:Object )`
+
+Set [Object](../../../brl/brl.blitz/#object) field value
+
+<br/>
+
+### `Method SetByte( obj:Object,value:Byte )`
+
+Set [Byte](../../../brl/brl.blitz/#byte) field value
+
+<br/>
+
+### `Method SetShort( obj:Object,value:Short )`
+
+Set [Short](../../../brl/brl.blitz/#short) field value
+
+<br/>
+
 ### `Method SetInt( obj:Object,value:Int )`
 ### `Method SetInt( obj:Object,value:Int )`
 
 
-Set int field value
+Set [Int](../../../brl/brl.blitz/#int) field value
+
+<br/>
+
+### `Method SetUInt( obj:Object,value:UInt )`
+
+Set [UInt](../../../brl/brl.blitz/#uint) field value
 
 
 <br/>
 <br/>
 
 
 ### `Method SetLong( obj:Object,value:Long )`
 ### `Method SetLong( obj:Object,value:Long )`
 
 
-Set long field value
+Set [Long](../../../brl/brl.blitz/#long) field value
+
+<br/>
+
+### `Method SetULong( obj:Object,value:ULong )`
+
+Set [ULong](../../../brl/brl.blitz/#ulong) field value
+
+<br/>
+
+### `Method SetSizet( obj:Object,value:Size_T )`
+
+Set [Size_T](../../../brl/brl.blitz/#sizet) field value
 
 
 <br/>
 <br/>
 
 
 ### `Method SetFloat( obj:Object,value:Float )`
 ### `Method SetFloat( obj:Object,value:Float )`
 
 
-Set float field value
+Set [Float](../../../brl/brl.blitz/#float) field value
 
 
 <br/>
 <br/>
 
 
 ### `Method SetDouble( obj:Object,value:Double )`
 ### `Method SetDouble( obj:Object,value:Double )`
 
 
-Set double field value
+Set [Double](../../../brl/brl.blitz/#double) field value
 
 
 <br/>
 <br/>
 
 
 ### `Method SetString( obj:Object,value$ )`
 ### `Method SetString( obj:Object,value$ )`
 
 
-Set string field value
+Set [String](../../../brl/brl.blitz/#string) field value
 
 
 <br/>
 <br/>
 
 

+ 6 - 0
docs/api/brl/brl.reflection/tmember.md

@@ -27,3 +27,9 @@ Get member meta data
 
 
 <br/>
 <br/>
 
 
+### `Method HasMetaData:Int( key:String )`
+
+Returns [True](../../../brl/brl.blitz/#true) if <b>key</b> is in the metadata.
+
+<br/>
+

+ 182 - 2
docs/api/brl/brl.reflection/ttypeid.md

@@ -21,6 +21,12 @@ Get type meta data
 
 
 <br/>
 <br/>
 
 
+### `Method HasMetaData:Int( key:String )`
+
+Returns [True](../../../brl/brl.blitz/#true) if <b>key</b> is in the metadata.
+
+<br/>
+
 ### `Method SuperType:TTypeId()`
 ### `Method SuperType:TTypeId()`
 
 
 Get super type
 Get super type
@@ -248,13 +254,187 @@ Get the number of dimensions
 
 
 ### `Method GetArrayElement:Object( _array:Object,index )`
 ### `Method GetArrayElement:Object( _array:Object,index )`
 
 
-Get an array element
+Gets an array element
+
+<br/>
+
+### `Method GetStringArrayElement:String( _array:Object,index )`
+
+Gets an array element as a [String](../../../brl/brl.blitz/#string)
+
+<br/>
+
+### `Method GetByteArrayElement:Byte( _array:Object,index )`
+
+Gets an array element as a [Byte](../../../brl/brl.blitz/#byte)
+
+<br/>
+
+### `Method GetShortArrayElement:Short( _array:Object,index )`
+
+Gets an array element as a [Short](../../../brl/brl.blitz/#short)
+
+<br/>
+
+### `Method GetIntArrayElement:Int( _array:Object,index )`
+
+Gets an array element as an [Int](../../../brl/brl.blitz/#int)
+
+<br/>
+
+### `Method GetUIntArrayElement:UInt( _array:Object,index )`
+
+Gets an array element as a [UInt](../../../brl/brl.blitz/#uint)
+
+<br/>
+
+### `Method GetLongArrayElement:Long( _array:Object,index )`
+
+Gets an array element as a [Long](../../../brl/brl.blitz/#long)
+
+<br/>
+
+### `Method GetULongArrayElement:ULong( _array:Object,index )`
+
+Gets an array element as a [ULong](../../../brl/brl.blitz/#ulong)
+
+<br/>
+
+### `Method GetSizeTArrayElement:Size_T( _array:Object,index )`
+
+Gets an array element as a [Size_T](../../../brl/brl.blitz/#sizet)
+
+<br/>
+
+### `Method GetFloatArrayElement:Float( _array:Object,index )`
+
+Gets an array element as a [Float](../../../brl/brl.blitz/#float)
+
+<br/>
+
+### `Method GetDoubleArrayElement:Double( _array:Object,index )`
+
+Gets an array element as a [Double](../../../brl/brl.blitz/#double)
 
 
 <br/>
 <br/>
 
 
 ### `Method SetArrayElement( _array:Object,index,value:Object )`
 ### `Method SetArrayElement( _array:Object,index,value:Object )`
 
 
-Set an array element
+Sets an array element
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:Byte )`
+
+Sets an array element as a [Byte](../../../brl/brl.blitz/#byte)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:Short )`
+
+Sets an array element as a [Short](../../../brl/brl.blitz/#short)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:Int )`
+
+Sets an array element as an [Int](../../../brl/brl.blitz/#int)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:UInt )`
+
+Sets an array element as a [UInt](../../../brl/brl.blitz/#uint)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:Long )`
+
+Sets an array element as a [Long](../../../brl/brl.blitz/#long)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:ULong )`
+
+Sets an array element as a [ULong](../../../brl/brl.blitz/#ulong)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:Size_T )`
+
+Sets an array element as a [Size_T](../../../brl/brl.blitz/#sizet)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:Float )`
+
+Sets an array element as a [Float](../../../brl/brl.blitz/#float)
+
+<br/>
+
+### `Method SetArrayElement( _array:Object,index,value:Double )`
+
+Sets an array element as a [Double](../../../brl/brl.blitz/#double)
+
+<br/>
+
+### `Method SetByteArrayElement( _array:Object,index,value:Byte )`
+
+Sets an array element as a [Byte](../../../brl/brl.blitz/#byte)
+
+<br/>
+
+### `Method SetShortArrayElement( _array:Object,index,value:Short )`
+
+Sets an array element as a [Short](../../../brl/brl.blitz/#short)
+
+<br/>
+
+### `Method SetIntArrayElement( _array:Object,index,value:Int )`
+
+Sets an array element as a [Int](../../../brl/brl.blitz/#int)
+
+<br/>
+
+### `Method SetUIntArrayElement( _array:Object,index,value:UInt )`
+
+Sets an array element as a [UInt](../../../brl/brl.blitz/#uint)
+
+<br/>
+
+### `Method SetLongArrayElement( _array:Object,index,value:Long )`
+
+Sets an array element as a [Long](../../../brl/brl.blitz/#long)
+
+<br/>
+
+### `Method SetULongArrayElement( _array:Object,index,value:ULong )`
+
+Sets an array element as a [ULong](../../../brl/brl.blitz/#ulong)
+
+<br/>
+
+### `Method SetSizeTArrayElement( _array:Object,index,value:Size_T )`
+
+Sets an array element as a [Size_T](../../../brl/brl.blitz/#sizet)
+
+<br/>
+
+### `Method SetFloatArrayElement( _array:Object,index,value:Float )`
+
+Sets an array element as a [Float](../../../brl/brl.blitz/#float)
+
+<br/>
+
+### `Method SetDoubleArrayElement( _array:Object,index,value:Double )`
+
+Sets an array element as a [Double](../../../brl/brl.blitz/#double)
+
+<br/>
+
+### `Method SetStringArrayElement( _array:Object,index,value:String )`
+
+Sets an array element
 
 
 <br/>
 <br/>
 
 

+ 1 - 1
docs/api/brl/brl.stream/tcstream.md

@@ -12,7 +12,7 @@ Standard C file stream type
 
 
 ## Functions
 ## Functions
 
 
-### `Function OpenFile:TCStream( path$,readable:Int,writeable:Int )`
+### `Function OpenFile:TCStream( path$,readable:Int,writeMode:Int )`
 
 
 Create a TCStream from a 'C' filename
 Create a TCStream from a 'C' filename
 
 

+ 13 - 0
docs/api/brl/brl.stream/tio.md

@@ -121,3 +121,16 @@ Number of bytes successfully written
 
 
 <br/>
 <br/>
 
 
+### `Method SetSize:Int(size:Long)`
+
+Sets the size of the stream to <b>size</b> bytes.
+
+Only a few stream types support resizing.
+
+
+#### Returns
+[True](../../../brl/brl.blitz/#true) if the stream was able to be resized, [False](../../../brl/brl.blitz/#false) otherwise.
+
+
+<br/>
+

+ 3 - 3
docs/api/brl/brl.stream/tstream.md

@@ -23,7 +23,7 @@ TextStream type will be added capable of decoding text streams in multiple forma
 Reads bytes from a stream
 Reads bytes from a stream
 
 
 
 
-[ReadBytes](../../../brl/brl.stream/tstream/#method-readbytes-long-buf-byte-ptr-count-long) reads <b>count</b> bytes from the stream into the memory block specified by <b>buf</b>.
+[ReadBytes](../../../brl/brl.stream/tstream/#method-readbyteslong-bufbyte-ptrcountlong-) reads <b>count</b> bytes from the stream into the memory block specified by <b>buf</b>.
 
 
 If <b>count</b> bytes were not successfully read, a [TStreamReadException](../../../brl/brl.stream/tstreamreadexception) is thrown. This typically
 If <b>count</b> bytes were not successfully read, a [TStreamReadException](../../../brl/brl.stream/tstreamreadexception) is thrown. This typically
 occurs due to end of file.
 occurs due to end of file.
@@ -36,7 +36,7 @@ occurs due to end of file.
 Writes bytes to a stream
 Writes bytes to a stream
 
 
 
 
-[WriteBytes](../../../brl/brl.stream/tstream/#method-writebytes-long-buf-byte-ptr-count-long) writes <b>count</b> bytes from the memory block specified by <b>buf</b> to the stream.
+[WriteBytes](../../../brl/brl.stream/tstream/#method-writebyteslong-bufbyte-ptrcountlong-) writes <b>count</b> bytes from the memory block specified by <b>buf</b> to the stream.
 
 
 If <b>count</b> bytes were not successfully written, a [TStreamWriteException](../../../brl/brl.stream/tstreamwriteexception) is thrown. This typically
 If <b>count</b> bytes were not successfully written, a [TStreamWriteException](../../../brl/brl.stream/tstreamwriteexception) is thrown. This typically
 occurs due to end of file.
 occurs due to end of file.
@@ -49,7 +49,7 @@ occurs due to end of file.
 Skip bytes in a stream
 Skip bytes in a stream
 
 
 
 
-[SkipBytes](../../../brl/brl.stream/tstream/#method-skipbytes-long-count-long) read <b>count</b> bytes from the stream and throws them away.
+[SkipBytes](../../../brl/brl.stream/tstream/#method-skipbyteslong-countlong-) read <b>count</b> bytes from the stream and throws them away.
 
 
 If <b>count</b> bytes were not successfully read, a [TStreamReadException](../../../brl/brl.stream/tstreamreadexception) is thrown. This typically
 If <b>count</b> bytes were not successfully read, a [TStreamReadException](../../../brl/brl.stream/tstreamreadexception) is thrown. This typically
 occurs due to end of file.
 occurs due to end of file.

+ 4 - 4
docs/api/brl/brl.stream/tstreamfactory.md

@@ -8,7 +8,7 @@ Base stream factory type
 
 
 
 
 
 
-Stream factories are used by the [OpenStream](../../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true), [ReadStream](../../../brl/brl.stream/#function-readstream-tstream-url-object) and [WriteStream](../../../brl/brl.stream/#function-writestream-tstream-url-object) functions
+Stream factories are used by the [OpenStream](../../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../../brl/brl.stream/#function-readstreamtstream-urlobject-) and [WriteStream](../../../brl/brl.stream/#function-writestreamtstream-urlobject-) functions
 to create streams based on a 'url object'.
 to create streams based on a 'url object'.
 
 
 Url objects are usually strings, in which case the url is divided into 2 parts - a
 Url objects are usually strings, in which case the url is divided into 2 parts - a
@@ -22,15 +22,15 @@ To install your stream factory, simply create an instance of it using 'New'.
 
 
 ## Methods
 ## Methods
 
 
-### `Method CreateStream:TStream( url:Object,proto$,path$,readable:Int,writeable:Int ) Abstract`
+### `Method CreateStream:TStream( url:Object,proto$,path$,readable:Int,writeMode:Int ) Abstract`
 
 
 Create a stream based on a url object
 Create a stream based on a url object
 
 
 
 
 Types which extends TStreamFactory must implement this method.
 Types which extends TStreamFactory must implement this method.
 
 
-<b>url</b> contains the original url object as supplied to [OpenStream](../../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true), [ReadStream](../../../brl/brl.stream/#function-readstream-tstream-url-object) or
-[WriteStream](../../../brl/brl.stream/#function-writestream-tstream-url-object).
+<b>url</b> contains the original url object as supplied to [OpenStream](../../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../../brl/brl.stream/#function-readstreamtstream-urlobject-) or
+[WriteStream](../../../brl/brl.stream/#function-writestreamtstream-urlobject-).
 
 
 If <b>url</b> is a string, <b>proto</b> contains the url protocol - for example, the "incbin" part
 If <b>url</b> is a string, <b>proto</b> contains the url protocol - for example, the "incbin" part
 of "incbin::myfile".
 of "incbin::myfile".

+ 1 - 1
docs/api/brl/brl.stringbuilder/tsplitbuffer.md

@@ -8,7 +8,7 @@ An array of split text from a TStringBuilder.
 
 
 
 
 Note that the [TSplitBuffer](../../../brl/brl.stringbuilder/tsplitbuffer) is only valid while its parent [TStringBuilder](../../../brl/brl.stringbuilder/tstringbuilder) is unchanged.
 Note that the [TSplitBuffer](../../../brl/brl.stringbuilder/tsplitbuffer) is only valid while its parent [TStringBuilder](../../../brl/brl.stringbuilder/tstringbuilder) is unchanged.
-Once you modify the TStringBuffer you should call Split() again.
+Once you modify the [TSplitBuffer](../../../brl/brl.stringbuilder/tsplitbuffer) you should call Split() again.
 
 
 
 
 ## Methods
 ## Methods

+ 301 - 6
docs/api/brl/brl.stringbuilder/tstringbuilder.md

@@ -117,6 +117,30 @@ Print sb.ToString()
 ```
 ```
 <br/>
 <br/>
 
 
+### `Method Operator =:Int (obj:Object)`
+
+Returns [True](../../../brl/brl.blitz/#true) if <b>obj</b> is equal to this string builder.
+
+<br/>
+
+### `Method Operator =:Int (sb:TStringBuilder)`
+
+Returns [True](../../../brl/brl.blitz/#true) if <b>sb</b> is lexicographically equal to this string builder.
+
+<br/>
+
+### `Method Operator <>:Int (obj:Object)`
+
+Returns [True](../../../brl/brl.blitz/#true) if <b>obj</b> is not equal to this string builder.
+
+<br/>
+
+### `Method Operator <>:Int (sb:TStringBuilder)`
+
+Returns [True](../../../brl/brl.blitz/#true) if <b>sb</b> is not lexicographically equal to this string builder.
+
+<br/>
+
 ## Methods
 ## Methods
 
 
 ### `Method Length:Int()`
 ### `Method Length:Int()`
@@ -418,7 +442,7 @@ Print sb.ToString()
 
 
 Appends the new line string to the string builder.
 Appends the new line string to the string builder.
 
 
-The new line string can be altered using [SetNewLineText](../../../brl/brl.stringbuilder/tstringbuilder/#method-setnewlinetext-tstringbuildernewline-string). This might be used to force the output to always
+The new line string can be altered using [SetNewLineText](../../../brl/brl.stringbuilder/tstringbuilder/#method-setnewlinetexttstringbuildernewlinestring). This might be used to force the output to always
 use Unix line endings even when on Windows.
 use Unix line endings even when on Windows.
 
 
 
 
@@ -533,13 +557,13 @@ Print sb.ToString()
 
 
 ### `Method AppendSizet:TStringBuilder(value:Size_T)`
 ### `Method AppendSizet:TStringBuilder(value:Size_T)`
 
 
-Appends a [Size_T](../../../brl/brl.blitz/#size-t) value to the string builder.
+Appends a [Size_T](../../../brl/brl.blitz/#sizet) value to the string builder.
 
 
 <br/>
 <br/>
 
 
 ### `Method Append:TStringBuilder(value:Size_T)`
 ### `Method Append:TStringBuilder(value:Size_T)`
 
 
-Appends a [Size_T](../../../brl/brl.blitz/#size-t) value to the string builder.
+Appends a [Size_T](../../../brl/brl.blitz/#sizet) value to the string builder.
 
 
 #### Example
 #### Example
 ```blitzmax
 ```blitzmax
@@ -603,6 +627,42 @@ Print sb.ToString()
 ```
 ```
 <br/>
 <br/>
 
 
+### `Method AppendChar:TStringBuilder(char:Int)`
+
+Appends a character of the given <b>char</b> code point to the string builder.
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework BRL.StringBuilder
+Import brl.standardio
+
+Local sb:TStringBuilder = New TStringBuilder
+
+Local chars:Int[] = [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
+
+For Local c:Int = EachIn chars
+	sb.AppendChar(c)
+Next
+
+Print sb.ToString()
+```
+<br/>
+
+### `Method Compare:Int(o:Object) Override`
+
+Compares the string builder with another object.
+
+If the other object is a string builder then, the contents of two are compared lexicographically, as
+determined by the unicode value of each character in order.
+If there is no difference, then the shorter of the two contents precedes the longer.
+
+If the other object is not a string builder, the standard object comparison is made.
+
+
+<br/>
+
 ### `Method Find:Int(subString:String, startIndex:Int = 0)`
 ### `Method Find:Int(subString:String, startIndex:Int = 0)`
 
 
 Finds first occurance of a sub string.
 Finds first occurance of a sub string.
@@ -649,6 +709,186 @@ Print sb.FindLast("w", 30) ' -1
 ```
 ```
 <br/>
 <br/>
 
 
+### `Method Format:TStringBuilder(formatText:String, value:String)`
+
+Appends a [String](../../../brl/brl.blitz/#string) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:Byte)`
+
+Appends a [Byte](../../../brl/brl.blitz/#byte) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:Short)`
+
+Appends a [Short](../../../brl/brl.blitz/#short) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:Int)`
+
+Appends a [Int](../../../brl/brl.blitz/#int) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:UInt)`
+
+Appends a [UInt](../../../brl/brl.blitz/#uint) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:Long)`
+
+Appends a [Long](../../../brl/brl.blitz/#long) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:ULong)`
+
+Appends a [ULong](../../../brl/brl.blitz/#ulong) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:Size_T)`
+
+Appends a [Size_T](../../../brl/brl.blitz/#sizet) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:Float)`
+
+Appends a [Float](../../../brl/brl.blitz/#float) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method Format:TStringBuilder(formatText:String, value:Double)`
+
+Appends a [Double](../../../brl/brl.blitz/#double) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatString:TStringBuilder(formatText:String, value:String)`
+
+Appends a [String](../../../brl/brl.blitz/#string) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatByte:TStringBuilder(formatText:String, value:Byte)`
+
+Appends a [Byte](../../../brl/brl.blitz/#byte) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatShort:TStringBuilder(formatText:String, value:Short)`
+
+Appends a [Short](../../../brl/brl.blitz/#short) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatInt:TStringBuilder(formatText:String, value:Int)`
+
+Appends a [Int](../../../brl/brl.blitz/#int) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatUInt:TStringBuilder(formatText:String, value:UInt)`
+
+Appends a [UInt](../../../brl/brl.blitz/#uint) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatLong:TStringBuilder(formatText:String, value:Long)`
+
+Appends a [Long](../../../brl/brl.blitz/#long) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatULong:TStringBuilder(formatText:String, value:ULong)`
+
+Appends a [ULong](../../../brl/brl.blitz/#ulong) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatSizeT:TStringBuilder(formatText:String, value:Size_T)`
+
+Appends a [Size_T](../../../brl/brl.blitz/#sizet) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatFloat:TStringBuilder(formatText:String, value:Float)`
+
+Appends a [Float](../../../brl/brl.blitz/#float) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
+### `Method FormatDouble:TStringBuilder(formatText:String, value:Double)`
+
+Appends a [Double](../../../brl/brl.blitz/#double) value to the string builder using the specified printf style <b>formatText</b>.
+
+<b>formatText</b> is limited to 256 character bytes. Formatted text is limited to 2048 character bytes.
+
+
+<br/>
+
 ### `Method Left:String(length:Int)`
 ### `Method Left:String(length:Int)`
 
 
 Extracts the leftmost characters from the string builder.
 Extracts the leftmost characters from the string builder.
@@ -681,7 +921,7 @@ SuperStrict
 Framework BRL.StringBuilder
 Framework BRL.StringBuilder
 Import brl.standardio
 Import brl.standardio
 
 
-Local sb:TStringBuilder = New TStringBuilder("  Hello World!tt ")
+Local sb:TStringBuilder = New TStringBuilder("  Hello World!~t~t ")
 
 
 sb.Trim()
 sb.Trim()
 
 
@@ -784,12 +1024,15 @@ Print sb.Contains("Wo")
 ```
 ```
 <br/>
 <br/>
 
 
-### `Method Join:TStringBuilder(bits:String[])`
+### `Method Join:TStringBuilder(bits:String[], buf:TStringBuilder = Null)`
 
 
 Joins <b>bits</b> together by inserting this string builder between each bit.
 Joins <b>bits</b> together by inserting this string builder between each bit.
 
 
+Optionally accepts a preassigned string builder for populating with the result of the join.
+
+
 #### Returns
 #### Returns
-A new TStringBuilder object.
+<b>buf</b> or a new TStringBuilder object of <b>buf</b> is [Null](../../../brl/brl.blitz/#null).
 
 
 
 
 #### Example
 #### Example
@@ -809,6 +1052,12 @@ Print joined.ToString()
 ```
 ```
 <br/>
 <br/>
 
 
+### `Method JoinStrings:TStringBuilder(bits:String[], joiner:String)`
+
+Joins <b>bits</b> together by inserting <b>joiner</b> between each bit, appending to the end of this string builder.
+
+<br/>
+
 ### `Method ToLower:TStringBuilder()`
 ### `Method ToLower:TStringBuilder()`
 
 
 Converts all of the characters in the buffer to lower case.
 Converts all of the characters in the buffer to lower case.
@@ -843,6 +1092,26 @@ Print sb.ToUpper().ToString()
 ```
 ```
 <br/>
 <br/>
 
 
+### `Method LeftAlign:TStringBuilder(length:Int)`
+
+Left aligns the buffer, adjusted to the specified <b>length</b>.
+
+If buffer is longer than the specified length, the buffer is shortened to the specified length.
+If the buffer is shorter than the specified length, spaces are added to the right end of the buffer to produce the appropriate length.
+
+
+<br/>
+
+### `Method RightAlign:TStringBuilder(length:Int)`
+
+Right aligns the buffer, adjusted to the specified <b>length</b>.
+
+If buffer is longer than the specified length, the buffer is shortened to the specified length.
+If the buffer is shorter than the specified length, spaces are added to the left end of the buffer to produce the appropriate length.
+
+
+<br/>
+
 ### `Method Remove:TStringBuilder(startIndex:Int, endIndex:Int)`
 ### `Method Remove:TStringBuilder(startIndex:Int, endIndex:Int)`
 
 
 Removes a range of characters from the string builder.
 Removes a range of characters from the string builder.
@@ -1042,6 +1311,32 @@ Print sb.ToString()
 ```
 ```
 <br/>
 <br/>
 
 
+### `Method ToUTF8String:Byte Ptr()`
+
+Converts the value of the string builder to a UTF-8 formatted [Byte](../../../brl/brl.blitz/#byte) sequence.
+
+The resulting Byte Ptr must be freed with [MemFree](../../../brl/brl.blitz/#function-memfree-membyte-ptr-).
+
+
+#### Returns
+A pointer to a sequence of Bytes, or [Null](../../../brl/brl.blitz/#null) if the string builder is empty.
+
+
+<br/>
+
+### `Method ToWString:Short Ptr()`
+
+Converts the value of the string builder to a sequence of Shorts.
+
+The resulting Short Ptr must be freed with [MemFree](../../../brl/brl.blitz/#function-memfree-membyte-ptr-).
+
+
+#### Returns
+A pointer to a sequence of Shorts, or [Null](../../../brl/brl.blitz/#null) if the string builder is empty.
+
+
+<br/>
+
 ## Functions
 ## Functions
 
 
 ### `Function Create:TStringBuilder(Text:String)`
 ### `Function Create:TStringBuilder(Text:String)`

+ 6 - 0
docs/api/brl/brl.threads/tcondvar.md

@@ -21,6 +21,12 @@ Wait for the condvar
 
 
 <br/>
 <br/>
 
 
+### `Method TimedWait:Int( mutex:TMutex, millis:Int )`
+
+Wait for the condvar
+
+<br/>
+
 ### `Method Signal()`
 ### `Method Signal()`
 
 
 Signal the condvar
 Signal the condvar

+ 6 - 0
docs/api/brl/brl.threads/tsemaphore.md

@@ -21,6 +21,12 @@ Wait for the semaphore
 
 
 <br/>
 <br/>
 
 
+### `Method TimedWait:Int(millis:Int)`
+
+Wait for the semaphore
+
+<br/>
+
 ### `Method Post()`
 ### `Method Post()`
 
 
 Post the semaphore
 Post the semaphore

+ 63 - 0
docs/api/brl/brl.timer/tchrono.md

@@ -0,0 +1,63 @@
+---
+id: tchrono
+title: TChrono
+sidebar_label: TChrono
+---
+
+A high resolution timing mechanism.
+
+
+## Constructors
+
+### `Method New()`
+
+Creates a new [TChrono](../../../brl/brl.timer/tchrono) instance.
+
+<br/>
+
+## Methods
+
+### `Method Restart()`
+
+Restarts the timing mechanism.
+
+<br/>
+
+### `Method GetElapsedTicks:Long()`
+
+Returns the number of elapsed ticks since the timing mechanism was started.
+
+<br/>
+
+### `Method GetElapsedMilliseconds:ULong()`
+
+Returns the number of elapsed milliseconds since the timing mechanism was started.
+
+<br/>
+
+### `Method Start()`
+
+Starts the timimg mechanism.
+
+<br/>
+
+### `Method Stop()`
+
+Stops the timing mechanism.
+
+<br/>
+
+## Functions
+
+### `Function GetTimestamp:ULong()`
+
+Returns the current timestamp, in ns.
+
+<br/>
+
+### `Function Create:TChrono(start:Int = True)`
+
+Creates, and optionally starts an instance of [TChrono](../../../brl/brl.timer/tchrono).
+
+<br/>
+

+ 20 - 1
docs/api/brl/brl.vector/svec2d.md

@@ -321,7 +321,7 @@ Print b.ToString() ' 1, 0
 
 
 Returns the dot product of two vectors.
 Returns the dot product of two vectors.
 
 
-For normalized vectors [Dot](../../../brl/brl.vector/svec2d/#method-dot-doubleb-svec2d) returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions,
+For normalized vectors [Dot](../../../brl/brl.vector/svec2d/#method-dotdoublebsvec2d) returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions,
 and a number in between for other cases (e.g. Dot returns zero if vectors are perpendicular).
 and a number in between for other cases (e.g. Dot returns zero if vectors are perpendicular).
 
 
 
 
@@ -421,6 +421,25 @@ Print c.ToString() ' -5, 0
 ```
 ```
 <br/>
 <br/>
 
 
+### `Method Rotate:SVec2D(angle:Double)`
+
+Returns a vector rotated by <b>angle</b> degrees.
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import brl.vector
+
+Local a:SVec2D = New SVec2D(5, 0)
+
+Local b:SVec2D = a.Rotate(90)
+
+Print b.ToString() ' 0, 5
+```
+<br/>
+
 ### `Method ToString:String() Override`
 ### `Method ToString:String() Override`
 
 
 Returns a [String](../../../brl/brl.blitz/#string) representation of the vector.
 Returns a [String](../../../brl/brl.blitz/#string) representation of the vector.

+ 7 - 1
docs/api/brl/brl.vector/svec2f.md

@@ -126,7 +126,7 @@ When normalized, a vector keeps the same direction but its length is 1.0.
 
 
 Returns the dot product of two vectors.
 Returns the dot product of two vectors.
 
 
-For normalized vectors [Dot](../../../brl/brl.vector/svec2f/#method-dot-floatb-svec2f) returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions,
+For normalized vectors [Dot](../../../brl/brl.vector/svec2f/#method-dotfloatbsvec2f) returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions,
 and a number in between for other cases (e.g. Dot returns zero if vectors are perpendicular).
 and a number in between for other cases (e.g. Dot returns zero if vectors are perpendicular).
 
 
 
 
@@ -172,6 +172,12 @@ Returns a vector reflected from the given plane, specified by its normal vector.
 
 
 <br/>
 <br/>
 
 
+### `Method Rotate:SVec2F(angle:Double)`
+
+Returns a vector rotated by <b>angle</b> degrees.
+
+<br/>
+
 ### `Method ToString:String() Override`
 ### `Method ToString:String() Override`
 
 
 Returns a [String](../../../brl/brl.blitz/#string) representation of the vector.
 Returns a [String](../../../brl/brl.blitz/#string) representation of the vector.

+ 13 - 1
docs/api/brl/brl.vector/svec2i.md

@@ -71,6 +71,12 @@ Divides the vector by <b>s</b>, returning a new vector.
 
 
 <br/>
 <br/>
 
 
+### `Method Operator/:SVec2I(s:Float)`
+
+Divides the vector by <b>s</b>, returning a new vector.
+
+<br/>
+
 ### `Method Operator[]:Int(index:Int)`
 ### `Method Operator[]:Int(index:Int)`
 
 
 Retrieves the x or y component using [0] or [1] respectively.
 Retrieves the x or y component using [0] or [1] respectively.
@@ -126,7 +132,7 @@ When normalized, a vector keeps the same direction but its length is 1.0.
 
 
 Returns the dot product of two vectors.
 Returns the dot product of two vectors.
 
 
-For normalized vectors [Dot](../../../brl/brl.vector/svec2i/#method-dot-intb-svec2i) returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions,
+For normalized vectors [Dot](../../../brl/brl.vector/svec2i/#method-dotintbsvec2i) returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions,
 and a number in between for other cases (e.g. Dot returns zero if vectors are perpendicular).
 and a number in between for other cases (e.g. Dot returns zero if vectors are perpendicular).
 
 
 
 
@@ -172,6 +178,12 @@ Returns a vector reflected from the given plane, specified by its normal vector.
 
 
 <br/>
 <br/>
 
 
+### `Method Rotate:SVec2I(angle:Double)`
+
+Returns a vector rotated by <b>angle</b> degrees.
+
+<br/>
+
 ### `Method ToString:String() Override`
 ### `Method ToString:String() Override`
 
 
 Returns a [String](../../../brl/brl.blitz/#string) representation of the vector.
 Returns a [String](../../../brl/brl.blitz/#string) representation of the vector.

+ 6 - 0
docs/api/brl/brl.vector/svec3d.md

@@ -53,6 +53,12 @@ Multiplies the vector by <b>s</b>, returning a new vector.
 
 
 <br/>
 <br/>
 
 
+### `Method Operator/:SVec3D(s:Double)`
+
+Divides the vector by <b>s</b>, returning a new vector.
+
+<br/>
+
 ### `Method Operator[]:Double(index:Int)`
 ### `Method Operator[]:Double(index:Int)`
 
 
 Retrieves the x, y or z component using [0], [1] or [2] respectively.
 Retrieves the x, y or z component using [0], [1] or [2] respectively.

+ 6 - 0
docs/api/brl/brl.vector/svec3f.md

@@ -53,6 +53,12 @@ Multiplies the vector by <b>s</b>, returning a new vector.
 
 
 <br/>
 <br/>
 
 
+### `Method Operator/:SVec3F(s:Float)`
+
+Divides the vector by <b>s</b>, returning a new vector.
+
+<br/>
+
 ### `Method Operator[]:Float(index:Int)`
 ### `Method Operator[]:Float(index:Int)`
 
 
 Retrieves the x, y or z component using [0], [1] or [2] respectively.
 Retrieves the x, y or z component using [0], [1] or [2] respectively.

+ 12 - 0
docs/api/brl/brl.vector/svec3i.md

@@ -53,6 +53,18 @@ Multiplies the vector by <b>s</b>, returning a new vector.
 
 
 <br/>
 <br/>
 
 
+### `Method Operator/:SVec3I(s:Int)`
+
+Divides the vector by <b>s</b>, returning a new vector.
+
+<br/>
+
+### `Method Operator/:SVec3I(s:Float)`
+
+Divides the vector by <b>s</b>, returning a new vector.
+
+<br/>
+
 ### `Method Operator[]:Int(index:Int)`
 ### `Method Operator[]:Int(index:Int)`
 
 
 Retrieves the x, y or z component using [0], [1] or [2] respectively.
 Retrieves the x, y or z component using [0], [1] or [2] respectively.

+ 3 - 3
docs/api/brl/brl.xml/txmldoc.md

@@ -149,7 +149,7 @@ Incbin "sample.xml"
 Local doc:TxmlDoc = TxmlDoc.parseFile("sample.xml")
 Local doc:TxmlDoc = TxmlDoc.parseFile("sample.xml")
 
 
 If doc Then
 If doc Then
-	Print "nFilename :"
+	Print "~nFilename :"
 	doc.savefile("-")
 	doc.savefile("-")
 	doc.Free()
 	doc.Free()
 End If
 End If
@@ -158,7 +158,7 @@ Local stream:TStream = ReadStream("sample.xml")
 doc = TxmlDoc.parseFile(stream)
 doc = TxmlDoc.parseFile(stream)
 
 
 If doc Then
 If doc Then
-	Print "nStream :"
+	Print "~nStream :"
 	doc.savefile("-")
 	doc.savefile("-")
 	doc.Free()
 	doc.Free()
 End If
 End If
@@ -167,7 +167,7 @@ stream = ReadStream("incbin::sample.xml")
 doc = TxmlDoc.parseFile(stream)
 doc = TxmlDoc.parseFile(stream)
 
 
 If doc Then
 If doc Then
-	Print "nIncbin Stream :"
+	Print "~nIncbin Stream :"
 	doc.savefile("-")
 	doc.savefile("-")
 	doc.Free()
 	doc.Free()
 End If
 End If

+ 1 - 1
docs/api/brl/brl.xml/txmlnode.md

@@ -127,7 +127,7 @@ If doc Then
 
 
 	Local desc:TxmlNode = node.addChild("description")
 	Local desc:TxmlNode = node.addChild("description")
 
 
-	desc.addContent("Some of the songs on this CD are awesome.n")
+	desc.addContent("Some of the songs on this CD are awesome.~n")
 	desc.addContent("Tracks 5 & 6 put this CD up there...")
 	desc.addContent("Tracks 5 & 6 put this CD up there...")
 
 
 	doc.savefile("-")
 	doc.savefile("-")

+ 17 - 17
docs/api/brl/brl_audio.md

@@ -8,17 +8,17 @@ sidebar_label: BRL.Audio
 
 
 The BlitzMax audio module contains commands to load and play sounds.
 The BlitzMax audio module contains commands to load and play sounds.
 
 
-A sound file can be played in BlitzMax with a combination of [LoadSound](../../brl/brl.audio/#function-loadsound-tsound-url-object-flags-int-0) that loads a sound file
-and [PlaySound](../../brl/brl.audio/#function-playsound-tchannel-sound-tsound-channel-tchannel-null) which plays the sound through the systems audio system if available.
+A sound file can be played in BlitzMax with a combination of [LoadSound](../../brl/brl.audio/#function-loadsoundtsound-urlobjectflagsint0-) that loads a sound file
+and [PlaySound](../../brl/brl.audio/#function-playsoundtchannel-soundtsoundchanneltchannelnull-) which plays the sound through the systems audio system if available.
 
 
 BlitzMax contains native support for sound files in both .wav (uncompressed)
 BlitzMax contains native support for sound files in both .wav (uncompressed)
 and .ogg (compressed) file formats.
 and .ogg (compressed) file formats.
 
 
 Playback of sounds can be controlled with various audio channel
 Playback of sounds can be controlled with various audio channel
-operators including [SetChannelVolume](../../brl/brl.audio/#function-setchannelvolume-channel-tchannel-volume), [SetChannelPan](../../brl/brl.audio/#function-setchannelpan-channel-tchannel-pan), [SetChannelDepth](../../brl/brl.audio/#function-setchanneldepth-channel-tchannel-depth) and [SetChannelRate](../../brl/brl.audio/#function-setchannelrate-channel-tchannel-rate).
+operators including [SetChannelVolume](../../brl/brl.audio/#function-setchannelvolume-channeltchannelvolume-), [SetChannelPan](../../brl/brl.audio/#function-setchannelpan-channeltchannelpan-), [SetChannelDepth](../../brl/brl.audio/#function-setchanneldepth-channeltchanneldepth-) and [SetChannelRate](../../brl/brl.audio/#function-setchannelrate-channeltchannelrate-).
 
 
-A channel handle is obtained from either the return value of [PlaySound](../../brl/brl.audio/#function-playsound-tchannel-sound-tsound-channel-tchannel-null) and [CueSound](../../brl/brl.audio/#function-cuesound-tchannel-sound-tsound-channel-tchannel-null) or from
-reserving a channel with [AllocChannel](../../brl/brl.audio/#function-allocchannel-tchannel).
+A channel handle is obtained from either the return value of [PlaySound](../../brl/brl.audio/#function-playsoundtchannel-soundtsoundchanneltchannelnull-) and [CueSound](../../brl/brl.audio/#function-cuesoundtchannel-soundtsoundchanneltchannelnull-) or from
+reserving a channel with [AllocChannel](../../brl/brl.audio/#function-allocchanneltchannel).
 
 
 
 
 ## Types
 ## Types
@@ -35,11 +35,11 @@ Load a sound
 
 
 
 
 <b>url</b> can be either a string, a stream or a [TAudioSample](../../brl/brl.audiosample/taudiosample) object.
 <b>url</b> can be either a string, a stream or a [TAudioSample](../../brl/brl.audiosample/taudiosample) object.
-The returned sound can be played using [PlaySound](../../brl/brl.audio/#function-playsound-tchannel-sound-tsound-channel-tchannel-null) or [CueSound](../../brl/brl.audio/#function-cuesound-tchannel-sound-tsound-channel-tchannel-null).
+The returned sound can be played using [PlaySound](../../brl/brl.audio/#function-playsoundtchannel-soundtsoundchanneltchannelnull-) or [CueSound](../../brl/brl.audio/#function-cuesoundtchannel-soundtsoundchanneltchannelnull-).
 
 
 The <b>flags</b> parameter can be any combination of:
 The <b>flags</b> parameter can be any combination of:
 
 
-<table><tr><td> <b>Flag value</b></td><td><b>Effect</b></td></tr><tr><td>  SOUND_LOOP</td><td>The sound should loop when played back.</td></tr><tr><td>  SOUND_HARDWARE</td><td>The sound should be placed in onboard soundcard memory if possible.</table>
+<table><tr><td> <b>Flag value</b></td><td><b>Effect</b></td></tr><tr><td>  SOUND_LOOP</td><td>The sound should loop when played back.</td></tr><tr><td>  SOUND_HARDWARE</td><td>The sound should be placed in onboard soundcard memory if possible.</td></tr></table>
 
 
 
 
 To combine flags, use the binary 'or' operator: '|'.
 To combine flags, use the binary 'or' operator: '|'.
@@ -69,8 +69,8 @@ Input "Press any key to continue"
 Play a sound
 Play a sound
 
 
 
 
-[PlaySound](../../brl/brl.audio/#function-playsound-tchannel-sound-tsound-channel-tchannel-null) starts a sound playing through an audio channel.
-If no <b>channel</b> is specified, [PlaySound](../../brl/brl.audio/#function-playsound-tchannel-sound-tsound-channel-tchannel-null) automatically allocates a channel for you.
+[PlaySound](../../brl/brl.audio/#function-playsoundtchannel-soundtsoundchanneltchannelnull-) starts a sound playing through an audio channel.
+If no <b>channel</b> is specified, [PlaySound](../../brl/brl.audio/#function-playsoundtchannel-soundtsoundchanneltchannelnull-) automatically allocates a channel for you.
 
 
 
 
 #### Returns
 #### Returns
@@ -98,10 +98,10 @@ Cue a sound
 
 
 
 
 Prepares a sound for playback through an audio channel.
 Prepares a sound for playback through an audio channel.
-To actually start the sound, you must use [ResumeChannel](../../brl/brl.audio/#function-resumechannel-channel-tchannel).
-If no <b>channel</b> is specified, [CueSound](../../brl/brl.audio/#function-cuesound-tchannel-sound-tsound-channel-tchannel-null) automatically allocates a channel for you.
+To actually start the sound, you must use [ResumeChannel](../../brl/brl.audio/#function-resumechannel-channeltchannel-).
+If no <b>channel</b> is specified, [CueSound](../../brl/brl.audio/#function-cuesoundtchannel-soundtsoundchanneltchannelnull-) automatically allocates a channel for you.
 
 
-[CueSound](../../brl/brl.audio/#function-cuesound-tchannel-sound-tsound-channel-tchannel-null) allows you to setup various audio channel states such as volume, pan, depth
+[CueSound](../../brl/brl.audio/#function-cuesoundtchannel-soundtsoundchanneltchannelnull-) allows you to setup various audio channel states such as volume, pan, depth
 and rate before a sound actually starts playing.
 and rate before a sound actually starts playing.
 
 
 
 
@@ -131,8 +131,8 @@ Input "Press return key to quit"
 Allocate audio channel
 Allocate audio channel
 
 
 
 
-Allocates an audio channel for use with [PlaySound](../../brl/brl.audio/#function-playsound-tchannel-sound-tsound-channel-tchannel-null) and [CueSound](../../brl/brl.audio/#function-cuesound-tchannel-sound-tsound-channel-tchannel-null).
-Once you are finished with an audio channel, you should use [StopChannel](../../brl/brl.audio/#function-stopchannel-channel-tchannel).
+Allocates an audio channel for use with [PlaySound](../../brl/brl.audio/#function-playsoundtchannel-soundtsoundchanneltchannelnull-) and [CueSound](../../brl/brl.audio/#function-cuesoundtchannel-soundtsoundchanneltchannelnull-).
+Once you are finished with an audio channel, you should use [StopChannel](../../brl/brl.audio/#function-stopchannel-channeltchannel-).
 
 
 
 
 #### Returns
 #### Returns
@@ -187,8 +187,8 @@ Input "Press return key to quit"
 Determine whether an audio channel is playing
 Determine whether an audio channel is playing
 
 
 
 
-[ChannelPlaying](../../brl/brl.audio/#function-channelplaying-int-channel-tchannel) will return [False](../../brl/brl.blitz/#false) if either the channel has been paused using [PauseChannel](../../brl/brl.audio/#function-pausechannel-channel-tchannel),
-or stopped using [StopChannel](../../brl/brl.audio/#function-stopchannel-channel-tchannel).
+[ChannelPlaying](../../brl/brl.audio/#function-channelplayingint-channeltchannel-) will return [False](../../brl/brl.blitz/#false) if either the channel has been paused using [PauseChannel](../../brl/brl.audio/#function-pausechannel-channeltchannel-),
+or stopped using [StopChannel](../../brl/brl.audio/#function-stopchannel-channeltchannel-).
 
 
 
 
 #### Returns
 #### Returns
@@ -393,7 +393,7 @@ Until AppTerminate() Or KeyHit(KEY_ESCAPE)
 Resume audio channel playback
 Resume audio channel playback
 
 
 
 
-Resumes audio channel playback after it has been paused by [CueSound](../../brl/brl.audio/#function-cuesound-tchannel-sound-tsound-channel-tchannel-null) or [PauseChannel](../../brl/brl.audio/#function-pausechannel-channel-tchannel).
+Resumes audio channel playback after it has been paused by [CueSound](../../brl/brl.audio/#function-cuesoundtchannel-soundtsoundchanneltchannelnull-) or [PauseChannel](../../brl/brl.audio/#function-pausechannel-channeltchannel-).
 
 
 
 
 #### Example
 #### Example

+ 2 - 2
docs/api/brl/brl_audiosample.md

@@ -31,7 +31,7 @@ the audio sample will be played. <b>format</b> should be one of:
 </td></tr><tr><td>  &SF_MONO16BE</td><td>Mono signed 16 bit big endian
 </td></tr><tr><td>  &SF_MONO16BE</td><td>Mono signed 16 bit big endian
 </td></tr><tr><td>  &SF_STEREO8</td><td>Stereo unsigned 8 bit
 </td></tr><tr><td>  &SF_STEREO8</td><td>Stereo unsigned 8 bit
 </td></tr><tr><td>  &SF_STEREO16LE</td><td>Stereo signed 16 bit little endian
 </td></tr><tr><td>  &SF_STEREO16LE</td><td>Stereo signed 16 bit little endian
-</td></tr><tr><td>  &SF_STEREO16BE</td><td>Stereo signed 16 bit big endian</table>
+</td></tr><tr><td>  &SF_STEREO16BE</td><td>Stereo signed 16 bit big endian</td></tr></table>
 
 
 
 
 
 
@@ -67,7 +67,7 @@ Create an audio sample with existing data
 The memory referenced by a static audio sample is not released when the audio sample is
 The memory referenced by a static audio sample is not released when the audio sample is
 deleted.
 deleted.
 
 
-See [CreateAudioSample](../../brl/brl.audiosample/#function-createaudiosample-taudiosample-length-hertz-format) for possile <b>format</b> values.
+See [CreateAudioSample](../../brl/brl.audiosample/#function-createaudiosampletaudiosample-lengthhertzformat-) for possile <b>format</b> values.
 
 
 
 
 #### Returns
 #### Returns

+ 14 - 14
docs/api/brl/brl_bank.md

@@ -10,13 +10,13 @@ A bank object encapsulates a block of memory you can use to store arbitrary data
 Banks are useful for storing data that is of no fixed type - for example, the contents
 Banks are useful for storing data that is of no fixed type - for example, the contents
 of a binary file.
 of a binary file.
 
 
-To create a bank, use the [CreateBank](../../brl/brl.bank/#function-createbank-tbank-size-int-0) command.
+To create a bank, use the [CreateBank](../../brl/brl.bank/#function-createbanktbank-sizeint0-) command.
 
 
-To write data to a bank, use one of 'Poke' style commands, such as [PokeByte](../../brl/brl.bank/tbank/#method-pokebyte-offset-int-value-int).
+To write data to a bank, use one of 'Poke' style commands, such as [PokeByte](../../brl/brl.bank/tbank/#method-pokebyte-offsetintvalueint-).
 
 
-To read data from a bank, use one of the 'Peek' style commands, such as [PeekByte](../../brl/brl.bank/tbank/#method-peekbyte-int-offset-int).
+To read data from a bank, use one of the 'Peek' style commands, such as [PeekByte](../../brl/brl.bank/tbank/#method-peekbyteint-offsetint-).
 
 
-In addition, banks can be loaded or saved using [LoadBank](../../brl/brl.bank/#function-loadbank-tbank-url-object) or [SaveBank](../../brl/brl.bank/#function-savebank-int-bank-tbank-url-object).
+In addition, banks can be loaded or saved using [LoadBank](../../brl/brl.bank/#function-loadbanktbank-urlobject-) or [SaveBank](../../brl/brl.bank/#function-savebankint-banktbankurlobject-).
 
 
 
 
 ## Types
 ## Types
@@ -31,7 +31,7 @@ In addition, banks can be loaded or saved using [LoadBank](../../brl/brl.bank/#f
 Create a bank
 Create a bank
 
 
 
 
-[CreateBank](../../brl/brl.bank/#function-createbank-tbank-size-int-0) creates a Bank allocating a specified amount of memory that
+[CreateBank](../../brl/brl.bank/#function-createbanktbank-sizeint0-) creates a Bank allocating a specified amount of memory that
 can be used for storage of binary data using the various Poke and
 can be used for storage of binary data using the various Poke and
 Peek commands.
 Peek commands.
 
 
@@ -72,7 +72,7 @@ A bank object that references an existing block of memory
 Load a bank
 Load a bank
 
 
 
 
-[LoadBank](../../brl/brl.bank/#function-loadbank-tbank-url-object) reads the entire contents of a binary file from a specified <b>url</b> into a newly
+[LoadBank](../../brl/brl.bank/#function-loadbanktbank-urlobject-) reads the entire contents of a binary file from a specified <b>url</b> into a newly
 created bank with a size matching that of the file.
 created bank with a size matching that of the file.
 
 
 
 
@@ -106,7 +106,7 @@ Next
 Save a bank
 Save a bank
 
 
 
 
-[SaveBank](../../brl/brl.bank/#function-savebank-int-bank-tbank-url-object) writes it's entire contents to a <b>url</b>. If the <b>url</b> is a file path a new
+[SaveBank](../../brl/brl.bank/#function-savebankint-banktbankurlobject-) writes it's entire contents to a <b>url</b>. If the <b>url</b> is a file path a new
 file is created.
 file is created.
 
 
 
 
@@ -134,7 +134,7 @@ SaveBank MyBank,"mybank.dat"
 Get bank's memory buffer
 Get bank's memory buffer
 
 
 
 
-Please use [LockBank](../../brl/brl.bank/#function-lockbank-byte-ptr-bank-tbank) and [UnlockBank](../../brl/brl.bank/#function-unlockbank-bank-tbank) instead of this method.
+Please use [LockBank](../../brl/brl.bank/#function-lockbankbyte-ptr-banktbank-) and [UnlockBank](../../brl/brl.bank/#function-unlockbank-banktbank-) instead of this method.
 
 
 
 
 #### Returns
 #### Returns
@@ -162,7 +162,7 @@ Lock a bank's memory block
 
 
 While locked, a bank cannot be resized.
 While locked, a bank cannot be resized.
 
 
-After you have finished with a bank's memory block, you must use [UnlockBank](../../brl/brl.bank/#function-unlockbank-bank-tbank)
+After you have finished with a bank's memory block, you must use [UnlockBank](../../brl/brl.bank/#function-unlockbank-banktbank-)
 to return it to the bank.
 to return it to the bank.
 
 
 
 
@@ -177,7 +177,7 @@ A byte pointer to the memory block controlled by the bank.
 Unlock a bank's memory block
 Unlock a bank's memory block
 
 
 
 
-After you have finished with a bank's memory block, you must use [UnlockBank](../../brl/brl.bank/#function-unlockbank-bank-tbank)
+After you have finished with a bank's memory block, you must use [UnlockBank](../../brl/brl.bank/#function-unlockbank-banktbank-)
 to return it to the bank.
 to return it to the bank.
 
 
 
 
@@ -208,7 +208,7 @@ Get capacity of bank
 
 
 The capacity of a bank is the size limit before a bank must allocate
 The capacity of a bank is the size limit before a bank must allocate
 more memory due to a resize. Bank capacity may be increased due to a call
 more memory due to a resize. Bank capacity may be increased due to a call
-to [ResizeBank](../../brl/brl.bank/#function-resizebank-bank-tbank-size-size-t) by either 50% or the requested amount, whichever is greater.
+to [ResizeBank](../../brl/brl.bank/#function-resizebank-banktbanksizesizet-) by either 50% or the requested amount, whichever is greater.
 Capacity never decreases.
 Capacity never decreases.
 
 
 
 
@@ -232,9 +232,9 @@ Print "capacity of the bank is: "+BankCapacity(bank)
 Resize a bank
 Resize a bank
 
 
 
 
-[ResizeBank](../../brl/brl.bank/#function-resizebank-bank-tbank-size-size-t) modifies the size limit of a bank. This may cause memory to be
+[ResizeBank](../../brl/brl.bank/#function-resizebank-banktbanksizesizet-) modifies the size limit of a bank. This may cause memory to be
 allocated if the requested size is greater than the bank's current capacity,
 allocated if the requested size is greater than the bank's current capacity,
-see [BankCapacity](../../brl/brl.bank/#function-bankcapacity-long-bank-tbank) for more information.
+see [BankCapacity](../../brl/brl.bank/#function-bankcapacitylong-banktbank-) for more information.
 
 
 
 
 <br/>
 <br/>
@@ -244,7 +244,7 @@ see [BankCapacity](../../brl/brl.bank/#function-bankcapacity-long-bank-tbank) fo
 Copy bank contents
 Copy bank contents
 
 
 
 
-[CopyBank](../../brl/brl.bank/#function-copybank-src-bank-tbank-src-offset-size-t-dst-bank-tbank-dst-offset-size-t-count-size-t) copies <b>count</b> bytes from <b>src_offset</b> in <b>src_bank</b> to <b>dst_offset</b>
+[CopyBank](../../brl/brl.bank/#function-copybank-srcbanktbanksrcoffsetsizetdstbanktbankdstoffsetsizetcountsizet-) copies <b>count</b> bytes from <b>src_offset</b> in <b>src_bank</b> to <b>dst_offset</b>
 in <b>dst_bank</b>.
 in <b>dst_bank</b>.
 
 
 
 

+ 2 - 2
docs/api/brl/brl_bankstream.md

@@ -8,9 +8,9 @@ sidebar_label: BRL.BankStream
 A bank stream allows you to read data into or out of a bank. A bank stream can be used with
 A bank stream allows you to read data into or out of a bank. A bank stream can be used with
 any of the stream commands, or anywhere a [TStream](../../brl/brl.stream/tstream) object is expected.
 any of the stream commands, or anywhere a [TStream](../../brl/brl.stream/tstream) object is expected.
 
 
-To create a bank stream, use the [CreateBankStream](../../brl/brl.bankstream/#function-createbankstream-tbankstream-bank-tbank) command.
+To create a bank stream, use the [CreateBankStream](../../brl/brl.bankstream/#function-createbankstreamtbankstream-banktbank-) command.
 
 
-As with all streams, you should use [CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream) when you are finished with the bank stream.
+As with all streams, you should use [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-) when you are finished with the bank stream.
 
 
 
 
 ## Types
 ## Types

+ 236 - 1
docs/api/brl/brl_clipboard.md

@@ -5,6 +5,14 @@ sidebar_label: BRL.Clipboard
 ---
 ---
 
 
 
 
+A Brl.Clipboard allows to share (textual) data between applications.
+
+To create a clipboard manager, use the [CreateClipboard](../../brl/brl.clipboard/#function-createclipboardtclipboardoptstclipboardopts-null) command.
+
+Set (textual) content of the clipboard using [ClipboardSetText](../../brl/brl.clipboard/#function-clipboardsettextintclipboardtclipboard-srcstring) or [ClipboardSetTextEx](../../brl/brl.clipboard/#function-clipboardsettextexintclipboardtclipboard-srcstring-clipboardmodeint-lcbclipboard). Both commands return True or False depending on whether the text was set or not. You can also clear the clipboard  with [ClearClipboard](../../brl/brl.clipboard/#function-clearclipboardclipboardtclipboard-clipboardmodeint-lcbclipboard) command.
+To retrieve the (textual) content use [ClipboardSetText](../../brl/brl.clipboard/#function-clipboardsettextintclipboardtclipboard-srcstring) or [ClipboardSetTextEx](../../brl/brl.clipboard/#function-clipboardsettextexintclipboardtclipboard-srcstring-clipboardmodeint-lcbclipboard).
+
+
 ## Types
 ## Types
 | Type | Description |
 | Type | Description |
 |---|---|
 |---|---|
@@ -13,6 +21,227 @@ sidebar_label: BRL.Clipboard
 | [TX11ClipboardOpts](../../brl/brl.clipboard/tx11clipboardopts) | X11 options. |
 | [TX11ClipboardOpts](../../brl/brl.clipboard/tx11clipboardopts) | X11 options. |
 | [TClipboard](../../brl/brl.clipboard/tclipboard) | A clipboard context. |
 | [TClipboard](../../brl/brl.clipboard/tclipboard) | A clipboard context. |
 
 
+## Functions
+
+### `Function CreateClipboard:TClipboard(opts:TClipboardOpts = Null)`
+
+Creates a new clipboard instance.
+
+#### Returns
+The clipboard instance, or Null on failure.
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = CreateClipboard()
+
+' print out currently hold text
+print "current: " + ClipboardText(clipboard)
+
+' try to set a new text
+If ClipboardSetText(clipboard, "TEST") Then
+	print "set: " + ClipboardText(clipboard)
+EndIf
+```
+<br/>
+
+### `Function ClearClipboard(clipboard:TClipboard, clipboardMode:Int = LCB_CLIPBOARD)`
+
+Clears the contents of the given clipboard.
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = CreateClipboard()
+
+' empty the clipboard
+ClearClipboard(clipboard)
+
+print "content: ~q" + ClipboardText(clipboard) + "~q"
+
+'output:
+'content: ""
+```
+<br/>
+
+### `Function ClipboardHasOwnership:Int(clipboard:TClipboard, clipboardMode:Int = LCB_CLIPBOARD)`
+
+Determines if the clipboard content is currently owned.
+
+#### Returns
+[True](../../brl/brl.blitz/#true) if the clipboard data is owned by the provided instance.
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = CreateClipboard()
+
+' clipboard mode can be:
+' LCB_CLIPBOARD = The primary (global) clipboard [default mode]
+' LCB_PRIMARY = The (global) mouse selection clipboard.
+' LCB_SECONDARY = The largely unused (global) secondary selection clipboard.
+Local clipboardMode:int = LCB_CLIPBOARD
+
+If ClipboardHasOwnerShip(clipboard, clipboardMode)
+	print "clipboard content created by us"
+Else
+	print "clipboard content of another application"
+EndIf
+```
+<br/>
+
+### `Function ClipboardText:String(clipboard:TClipboard)`
+
+Retrieves the text currently held on the clipboard.
+
+#### Returns
+A copy to the retrieved text.
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = CreateClipboard()
+
+' try to set a new text
+If ClipboardSetText(clipboard, "TEST") Then
+	Print ClipboardText(clipboard)
+EndIf
+
+'output:
+'TEST
+```
+<br/>
+
+### `Function ClipboardTextEx:String(clipboard:TClipboard, length:Int Var, clipboardMode:Int = LCB_CLIPBOARD)`
+
+Retrieves the text currently held on the clipboard.
+
+<b>length</b> returns the length of the retrieved data.
+
+
+#### Returns
+A copy to the retrieved text.
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = CreateClipboard()
+
+' clipboard mode can be:
+' LCB_CLIPBOARD = The primary (global) clipboard [default mode]
+' LCB_PRIMARY = The (global) mouse selection clipboard.
+' LCB_SECONDARY = The largely unused (global) secondary selection clipboard.
+Local clipboardMode:Int = LCB_CLIPBOARD
+' variable to hold text length when fetching text with TextEx()
+Local textLength:Int
+
+' try to set a new text
+If ClipboardSetTextEx(clipboard, "TEST", clipboardMode) Then
+	Print ClipboardTextEx(clipboard, textLength, clipboardMode)
+	Print "length of clipboard content: " + textLength
+EndIf
+
+'output:
+'TEST
+'length of clipboard content: 4
+```
+<br/>
+
+### `Function ClipboardSetText:Int(clipboard:TClipboard, src:String)`
+
+Sets the text for the clipboard.
+
+#### Returns
+[True](../../brl/brl.blitz/#true) if the clipboard was set (#false on error).
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = CreateClipboard()
+
+' try to set a new text
+If ClipboardSetText(clipboard, "TEST") Then
+	Print ClipboardText(clipboard)
+EndIf
+
+'output:
+'TEST
+```
+<br/>
+
+### `Function ClipboardSetTextEx:Int(clipboard:TClipboard, src:String, clipboardMode:Int = LCB_CLIPBOARD)`
+
+Sets the text for the clipboard.
+
+#### Returns
+[True](../../brl/brl.blitz/#true) if the clipboard was set (#false on error).
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.Clipboard
+Import Brl.StandardIO
+
+' create a clipboard manager to access the system wide clipboard
+Local clipboard:TClipboard = CreateClipboard()
+
+' clipboard mode can be:
+' LCB_CLIPBOARD = The primary (global) clipboard [default mode]
+' LCB_PRIMARY = The (global) mouse selection clipboard.
+' LCB_SECONDARY = The largely unused (global) secondary selection clipboard.
+Local clipboardMode:Int = LCB_CLIPBOARD
+' variable to hold text length when fetching text with TextEx()
+Local textLength:Int
+
+' try to set a new text
+If ClipboardSetTextEx(clipboard, "TEST", clipboardMode) Then
+	Print ClipboardTextEx(clipboard, textLength, clipboardMode)
+	Print "length of clipboard content: " + textLength
+EndIf
+
+'output:
+'TEST
+'length of clipboard content: 4
+```
+<br/>
+
 ## Consts
 ## Consts
 
 
 ### `Const LCB_CLIPBOARD:Int = 0`
 ### `Const LCB_CLIPBOARD:Int = 0`
@@ -21,9 +250,15 @@ The primary (global) clipboard.
 
 
 <br/>
 <br/>
 
 
-### `Const LCB_SELECTION:Int = 1`
+### `Const LCB_PRIMARY:Int = 1`
 
 
 The (global) mouse selection clipboard.
 The (global) mouse selection clipboard.
 
 
 <br/>
 <br/>
 
 
+### `Const LCB_SECONDARY:Int = 2`
+
+The largely unused (global) secondary selection clipboard.
+
+<br/>
+

+ 1 - 1
docs/api/brl/brl_d3d7max2d.md

@@ -16,7 +16,7 @@ The Direct3D7 Max2D module provides a Direct3D7 driver for Max2D.
 Get Direct3D7 Max2D Driver
 Get Direct3D7 Max2D Driver
 
 
 
 
-The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-driver-tgraphicsdriver-defaultflags-graphics-backbuffer) to enable Direct3D Max2D rendering.
+The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-drivertgraphicsdriverdefaultflagsgraphicsbackbuffer-) to enable Direct3D Max2D rendering.
 
 
 
 
 <br/>
 <br/>

+ 1 - 1
docs/api/brl/brl_d3d9max2d.md

@@ -16,7 +16,7 @@ The Direct3D9 Max2D module provides a Direct3D9 driver for Max2D.
 Get Direct3D9 Max2D Driver
 Get Direct3D9 Max2D Driver
 
 
 
 
-The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-driver-tgraphicsdriver-defaultflags-graphics-backbuffer) to enable Direct3D9 Max2D rendering.
+The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-drivertgraphicsdriverdefaultflagsgraphicsbackbuffer-) to enable Direct3D9 Max2D rendering.
 
 
 
 
 <br/>
 <br/>

+ 1 - 1
docs/api/brl/brl_directsoundaudio.md

@@ -6,6 +6,6 @@ sidebar_label: BRL.DirectSoundAudio
 
 
 
 
 
 
-The DirectSound audio module provides DirectSound drivers for use with the audio module.
+The DirectSound audio module provides DirectSound drivers for use with the [audio](../../audio) module.
 
 
 
 

+ 11 - 20
docs/api/brl/brl_endianstream.md

@@ -5,27 +5,18 @@ sidebar_label: BRL.EndianStream
 ---
 ---
 
 
 
 
-Endian streams allow you to swap the byte order of stream data.<br>
-<br>
-This can be useful for reading or writing binary streams which are in a fixed endian format on multiple platforms.<br>
-<br>
-Endian format refers to the order multi-byte values are stored. For example, an integer is four bytes long, but in what order should each byte be stored? Low byte first or high byte first?<br>
-<br>
-This choice is generally dictated by the CPU. For example, Intel CPU's such as the pentium store multi-byte values 'low byte first' which is known as <i>little endian</i>. On the other hand, PowerPC CPU's store multi-byte values 'high byte first' which is known as <i>big endian</i>.<br>
-<br>
-Most of the time, you don't have to worry about endian issues. As long as the same endian format is being used to read and write data, there is no problem. However, endian issues do need to be taken into account when reading or writing binary files. For example, writing a binary file on a PC  (which is little endian) and reading it back on a Mac (which is big endian) may produce odd results if the file contains multibyte values.<br>
-<br>
+Endian streams allow you to swap the byte order of stream data.<br/>
+<br/>
+This can be useful for reading or writing binary streams which are in a fixed endian format on multiple platforms.<br/>
+<br/>
+Endian format refers to the order multi-byte values are stored. For example, an integer is four bytes long, but in what order should each byte be stored? Low byte first or high byte first?<br/>
+<br/>
+This choice is generally dictated by the CPU. For example, Intel CPU's such as the pentium store multi-byte values 'low byte first' which is known as <i>little endian</i>. On the other hand, PowerPC CPU's store multi-byte values 'high byte first' which is known as <i>big endian</i>.<br/>
+<br/>
+Most of the time, you don't have to worry about endian issues. As long as the same endian format is being used to read and write data, there is no problem. However, endian issues do need to be taken into account when reading or writing binary files. For example, writing a binary file on a PC  (which is little endian) and reading it back on a Mac (which is big endian) may produce odd results if the file contains multibyte values.<br/>
+<br/>
 Endian streams help solve this problem by modifying the behaviour of stream commands that read or write multi-byte values. These commands are:
 Endian streams help solve this problem by modifying the behaviour of stream commands that read or write multi-byte values. These commands are:
-<font class=token>ReadShort</font>,
-<font class=token>ReadInt</font>,
-<font class=token>ReadLong</font>,
-<font class=token>ReadFloat</font>,
-<font class=token>ReadDouble</font>,
-<font class=token>WriteShort</font>,
-<font class=token>WriteInt</font>,
-<font class=token>WriteLong</font>,
-<font class=token>WriteFloat</font> and
-<font class=token>WriteDouble</font>.
+[ReadShort](../../brl/brl.stream/tstream/#method-readshortint), [ReadInt](../../brl/brl.stream/tstream/#method-readintint), [ReadLong](../../brl/brl.stream/tstream/#method-readlonglong), [ReadFloat](../../brl/brl.stream/tstream/#method-readfloat), [ReadDouble](../../brl/brl.stream/tstream/#method-readdouble), [WriteShort](../../brl/brl.stream/tstream/#method-writeshort-nint-), [WriteInt](../../brl/brl.stream/tstream/#method-writeint-nint-), [WriteLong](../../brl/brl.stream/tstream/#method-writelong-nlong-), [WriteFloat](../../brl/brl.stream/tstream/#method-writefloat-n-) and [WriteDouble](../../brl/brl.stream/tstream/#method-writedouble-n-).
 
 
 
 
 ## Functions
 ## Functions

+ 7 - 6
docs/api/brl/brl_event.md

@@ -10,7 +10,7 @@ Event objects are used to notify your application about external events such as
 user interface activity and so on.
 user interface activity and so on.
 
 
 The are two main ways your program can receive events: either by adding a hook function to 
 The are two main ways your program can receive events: either by adding a hook function to 
-the [EmitEventHook](../../brl/brl.event/#global-emiteventhook-int-allochookid) hook, or by using using the global event queue
+the [EmitEventHook](../../brl/brl.event/#global-emiteventhookintallochookid) hook, or by using using the global event queue
 
 
 The most important field in an event object is the <b>id</b> field, which identifies the kind of 
 The most important field in an event object is the <b>id</b> field, which identifies the kind of 
 event:
 event:
@@ -22,7 +22,8 @@ event:
 | EVENT_APPTERMINATE | Application wants to terminate |
 | EVENT_APPTERMINATE | Application wants to terminate |
 | EVENT_KEYDOWN | Key pressed. Event data contains keycode |
 | EVENT_KEYDOWN | Key pressed. Event data contains keycode |
 | EVENT_KEYUP | Key released. Event data contains keycode |
 | EVENT_KEYUP | Key released. Event data contains keycode |
-| EVENT_KEYCHAR | Key character. Event data contains unicode value |
+| EVENT_KEYCHAR | Key character being pressed. Event data contains unicode value of character. |
+| EVENT_KEYREPEAT | Key held down. Event data contains keycode |
 | EVENT_MOUSEDOWN | Mouse button pressed. Event data contains mouse button code |
 | EVENT_MOUSEDOWN | Mouse button pressed. Event data contains mouse button code |
 | EVENT_MOUSEUP | Mouse button released. Event data contains mouse button code |
 | EVENT_MOUSEUP | Mouse button released. Event data contains mouse button code |
 | EVENT_MOUSEMOVE | Mouse moved. Event x and y contain mouse coordinates |
 | EVENT_MOUSEMOVE | Mouse moved. Event x and y contain mouse coordinates |
@@ -44,7 +45,7 @@ event:
 | EVENT_GADGETOPEN | A TreeView Node has been expanded |
 | EVENT_GADGETOPEN | A TreeView Node has been expanded |
 | EVENT_GADGETCLOSE | A TreeView Node has been collapsed |
 | EVENT_GADGETCLOSE | A TreeView Node has been collapsed |
 | EVENT_GADGETDONE | An HTMLView has completed loading a page |
 | EVENT_GADGETDONE | An HTMLView has completed loading a page |
-
+| --- | --- |
 
 
 
 
 ## Types
 ## Types
@@ -59,7 +60,7 @@ event:
 Emit an event
 Emit an event
 
 
 
 
-Runs all [EmitEventHook](../../brl/brl.event/#global-emiteventhook-int-allochookid) hooks, passing <b>event</b> as the hook data.
+Runs all [EmitEventHook](../../brl/brl.event/#global-emiteventhookintallochookid) hooks, passing <b>event</b> as the hook data.
 
 
 
 
 <br/>
 <br/>
@@ -109,9 +110,9 @@ A new user event id
 Hook id for emitted events
 Hook id for emitted events
 
 
 
 
-The [EmitEventHook](../../brl/brl.event/#global-emiteventhook-int-allochookid) global variable contains a hook id for use with [AddHook](../../brl/brl.hook/#function-addhook-id-func-object-id-data-object-context-object-context-object-null-priority-0).
+The [EmitEventHook](../../brl/brl.event/#global-emiteventhookintallochookid) global variable contains a hook id for use with [AddHook](../../brl/brl.hook/#function-addhook-idfuncobject-iddataobjectcontextobject-contextobjectnullpriority0-).
 
 
-Each time [EmitEvent](../../brl/brl.event/#function-emitevent-event-tevent) is called, the event is passed to all [EmitEventHook](../../brl/brl.event/#global-emiteventhook-int-allochookid)
+Each time [EmitEvent](../../brl/brl.event/#function-emitevent-eventtevent-) is called, the event is passed to all [EmitEventHook](../../brl/brl.event/#global-emiteventhookintallochookid)
 hook functions by means of the hook function <b>data</b> parameter.
 hook functions by means of the hook function <b>data</b> parameter.
 
 
 
 

+ 22 - 22
docs/api/brl/brl_eventqueue.md

@@ -9,10 +9,10 @@ sidebar_label: BRL.EventQueue
 The event queue is a simple first-in, first-out queue that is used to collect 
 The event queue is a simple first-in, first-out queue that is used to collect 
 [TEvent](../../brl/brl.event/tevent) objects emitted by your application.
 [TEvent](../../brl/brl.event/tevent) objects emitted by your application.
 
 
-The [PollEvent](../../brl/brl.eventqueue/#function-pollevent-int) and [WaitEvent](../../brl/brl.eventqueue/#function-waitevent-int) commands can be used to receive the next event from the event
-queue, while the [PeekEvent](../../brl/brl.eventqueue/#function-peekevent-tevent) command can be used to check if the event queue is empty.
+The [PollEvent](../../brl/brl.eventqueue/#function-polleventint) and [WaitEvent](../../brl/brl.eventqueue/#function-waiteventint) commands can be used to receive the next event from the event
+queue, while the [PeekEvent](../../brl/brl.eventqueue/#function-peekeventtevent) command can be used to check if the event queue is empty.
 
 
-Events are added to the event queue using [PostEvent](../../brl/brl.eventqueue/#function-postevent-event-tevent-update-int-false).
+Events are added to the event queue using [PostEvent](../../brl/brl.eventqueue/#function-postevent-eventteventupdateintfalse-).
 
 
 
 
 ## Functions
 ## Functions
@@ -22,10 +22,10 @@ Events are added to the event queue using [PostEvent](../../brl/brl.eventqueue/#
 Examine the next event in the event queue
 Examine the next event in the event queue
 
 
 
 
-[PeekEvent](../../brl/brl.eventqueue/#function-peekevent-tevent) examines the next event in the event queue, without removing it from the
-event queue or modifying the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable.
+[PeekEvent](../../brl/brl.eventqueue/#function-peekeventtevent) examines the next event in the event queue, without removing it from the
+event queue or modifying the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable.
 
 
-If there are no events in the event queue, [PeekEvent](../../brl/brl.eventqueue/#function-peekevent-tevent) returns [Null](../../brl/brl.blitz/#null).
+If there are no events in the event queue, [PeekEvent](../../brl/brl.eventqueue/#function-peekeventtevent) returns [Null](../../brl/brl.blitz/#null).
 
 
 
 
 <br/>
 <br/>
@@ -35,10 +35,10 @@ If there are no events in the event queue, [PeekEvent](../../brl/brl.eventqueue/
 Get the next event from the event queue
 Get the next event from the event queue
 
 
 
 
-[PollEvent](../../brl/brl.eventqueue/#function-pollevent-int) removes an event from the event queue and updates the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent)
+[PollEvent](../../brl/brl.eventqueue/#function-polleventint) removes an event from the event queue and updates the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent)
 global variable.
 global variable.
 
 
-If there are no events in the event queue, [PollEvent](../../brl/brl.eventqueue/#function-pollevent-int) returns 0.
+If there are no events in the event queue, [PollEvent](../../brl/brl.eventqueue/#function-polleventint) returns 0.
 
 
 
 
 #### Returns
 #### Returns
@@ -52,10 +52,10 @@ The id of the next event in the event queue, or 0 if the event queue is empty
 Get the next event from the event queue, waiting if necessary
 Get the next event from the event queue, waiting if necessary
 
 
 
 
-[WaitEvent](../../brl/brl.eventqueue/#function-waitevent-int) removes an event from the event queue and updates the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent)
+[WaitEvent](../../brl/brl.eventqueue/#function-waiteventint) removes an event from the event queue and updates the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent)
 global variable.
 global variable.
 
 
-If there are no events in the event queue, [WaitEvent](../../brl/brl.eventqueue/#function-waitevent-int) halts program execution until
+If there are no events in the event queue, [WaitEvent](../../brl/brl.eventqueue/#function-waiteventint) halts program execution until
 an event is available.
 an event is available.
 
 
 
 
@@ -69,7 +69,7 @@ The id of the next event in the event queue
 
 
 Post an event to the event queue
 Post an event to the event queue
 
 
-[PostEvent](../../brl/brl.eventqueue/#function-postevent-event-tevent-update-int-false) adds an event to the end of the event queue.
+[PostEvent](../../brl/brl.eventqueue/#function-postevent-eventteventupdateintfalse-) adds an event to the end of the event queue.
 
 
 The <b>update</b> flag can be used to update an existing event. If <b>update</b> is True
 The <b>update</b> flag can be used to update an existing event. If <b>update</b> is True
 and an event with the same <b>id</b> and <b>source</b> is found in the event
 and an event with the same <b>id</b> and <b>source</b> is found in the event
@@ -85,7 +85,7 @@ events such as timer events from flooding the event queue.
 Get current event id
 Get current event id
 
 
 #### Returns
 #### Returns
-The <b>id</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable
+The <b>id</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable
 
 
 
 
 #### Example 1
 #### Example 1
@@ -134,7 +134,7 @@ Forever
 Get current event data
 Get current event data
 
 
 #### Returns
 #### Returns
-The <b>data</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable
+The <b>data</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable
 
 
 
 
 #### Example
 #### Example
@@ -164,7 +164,7 @@ Forever
 Get current event modifiers
 Get current event modifiers
 
 
 #### Returns
 #### Returns
-The <b>mods</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable
+The <b>mods</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable
 
 
 
 
 <br/>
 <br/>
@@ -174,7 +174,7 @@ The <b>mods</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-cur
 Get current event x value
 Get current event x value
 
 
 #### Returns
 #### Returns
-The <b>x</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable
+The <b>x</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable
 
 
 
 
 #### Example
 #### Example
@@ -203,7 +203,7 @@ Forever
 Get current event y value
 Get current event y value
 
 
 #### Returns
 #### Returns
-The <b>y</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable
+The <b>y</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable
 
 
 
 
 #### Example
 #### Example
@@ -232,7 +232,7 @@ Forever
 Get current event extra value
 Get current event extra value
 
 
 #### Returns
 #### Returns
-The <b>extra</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable
+The <b>extra</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable
 
 
 
 
 <br/>
 <br/>
@@ -242,7 +242,7 @@ The <b>extra</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-cu
 Get current event extra value converted to a string
 Get current event extra value converted to a string
 
 
 #### Returns
 #### Returns
-The <b>extra</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable converted to a string
+The <b>extra</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable converted to a string
 
 
 
 
 #### Example
 #### Example
@@ -272,7 +272,7 @@ Forever
 Get current event source object
 Get current event source object
 
 
 #### Returns
 #### Returns
-The <b>source</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable
+The <b>source</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable
 
 
 
 
 #### Example 1
 #### Example 1
@@ -329,7 +329,7 @@ Forever
 Get current event source object handle
 Get current event source object handle
 
 
 #### Returns
 #### Returns
-The <b>source</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable converted to an integer handle
+The <b>source</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable converted to an integer handle
 
 
 
 
 <br/>
 <br/>
@@ -340,8 +340,8 @@ The <b>source</b> field of the [CurrentEvent](../../brl/brl.eventqueue/#global-c
 
 
 Current Event
 Current Event
 
 
-The [CurrentEvent](../../brl/brl.eventqueue/#global-currentevent-tevent-nullevent) global variable contains the event most recently returned by
-[PollEvent](../../brl/brl.eventqueue/#function-pollevent-int) or [WaitEvent](../../brl/brl.eventqueue/#function-waitevent-int).
+The [CurrentEvent](../../brl/brl.eventqueue/#global-currenteventteventnullevent) global variable contains the event most recently returned by
+[PollEvent](../../brl/brl.eventqueue/#function-polleventint) or [WaitEvent](../../brl/brl.eventqueue/#function-waiteventint).
 
 
 
 
 <br/>
 <br/>

+ 21 - 21
docs/api/brl/brl_filesystem.md

@@ -9,21 +9,21 @@ sidebar_label: BRL.FileSystem
 The BlitzMax filesystem module contains commands to perform operations on the computer's
 The BlitzMax filesystem module contains commands to perform operations on the computer's
 files and directories.
 files and directories.
 
 
-[OpenFile](../../brl/brl.filesystem/#function-openfile-tstream-url-object-readable-int-true-writeable-int-true), [ReadFile](../../brl/brl.filesystem/#function-readfile-tstream-url-object) and [WriteFile](../../brl/brl.filesystem/#function-writefile-tstream-url-object) return a stream object for reading and or writing data
+[OpenFile](../../brl/brl.filesystem/#function-openfiletstream-urlobjectreadableinttruewriteableinttrue-), [ReadFile](../../brl/brl.filesystem/#function-readfiletstream-urlobject-) and [WriteFile](../../brl/brl.filesystem/#function-writefiletstream-urlobject-) return a stream object for reading and or writing data
 to files.
 to files.
 
 
 Directories can be examined file by file using a combination of the
 Directories can be examined file by file using a combination of the
-[ReadDir](../../brl/brl.filesystem/#function-readdir-byte-ptr-path), [NextFile](../../brl/brl.filesystem/#function-nextfile-dir-byte-ptr) and [CloseDir](../../brl/brl.filesystem/#function-closedir-dir-byte-ptr) commands, or [LoadDir](../../brl/brl.filesystem/#function-loaddir-dir-skip-dots-int-true) can be used to read the file names
+[ReadDir](../../brl/brl.filesystem/#function-readdirbyte-ptr-path-), [NextFile](../../brl/brl.filesystem/#function-nextfile-dirbyte-ptr-) and [CloseDir](../../brl/brl.filesystem/#function-closedir-dirbyte-ptr-) commands, or [LoadDir](../../brl/brl.filesystem/#function-loaddir-dirskipdotsinttrue-) can be used to read the file names
 of a directory into a string array.
 of a directory into a string array.
 
 
-File properties can be examined with the [FileType](../../brl/brl.filesystem/#function-filetype-int-path), [FileTime](../../brl/brl.filesystem/#function-filetime-int-path-timetype-int-filetime-modified), [FileSize](../../brl/brl.filesystem/#function-filesize-long-path) and [FileMode](../../brl/brl.filesystem/#function-filemode-int-path) commands.
+File properties can be examined with the [FileType](../../brl/brl.filesystem/#function-filetypeint-path-), [FileTime](../../brl/brl.filesystem/#function-filetimeint-path-timetypeintfiletimemodified-), [FileSize](../../brl/brl.filesystem/#function-filesizelong-path-) and [FileMode](../../brl/brl.filesystem/#function-filemodeint-path-) commands.
 
 
-Files and directories (folders) can be created and deleted with the [CreateFile](../../brl/brl.filesystem/#function-createfile-int-path), [CreateDir](../../brl/brl.filesystem/#function-createdir-int-path-recurse-int-false)
-[DeleteFile](../../brl/brl.filesystem/#function-deletefile-int-path) and [DeleteDir](../../brl/brl.filesystem/#function-deletedir-int-path-recurse-int-false) commands.
+Files and directories (folders) can be created and deleted with the [CreateFile](../../brl/brl.filesystem/#function-createfileint-path-), [CreateDir](../../brl/brl.filesystem/#function-createdirint-pathrecurseintfalse-)
+[DeleteFile](../../brl/brl.filesystem/#function-deletefileint-path-) and [DeleteDir](../../brl/brl.filesystem/#function-deletedirint-pathrecurseintfalse-) commands.
 
 
 Finally, the FileSystem module contains various utility functions for handling file paths
 Finally, the FileSystem module contains various utility functions for handling file paths
-in a system independent manner. These commands include [RealPath](../../brl/brl.filesystem/#function-realpath-path), [StripDir](../../brl/brl.filesystem/#function-stripdir-path), [StripExt](../../brl/brl.filesystem/#function-stripext-path),
-[StripAll](../../brl/brl.filesystem/#function-stripall-path), [ExtractDir](../../brl/brl.filesystem/#function-extractdir-path) and [ExtractExt](../../brl/brl.filesystem/#function-extractext-path).
+in a system independent manner. These commands include [RealPath](../../brl/brl.filesystem/#function-realpath-path-), [StripDir](../../brl/brl.filesystem/#function-stripdir-path-), [StripExt](../../brl/brl.filesystem/#function-stripext-path-),
+[StripAll](../../brl/brl.filesystem/#function-stripall-path-), [ExtractDir](../../brl/brl.filesystem/#function-extractdir-path-) and [ExtractExt](../../brl/brl.filesystem/#function-extractext-path-).
 
 
 
 
 ## Functions
 ## Functions
@@ -75,7 +75,7 @@ Print StripAll("mypath/myfile.bmx")	' prints myfile
 Strip trailing slash from a file path
 Strip trailing slash from a file path
 
 
 
 
-[StripSlash](../../brl/brl.filesystem/#function-stripslash-path) will not remove the trailing slash from a 'root' path. For example, "/"
+[StripSlash](../../brl/brl.filesystem/#function-stripslash-path-) will not remove the trailing slash from a 'root' path. For example, "/"
 or (on Win32 only) "C:/".
 or (on Win32 only) "C:/".
 
 
 
 
@@ -227,7 +227,7 @@ SuperStrict
 Function Permissions:String(mode:Int)
 Function Permissions:String(mode:Int)
 	Local testbit:Int, pos:Int
 	Local testbit:Int, pos:Int
 	Local p:String = "rwxrwxrwx"
 	Local p:String = "rwxrwxrwx"
-	testbit = <i>100000000</i>
+	testbit = %100000000
 	pos = 1
 	pos = 1
 	Local res:String
 	Local res:String
 	While (testbit)
 	While (testbit)
@@ -256,13 +256,13 @@ Set file mode
 SuperStrict
 SuperStrict
 
 
 ' the following makes this source file readonly
 ' the following makes this source file readonly
-Local writebits:Int = <i>010010010</i>
+Local writebits:Int = %010010010
 
 
 ' read the file mode
 ' read the file mode
 Local mode:Int = FileMode("setfilemode.bmx")
 Local mode:Int = FileMode("setfilemode.bmx")
 
 
 'mask out the write bits to make readonly
 'mask out the write bits to make readonly
-mode = mode & writebits
+mode = mode & ~writebits
 
 
 'set the new file mode
 'set the new file mode
 SetFileMode("setfilemode.bmx",mode)
 SetFileMode("setfilemode.bmx",mode)
@@ -476,7 +476,7 @@ CloseDir dir
 Return next file in a directory
 Return next file in a directory
 
 
 #### Returns
 #### Returns
-File name of next file in directory opened using [ReadDir](../../brl/brl.filesystem/#function-readdir-byte-ptr-path), or an empty string if there are no more files to read.
+File name of next file in directory opened using [ReadDir](../../brl/brl.filesystem/#function-readdirbyte-ptr-path-), or an empty string if there are no more files to read.
 
 
 
 
 #### Example
 #### Example
@@ -563,10 +563,10 @@ Next
 Open a file for input and/or output.
 Open a file for input and/or output.
 
 
 
 
-This command is similar to the [OpenStream](../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true) command but will attempt
+This command is similar to the [OpenStream](../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-) command but will attempt
 to cache the contents of the file to ensure serial streams such as
 to cache the contents of the file to ensure serial streams such as
-http: based url's are seekable. Use the [CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream) command when
-finished reading and or writing to a Stream returned by [OpenFile](../../brl/brl.filesystem/#function-openfile-tstream-url-object-readable-int-true-writeable-int-true).
+http: based url's are seekable. Use the [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-) command when
+finished reading and or writing to a Stream returned by [OpenFile](../../brl/brl.filesystem/#function-openfiletstream-urlobjectreadableinttruewriteableinttrue-).
 
 
 
 
 #### Example
 #### Example
@@ -592,10 +592,10 @@ CloseStream file
 Open a file For Input.
 Open a file For Input.
 
 
 
 
-This command is similar to the [ReadStream](../../brl/brl.stream/#function-readstream-tstream-url-object) command but will attempt
+This command is similar to the [ReadStream](../../brl/brl.stream/#function-readstreamtstream-urlobject-) command but will attempt
 to cache the contents of the file to ensure serial streams such as
 to cache the contents of the file to ensure serial streams such as
-http: based url's are seekable. Use the [CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream) command when
-finished reading and or writing to a Stream returned by [OpenFile](../../brl/brl.filesystem/#function-openfile-tstream-url-object-readable-int-true-writeable-int-true).
+http: based url's are seekable. Use the [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-) command when
+finished reading and or writing to a Stream returned by [OpenFile](../../brl/brl.filesystem/#function-openfiletstream-urlobjectreadableinttruewriteableinttrue-).
 
 
 
 
 #### Example
 #### Example
@@ -622,7 +622,7 @@ CloseStream file
 Open a file for output.
 Open a file for output.
 
 
 
 
-This command is identical to the [WriteStream](../../brl/brl.stream/#function-writestream-tstream-url-object) command.
+This command is identical to the [WriteStream](../../brl/brl.stream/#function-writestreamtstream-urlobject-) command.
 
 
 
 
 #### Example
 #### Example
@@ -646,8 +646,8 @@ Closes a file stream.
 
 
 
 
 After performing file operations on an open file make sure to
 After performing file operations on an open file make sure to
-close the file stream with either [CloseFile](../../brl/brl.filesystem/#function-closefile-stream-tstream) or the identical
-[CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream) command.
+close the file stream with either [CloseFile](../../brl/brl.filesystem/#function-closefile-streamtstream-) or the identical
+[CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-) command.
 
 
 
 
 #### Example
 #### Example

+ 1 - 1
docs/api/brl/brl_freeaudioaudio.md

@@ -6,6 +6,6 @@ sidebar_label: BRL.FreeAudioAudio
 
 
 
 
 
 
-The FreeAudio audio module provides FreeAudio drivers for use with the audio module.
+The FreeAudio audio module provides FreeAudio drivers for use with the [audio](../../audio) module.
 
 
 
 

+ 8 - 8
docs/api/brl/brl_glgraphics.md

@@ -12,7 +12,7 @@ sidebar_label: BRL.GLGraphics
 Get OpenGL graphics driver
 Get OpenGL graphics driver
 
 
 
 
-The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-driver-tgraphicsdriver-defaultflags-graphics-backbuffer)
+The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-drivertgraphicsdriverdefaultflagsgraphicsbackbuffer-)
 
 
 
 
 #### Returns
 #### Returns
@@ -67,15 +67,15 @@ Draws a rectangle relative to top-left of current viewport.
 
 
 <br/>
 <br/>
 
 
-### `Function GLDrawText( text$,x,y )`
+### `Function GLDrawText( Text$,x,y )`
 
 
 Helper function to output some simple 8x16 font text
 Helper function to output some simple 8x16 font text
 
 
 
 
-Draws text relative to top-left of current viewport.<br>
-<br>
-The font used is an internal fixed point 8x16 font.<br>
-<br>
+Draws text relative to top-left of current viewport.<br/>
+<br/>
+The font used is an internal fixed point 8x16 font.<br/>
+<br/>
 This function is intended for debugging purposes only - performance is unlikely to be stellar.
 This function is intended for debugging purposes only - performance is unlikely to be stellar.
 
 
 
 
@@ -86,8 +86,8 @@ This function is intended for debugging purposes only - performance is unlikely
 Helper function to draw a pixmap to a gl context
 Helper function to draw a pixmap to a gl context
 
 
 
 
-Draws the pixmap relative to top-left of current viewport.<br>
-<br>
+Draws the pixmap relative to top-left of current viewport.<br/>
+<br/>
 This function is intended for debugging purposes only - performance is unlikely to be stellar.
 This function is intended for debugging purposes only - performance is unlikely to be stellar.
 
 
 
 

+ 1 - 1
docs/api/brl/brl_glmax2d.md

@@ -16,7 +16,7 @@ The OpenGL Max2D module provides an OpenGL driver for Max2D.
 Get OpenGL Max2D Driver
 Get OpenGL Max2D Driver
 
 
 
 
-The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-driver-tgraphicsdriver-defaultflags-graphics-backbuffer) to enable OpenGL Max2D
+The returned driver can be used with [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-drivertgraphicsdriverdefaultflagsgraphicsbackbuffer-) to enable OpenGL Max2D
 rendering.
 rendering.
 
 
 
 

+ 41 - 34
docs/api/brl/brl_gnet.md

@@ -5,28 +5,26 @@ sidebar_label: BRL.GNet
 ---
 ---
 
 
 
 
-<h1>GameNet</h1>
-
 The GameNet module (GNet for short) provides a set of commands for creating and managing multiplayer network 
 The GameNet module (GNet for short) provides a set of commands for creating and managing multiplayer network 
 games.
 games.
 
 
 GNet works a little differently than other networking libraries. Instead of being primarily 'message based', GNet
 GNet works a little differently than other networking libraries. Instead of being primarily 'message based', GNet
 works by synchronizing a collection of GNet <i>objects</i> over a network.
 works by synchronizing a collection of GNet <i>objects</i> over a network.
 
 
-Each GNet object contains 32 &slots which are similar in nature to the fields of BlitzMax objects. You can write to these slots using the [SetGNetInt](../../brl/brl.gnet/#function-setgnetint-obj-tgnetobject-index-value), [SetGNetFloat](../../brl/brl.gnet/#function-setgnetfloat-obj-tgnetobject-index-value) and [SetGNetString](../../brl/brl.gnet/#function-setgnetstring-obj-tgnetobject-index-value) commands, and read from these slots using the [GetGNetInt](../../brl/brl.gnet/#function-getgnetint-obj-tgnetobject-index), [GetGNetFloat](../../brl/brl.gnet/#function-getgnetfloat-obj-tgnetobject-index) and [GetGNetString](../../brl/brl.gnet/#function-getgnetstring-obj-tgnetobject-index) commands. The actual meaning of the data contained in these slots is completely up to you, but will typically include such information as player position, score, hitpoints and so on.
+Each GNet object contains 32 &slots which are similar in nature to the fields of BlitzMax objects. You can write to these slots using the [SetGNetInt](../../brl/brl.gnet/#function-setgnetint-objtgnetobjectindexintvalueint-), [SetGNetFloat](../../brl/brl.gnet/#function-setgnetfloat-objtgnetobjectindexintvalue-) and [SetGNetString](../../brl/brl.gnet/#function-setgnetstring-objtgnetobjectindexintvalue-) commands, and read from these slots using the [GetGNetInt](../../brl/brl.gnet/#function-getgnetintint-objtgnetobjectindexint-), [GetGNetFloat](../../brl/brl.gnet/#function-getgnetfloat-objtgnetobjectindexint-) and [GetGNetString](../../brl/brl.gnet/#function-getgnetstring-objtgnetobjectindexint-) commands. The actual meaning of the data contained in these slots is completely up to you, but will typically include such information as player position, score, hitpoints and so on.
 
 
 Note that you can only modify GNet objects that you have yourself created. Such objects are known as <i>local</i> objects, while objects created elsewhere are known as <i>remote</i> objects.
 Note that you can only modify GNet objects that you have yourself created. Such objects are known as <i>local</i> objects, while objects created elsewhere are known as <i>remote</i> objects.
 
 
-To start using GNet, you must first create a GNet <i>host</i> with the [CreateGNetHost](../../brl/brl.gnet/#function-creategnethost-tgnethost) command. Once you have created a host, you can either connect to other GNet hosts using [GNetConnect](../../brl/brl.gnet/#function-gnetconnect-host-tgnethost-address-port-timeout-ms-10000), or prepare to accept connections from other hosts using [GNetListen](../../brl/brl.gnet/#function-gnetlisten-host-tgnethost-port).
+To start using GNet, you must first create a GNet <i>host</i> with the [CreateGNetHost](../../brl/brl.gnet/#function-creategnethosttgnethost) command. Once you have created a host, you can either connect to other GNet hosts using [GNetConnect](../../brl/brl.gnet/#function-gnetconnectint-hosttgnethostaddressportinttimeoutmsint10000-), or prepare to accept connections from other hosts using [GNetListen](../../brl/brl.gnet/#function-gnetlistenint-hosttgnethostportint-).
 
 
-The [GNetSync](../../brl/brl.gnet/#function-gnetsync-host-tgnethost) command brings all GNet objects up to date. This involves notifying other hosts about any modifications you have made to local GNet objects, and processing notifications from other hosts about any modifications to remote GNet objects.
+The [GNetSync](../../brl/brl.gnet/#function-gnetsync-hosttgnethost-) command brings all GNet objects up to date. This involves notifying other hosts about any modifications you have made to local GNet objects, and processing notifications from other hosts about any modifications to remote GNet objects.
 
 
-Following a [GNetSync](../../brl/brl.gnet/#function-gnetsync-host-tgnethost), you can check which objects have been modified, created or closed using the [GnetObjects](../../brl/brl.gnet/#function-gnetobjects-tlist-host-tgnethost-state-gnet-all) command. This returns a linked list of GNet objects in a particular state.
+Following a [GNetSync](../../brl/brl.gnet/#function-gnetsync-hosttgnethost-), you can check which objects have been modified, created or closed using the [GnetObjects](../../brl/brl.gnet/#function-gnetobjectstlist-hosttgnethoststateintgnetall-) command. This returns a linked list of GNet objects in a particular state.
 
 
-GNet also provides a simple messaging system. A GNet message is actually just a special type of GNet object, so you initialize messages using the standard GNet commands for writing slots. Once created and initialized, a message can be sent to a remote object using the [SendGNetMessage](../../brl/brl.gnet/#function-sendgnetmessage-msg-tgnetobject-toobject-tgnetobject) command.
+GNet also provides a simple messaging system. A GNet message is actually just a special type of GNet object, so you initialize messages using the standard GNet commands for writing slots. Once created and initialized, a message can be sent to a remote object using the [SendGNetMessage](../../brl/brl.gnet/#function-sendgnetmessage-msgtgnetobjecttoobjecttgnetobject-) command.
 
 
-Incoming messages can be processed using the [GNetMessages](../../brl/brl.gnet/#function-gnetmessages-tlist-host-tgnethost) command after a [GNetSync](../../brl/brl.gnet/#function-gnetsync-host-tgnethost). This function returns a linked
-list of messages objects which can be examined using the standard GNet commands for reading slots. In addition, the [GNetMessageObject](../../brl/brl.gnet/#function-gnetmessageobject-tgnetobject-msg-tgnetobject) command can be used to determine which local object a message was intended for.
+Incoming messages can be processed using the [GNetMessages](../../brl/brl.gnet/#function-gnetmessagestlist-hosttgnethost-) command after a [GNetSync](../../brl/brl.gnet/#function-gnetsync-hosttgnethost-). This function returns a linked
+list of messages objects which can be examined using the standard GNet commands for reading slots. In addition, the [GNetMessageObject](../../brl/brl.gnet/#function-gnetmessageobjecttgnetobject-msgtgnetobject-) command can be used to determine which local object a message was intended for.
 
 
 
 
 ## Functions
 ## Functions
@@ -36,9 +34,9 @@ list of messages objects which can be examined using the standard GNet commands
 Create GNet host
 Create GNet host
 
 
 
 
-Once you have created a GNet host, you can use it to create objects with [CreateGNetObject](../../brl/brl.gnet/#function-creategnetobject-tgnetobject-host-tgnethost),
-connect to other hosts with [GNetConnect](../../brl/brl.gnet/#function-gnetconnect-host-tgnethost-address-port-timeout-ms-10000) and listen for connections from other hosts with
-[GNetListen](../../brl/brl.gnet/#function-gnetlisten-host-tgnethost-port).
+Once you have created a GNet host, you can use it to create objects with [CreateGNetObject](../../brl/brl.gnet/#function-creategnetobjecttgnetobject-hosttgnethost-),
+connect to other hosts with [GNetConnect](../../brl/brl.gnet/#function-gnetconnectint-hosttgnethostaddressportinttimeoutmsint10000-) and listen for connections from other hosts with
+[GNetListen](../../brl/brl.gnet/#function-gnetlistenint-hosttgnethostportint-).
 
 
 
 
 #### Returns
 #### Returns
@@ -62,23 +60,23 @@ Once closed, a GNet host cannot be reopened.
 Synchronize GNet host
 Synchronize GNet host
 
 
 
 
-[GNetSync](../../brl/brl.gnet/#function-gnetsync-host-tgnethost) will update the state of all GNet objects. Once you have used this command,
-use the [GNetObjects](../../brl/brl.gnet/#function-gnetobjects-tlist-host-tgnethost-state-gnet-all) function to determine which objects have been remotely created, modified
+[GNetSync](../../brl/brl.gnet/#function-gnetsync-hosttgnethost-) will update the state of all GNet objects. Once you have used this command,
+use the [GNetObjects](../../brl/brl.gnet/#function-gnetobjectstlist-hosttgnethoststateintgnetall-) function to determine which objects have been remotely created, modified
 or closed.
 or closed.
 
 
 
 
 <br/>
 <br/>
 
 
-### `Function GNetListen( host:TGNetHost,port )`
+### `Function GNetListen:Int( host:TGNetHost,port:Int )`
 
 
 Listen for connections
 Listen for connections
 
 
 
 
 Causes <b>host</b> to start listening for connection attempts on the specified <b>port</b>.
 Causes <b>host</b> to start listening for connection attempts on the specified <b>port</b>.
-Once a host is listening, hosts on other machines can connect using [GNetConnect](../../brl/brl.gnet/#function-gnetconnect-host-tgnethost-address-port-timeout-ms-10000).
+Once a host is listening, hosts on other machines can connect using [GNetConnect](../../brl/brl.gnet/#function-gnetconnectint-hosttgnethostaddressportinttimeoutmsint10000-).
 
 
-[GNetListen](../../brl/brl.gnet/#function-gnetlisten-host-tgnethost-port) may fail if <b>port</b> is already in use by another application, or if <b>host</b>
-is already listening or has already connected to a remote host using [GNetConnect](../../brl/brl.gnet/#function-gnetconnect-host-tgnethost-address-port-timeout-ms-10000).
+[GNetListen](../../brl/brl.gnet/#function-gnetlistenint-hosttgnethostportint-) may fail if <b>port</b> is already in use by another application, or if <b>host</b>
+is already listening or has already connected to a remote host using [GNetConnect](../../brl/brl.gnet/#function-gnetconnectint-hosttgnethostaddressportinttimeoutmsint10000-).
 
 
 
 
 #### Returns
 #### Returns
@@ -87,14 +85,14 @@ True if successful, otherwise false
 
 
 <br/>
 <br/>
 
 
-### `Function GNetConnect( host:TGNetHost,address$,port,timeout_ms=10000 )`
+### `Function GNetConnect:Int( host:TGNetHost,address$,port:Int,timeout_ms:Int=10000 )`
 
 
 Connect to a remote GNet host
 Connect to a remote GNet host
 
 
 
 
 Attempts to connect <b>host</b> to the specified remote address and port.
 Attempts to connect <b>host</b> to the specified remote address and port.
 
 
-A GNet host must be listening (see [GNetListen](../../brl/brl.gnet/#function-gnetlisten-host-tgnethost-port)) at the specified address and port for the
+A GNet host must be listening (see [GNetListen](../../brl/brl.gnet/#function-gnetlistenint-hosttgnethostportint-)) at the specified address and port for the
 connection to succeed.
 connection to succeed.
 
 
 
 
@@ -104,12 +102,12 @@ True if connection successful, otherwise false
 
 
 <br/>
 <br/>
 
 
-### `Function GNetObjects:TList( host:TGNetHost,state=GNET_ALL )`
+### `Function GNetObjects:TList( host:TGNetHost,state:Int=GNET_ALL )`
 
 
 Get a list of GNet objects
 Get a list of GNet objects
 
 
 
 
-[GNetObjects](../../brl/brl.gnet/#function-gnetobjects-tlist-host-tgnethost-state-gnet-all) returns a list of GNet objects in a certain state.
+[GNetObjects](../../brl/brl.gnet/#function-gnetobjectstlist-hosttgnethoststateintgnetall-) returns a list of GNet objects in a certain state.
 
 
 The <b>state</b> parameter controls which objects are listed, and can be one of &GNET_ALL,
 The <b>state</b> parameter controls which objects are listed, and can be one of &GNET_ALL,
 &GNET_CREATED, &GNET_MODIFIED or &GNET_CLOSED.
 &GNET_CREATED, &GNET_MODIFIED or &GNET_CLOSED.
@@ -169,15 +167,15 @@ The object that <b>msg</b> was sent to
 
 
 <br/>
 <br/>
 
 
-### `Function GNetObjectState( obj:TGNetObject )`
+### `Function GNetObjectState:Int( obj:TGNetObject )`
 
 
 Get state of a GNet object
 Get state of a GNet object
 
 
 The returned value can be one of the following:
 The returned value can be one of the following:
 <table>
 <table>
-<tr><th>Object State</th><td>Meaning</td></tr>
+<tr><th>Object State</th><th>Meaning</th></tr>
 <tr><td>GNET_CREATED</td><td>Object has been created</td></tr>
 <tr><td>GNET_CREATED</td><td>Object has been created</td></tr>
-<tr><td>GNET_SYNCED</td><td>Object is in sync</td><tr>
+<tr><td>GNET_SYNCED</td><td>Object is in sync</td></tr>
 <tr><td>GNET_MODIFIED</td><td>Object has been modified</td></tr>
 <tr><td>GNET_MODIFIED</td><td>Object has been modified</td></tr>
 <tr><td>GNET_CLOSED</td><td>Object has been closed</td></tr>
 <tr><td>GNET_CLOSED</td><td>Object has been closed</td></tr>
 <tr><td>GNET_ZOMBIE</td><td>Object is a zombie</td></tr>
 <tr><td>GNET_ZOMBIE</td><td>Object is a zombie</td></tr>
@@ -185,7 +183,7 @@ The returned value can be one of the following:
 </table>
 </table>
 Zombie objects are objects that have been successfully closed and will never again be used
 Zombie objects are objects that have been successfully closed and will never again be used
 by GameNet. Therefore, such objects will never appear in any list returned by the
 by GameNet. Therefore, such objects will never appear in any list returned by the
-[GNetObjects](../../brl/brl.gnet/#function-gnetobjects-tlist-host-tgnethost-state-gnet-all) function.
+[GNetObjects](../../brl/brl.gnet/#function-gnetobjectstlist-hosttgnethoststateintgnetall-) function.
 
 
 
 
 #### Returns
 #### Returns
@@ -194,7 +192,7 @@ An integer state
 
 
 <br/>
 <br/>
 
 
-### `Function GNetObjectLocal( obj:TGNetObject )`
+### `Function GNetObjectLocal:Int( obj:TGNetObject )`
 
 
 Determine whether a GNet object is local
 Determine whether a GNet object is local
 
 
@@ -204,7 +202,7 @@ True if object is a local object
 
 
 <br/>
 <br/>
 
 
-### `Function GNetObjectRemote( obj:TGNetObject )`
+### `Function GNetObjectRemote:Int( obj:TGNetObject )`
 
 
 Determine whether a GNet object is remote
 Determine whether a GNet object is remote
 
 
@@ -214,37 +212,46 @@ True if object is a remote object
 
 
 <br/>
 <br/>
 
 
-### `Function SetGNetInt( obj:TGNetObject,index,value )`
+### `Function SetGNetInt( obj:TGNetObject,index:Int,value:Int )`
 
 
 Set GNet object int data
 Set GNet object int data
 
 
 <br/>
 <br/>
 
 
-### `Function SetGNetFloat( obj:TGNetObject,index,value# )`
+### `Function SetGNetFloat( obj:TGNetObject,index:Int,value# )`
+
+Set GNet object float data
+
+<br/>
+
+### `Function SetGNetFloat( obj:TGNetObject,index:Int,value:Double )`
 
 
 Set GNet object float data
 Set GNet object float data
 
 
+There may be a precision loss during the conversion of [Double](../../brl/brl.blitz/#double) to [Float](../../brl/brl.blitz/#float).
+
+
 <br/>
 <br/>
 
 
-### `Function SetGNetString( obj:TGNetObject,index,value$ )`
+### `Function SetGNetString( obj:TGNetObject,index:Int,value$ )`
 
 
 Set GNet object string data
 Set GNet object string data
 
 
 <br/>
 <br/>
 
 
-### `Function GetGNetInt( obj:TGNetObject,index )`
+### `Function GetGNetInt:Int( obj:TGNetObject,index:Int )`
 
 
 Get GNet object int data
 Get GNet object int data
 
 
 <br/>
 <br/>
 
 
-### `Function GetGNetFloat#( obj:TGNetObject,index )`
+### `Function GetGNetFloat#( obj:TGNetObject,index:Int )`
 
 
 Get GNet object float data
 Get GNet object float data
 
 
 <br/>
 <br/>
 
 
-### `Function GetGNetString$( obj:TGNetObject,index )`
+### `Function GetGNetString$( obj:TGNetObject,index:Int )`
 
 
 Get GNet object string data
 Get GNet object string data
 
 

+ 40 - 34
docs/api/brl/brl_graphics.md

@@ -13,10 +13,10 @@ does not provide any commands for actual rendering - this is left to other modul
 max2D to implement.
 max2D to implement.
 
 
 The graphics module maintains 2 'current' objects - the current graphics driver and the currect
 The graphics module maintains 2 'current' objects - the current graphics driver and the currect
-graphics object. To change the current graphics driver, use [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-driver-tgraphicsdriver-defaultflags-graphics-backbuffer). To change the
-current graphics object, use [SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+graphics object. To change the current graphics driver, use [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-drivertgraphicsdriverdefaultflagsgraphicsbackbuffer-). To change the
+current graphics object, use [SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
-To create a graphics object, use either [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) or [CreateGraphics](../../brl/brl.graphics/#function-creategraphics-tgraphics-width-height-depth-hertz-flags). The kind of graphics 
+To create a graphics object, use either [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) or [CreateGraphics](../../brl/brl.graphics/#function-creategraphicstgraphics-widthheightdepthhertzflagsxy-). The kind of graphics 
 object created will depend upon the current graphics driver. For example, the following code:
 object created will depend upon the current graphics driver. For example, the following code:
 ```
 ```
 SetGraphicsDriver GLGraphicsDriver()
 SetGraphicsDriver GLGraphicsDriver()
@@ -33,9 +33,9 @@ glClear				'yes!
 Flip				'must do this as the graphics is double buffered
 Flip				'must do this as the graphics is double buffered
 ````
 ````
 
 
-One you have finished with a graphics object, use [CloseGraphics](../../brl/brl.graphics/#function-closegraphics-g-tgraphics) to close it.
+One you have finished with a graphics object, use [CloseGraphics](../../brl/brl.graphics/#function-closegraphics-gtgraphics-) to close it.
 
 
-[Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) and [CreateGraphics](../../brl/brl.graphics/#function-creategraphics-tgraphics-width-height-depth-hertz-flags) both accept the following parameters: <b>width</b>, <b>height</b>, <b>depth</b>,
+[Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) and [CreateGraphics](../../brl/brl.graphics/#function-creategraphicstgraphics-widthheightdepthhertzflagsxy-) both accept the following parameters: <b>width</b>, <b>height</b>, <b>depth</b>,
 <b>hertz</b> and <b>flags</b>.
 <b>hertz</b> and <b>flags</b>.
 
 
 The <b>width</b> and <b>height</b> parameters specify the dimensions of the graphics, in pixels.
 The <b>width</b> and <b>height</b> parameters specify the dimensions of the graphics, in pixels.
@@ -49,7 +49,7 @@ refreshes per second. The refresh rates available depend on the graphics modes a
 which differ from graphics card to graphics card. Note that creating graphics with an 
 which differ from graphics card to graphics card. Note that creating graphics with an 
 unsupported refresh rate will not fail - instead, a default refresh rate will be used.
 unsupported refresh rate will not fail - instead, a default refresh rate will be used.
 
 
-The [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) command can be used to achieve a fixed refresh rate. When using [Flip](../../brl/brl.graphics/#function-flip-sync-1) to 
+The [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) command can be used to achieve a fixed refresh rate. When using [Flip](../../brl/brl.graphics/#function-flip-sync1-) to 
 present such graphics, BlitzMax will guarantee the desired refresh rate is honored regardless
 present such graphics, BlitzMax will guarantee the desired refresh rate is honored regardless
 of the available hardware's capabilities. This is achieved by using software timing 
 of the available hardware's capabilities. This is achieved by using software timing 
 techniques when necessary.
 techniques when necessary.
@@ -67,7 +67,7 @@ Flags can be combined with the | (or) operator. For example, GRAPHICS_BACKBUFFER
 can be used to create graphics which has both a back buffer and a depth buffer.
 can be used to create graphics which has both a back buffer and a depth buffer.
 
 
 Graphics created with the GRAPHICS_BACKBUFFER flag must be 'flipped' after you have finished
 Graphics created with the GRAPHICS_BACKBUFFER flag must be 'flipped' after you have finished
-rendering using [Flip](../../brl/brl.graphics/#function-flip-sync-1).
+rendering using [Flip](../../brl/brl.graphics/#function-flip-sync1-).
 
 
 
 
 ## Functions
 ## Functions
@@ -78,13 +78,13 @@ Set current graphics driver
 
 
 
 
 The current graphics driver determines what kind of graphics are created when you use
 The current graphics driver determines what kind of graphics are created when you use
-the [CreateGraphics](../../brl/brl.graphics/#function-creategraphics-tgraphics-width-height-depth-hertz-flags) or [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) functions, as well as the graphics modes available.
+the [CreateGraphics](../../brl/brl.graphics/#function-creategraphicstgraphics-widthheightdepthhertzflagsxy-) or [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) functions, as well as the graphics modes available.
 
 
-The [GLGraphicsDriver](../../brl/brl.glgraphics/#function-glgraphicsdriver-tglgraphicsdriver), [GLMax2DDriver](../../brl/brl.glmax2d/#function-glmax2ddriver-tglmax2ddriver), [D3D7Max2DDriver](../../brl/brl.d3d7max2d/#function-d3d7max2ddriver-td3d7max2ddriver) and [D3D9Max2DDriver](../../brl/brl.d3d9max2d/#function-d3d9max2ddriver-td3d9max2ddriver) functions can all be
+The [GLGraphicsDriver](../../brl/brl.glgraphics/#function-glgraphicsdrivertglgraphicsdriver), [GLMax2DDriver](../../brl/brl.glmax2d/#function-glmax2ddrivertglmax2ddriver), [D3D7Max2DDriver](../../brl/brl.d3d7max2d/#function-d3d7max2ddrivertd3d7max2ddriver) and [D3D9Max2DDriver](../../brl/brl.d3d9max2d/#function-d3d9max2ddrivertd3d9max2ddriver) functions can all be
 used to obtain a graphics driver.
 used to obtain a graphics driver.
 
 
 The <b>defaultFlags</b> parameter allows you to specify graphics flags that will be applied to any
 The <b>defaultFlags</b> parameter allows you to specify graphics flags that will be applied to any
-graphics created with [CreateGraphics](../../brl/brl.graphics/#function-creategraphics-tgraphics-width-height-depth-hertz-flags) or [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0).
+graphics created with [CreateGraphics](../../brl/brl.graphics/#function-creategraphicstgraphics-widthheightdepthhertzflagsxy-) or [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-).
 
 
 
 
 #### Example
 #### Example
@@ -114,7 +114,7 @@ WaitKey
 Get current graphics driver
 Get current graphics driver
 
 
 
 
-Returns the current graphics driver as selected by [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-driver-tgraphicsdriver-defaultflags-graphics-backbuffer)
+Returns the current graphics driver as selected by [SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-drivertgraphicsdriverdefaultflagsgraphicsbackbuffer-)
 
 
 
 
 <br/>
 <br/>
@@ -156,7 +156,7 @@ Next
 Get number of graphics modes available under the current graphics driver
 Get number of graphics modes available under the current graphics driver
 
 
 
 
-Use [GetGraphicsMode](../../brl/brl.graphics/#function-getgraphicsmode-index-width-var-height-var-depth-var-hertz-var) To obtain information about an individual Graphics mode
+Use [GetGraphicsMode](../../brl/brl.graphics/#function-getgraphicsmode-indexwidth-varheight-vardepth-varhertz-var-) To obtain information about an individual Graphics mode
 
 
 
 
 #### Returns
 #### Returns
@@ -170,7 +170,7 @@ Number of available Graphics modes
 Get information about a graphics mode
 Get information about a graphics mode
 
 
 
 
-[GetGraphicsMode](../../brl/brl.graphics/#function-getgraphicsmode-index-width-var-height-var-depth-var-hertz-var) returns information about a specific graphics mode. <b>mode</b> should be
+[GetGraphicsMode](../../brl/brl.graphics/#function-getgraphicsmode-indexwidth-varheight-vardepth-varhertz-var-) returns information about a specific graphics mode. <b>mode</b> should be
 in the range 0 (inclusive) to the value returned by [CountGraphicsModes](../../brl/brl.graphics/#function-countgraphicsmodes) (exclusive).
 in the range 0 (inclusive) to the value returned by [CountGraphicsModes](../../brl/brl.graphics/#function-countgraphicsmodes) (exclusive).
 
 
 
 
@@ -191,16 +191,16 @@ True if a matching graphics mode is found
 
 
 <br/>
 <br/>
 
 
-### `Function CreateGraphics:TGraphics( width,height,depth,hertz,flags )`
+### `Function CreateGraphics:TGraphics( width,height,depth,hertz,flags,x,y )`
 
 
 Create a graphics object
 Create a graphics object
 
 
 
 
-[CreateGraphics](../../brl/brl.graphics/#function-creategraphics-tgraphics-width-height-depth-hertz-flags) creates a graphics object. To use this object for rendering, you will
-first have to select it using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+[CreateGraphics](../../brl/brl.graphics/#function-creategraphicstgraphics-widthheightdepthhertzflagsxy-) creates a graphics object. To use this object for rendering, you will
+first have to select it using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
 The kind of graphics object returned depends upon the current graphics driver as set by
 The kind of graphics object returned depends upon the current graphics driver as set by
-[SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-driver-tgraphicsdriver-defaultflags-graphics-backbuffer).
+[SetGraphicsDriver](../../brl/brl.graphics/#function-setgraphicsdriver-drivertgraphicsdriverdefaultflagsgraphicsbackbuffer-).
 
 
 
 
 #### Returns
 #### Returns
@@ -224,7 +224,7 @@ Once closed, a graphics object can no longer be used.
 Set current graphics object
 Set current graphics object
 
 
 
 
-[SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics) will also change the current graphics driver if <b>g</b> uses a different driver
+[SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-) will also change the current graphics driver if <b>g</b> uses a different driver
 than the current driver.
 than the current driver.
 
 
 
 
@@ -266,12 +266,18 @@ Resize the current graphics object to <b>width</b>, <b>height</b>.
 
 
 <br/>
 <br/>
 
 
+### `Function GraphicsPosition( x:Int, y:Int )`
+
+Sets the position of the graphics window to <b>x</b>, <b>y</b>.
+
+<br/>
+
 ### `Function GraphicsWidth()`
 ### `Function GraphicsWidth()`
 
 
 Get width of current graphics object
 Get width of current graphics object
 
 
 
 
-The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
 
 
 #### Returns
 #### Returns
@@ -298,7 +304,7 @@ WaitKey()
 Get height of current graphics object
 Get height of current graphics object
 
 
 
 
-The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
 
 
 #### Returns
 #### Returns
@@ -325,7 +331,7 @@ WaitKey()
 Get depth of current graphics object
 Get depth of current graphics object
 
 
 
 
-The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
 
 
 #### Returns
 #### Returns
@@ -352,7 +358,7 @@ WaitKey()
 Get refresh rate of current graphics object
 Get refresh rate of current graphics object
 
 
 
 
-The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
 
 
 #### Returns
 #### Returns
@@ -379,7 +385,7 @@ WaitKey()
 Get flags of current graphics object
 Get flags of current graphics object
 
 
 
 
-The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+The current graphics object can be changed using [SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
 
 
 #### Returns
 #### Returns
@@ -393,16 +399,16 @@ The flags of the current graphics object
 Flip current graphics object
 Flip current graphics object
 
 
 
 
-[Flip](../../brl/brl.graphics/#function-flip-sync-1) swap the front and back buffers of the current graphics objects.
+[Flip](../../brl/brl.graphics/#function-flip-sync1-) swap the front and back buffers of the current graphics objects.
 
 
 If <b>sync</b> is 0, then the flip occurs as soon as possible. If <b>sync</b> is 1, then the flip occurs
 If <b>sync</b> is 0, then the flip occurs as soon as possible. If <b>sync</b> is 1, then the flip occurs
 on the next vertical blank.
 on the next vertical blank.
 
 
-If <b>sync</b> is -1 and the current graphics object was created with the [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) command,
+If <b>sync</b> is -1 and the current graphics object was created with the [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) command,
 then flips will occur at the graphics object's refresh rate, unless the graphics object was
 then flips will occur at the graphics object's refresh rate, unless the graphics object was
 created with a refresh rate of 0 in which case flip occurs immediately.
 created with a refresh rate of 0 in which case flip occurs immediately.
 
 
-If <b>sync</b> is -1 and the current graphics object was NOT created with the [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) command,
+If <b>sync</b> is -1 and the current graphics object was NOT created with the [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) command,
 then the flip will occur on the next vertical blank.
 then the flip will occur on the next vertical blank.
 
 
 
 
@@ -431,18 +437,18 @@ Wend
 ```
 ```
 <br/>
 <br/>
 
 
-### `Function Graphics:TGraphics( width,height,depth=0,hertz=60,flags=0 )`
+### `Function Graphics:TGraphics( width,height,depth=0,hertz=60,flags=0,x=-1,y=-1 )`
 
 
 Begin graphics
 Begin graphics
 
 
 
 
-[Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) is a convenience function that simplifies the process of creating a graphics
+[Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) is a convenience function that simplifies the process of creating a graphics
 object.
 object.
 
 
-Once [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) has executed, you can begin rendering immediately without any need for
-[SetGraphics](../../brl/brl.graphics/#function-setgraphics-g-tgraphics).
+Once [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) has executed, you can begin rendering immediately without any need for
+[SetGraphics](../../brl/brl.graphics/#function-setgraphics-gtgraphics-).
 
 
-[Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) also enables polled input mode, providing a simple way to monitor the keyboard
+[Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) also enables polled input mode, providing a simple way to monitor the keyboard
 and mouse.
 and mouse.
 
 
 
 
@@ -498,7 +504,7 @@ Until AppTerminate()
 End graphics
 End graphics
 
 
 
 
-[EndGraphics](../../brl/brl.graphics/#function-endgraphics) closes the graphics object returned by [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0).
+[EndGraphics](../../brl/brl.graphics/#function-endgraphics) closes the graphics object returned by [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-).
 
 
 
 
 <br/>
 <br/>
@@ -510,8 +516,8 @@ End graphics
 Flip Hook id
 Flip Hook id
 
 
 
 
-Use this id with [AddHook](../../brl/brl.hook/#function-addhook-id-func-object-id-data-object-context-object-context-object-null-priority-0) to register a function that
-is called every [Flip](../../brl/brl.graphics/#function-flip-sync-1).
+Use this id with [AddHook](../../brl/brl.hook/#function-addhook-idfuncobject-iddataobjectcontextobject-contextobjectnullpriority0-) to register a function that
+is called every [Flip](../../brl/brl.graphics/#function-flip-sync1-).
 
 
 
 
 <br/>
 <br/>

+ 8 - 8
docs/api/brl/brl_hook.md

@@ -13,14 +13,14 @@ The following hook ids are currently used by BlitzMax modules:
 
 
 | Hook id | Description | Data |
 | Hook id | Description | Data |
 | --- | --- | --- |
 | --- | --- | --- |
-| FlipHook | A Max2D [Flip](../../brl/brl.graphics/#function-flip-sync-1) is about to occur | Null |
-| EmitEventHook | An event has been emitted by a call to [EmitEvent](../../brl/brl.event/#function-emitevent-event-tevent) | A [TEvent](../../brl/brl.event/tevent) object |
+| FlipHook | A Max2D [Flip](../../brl/brl.graphics/#function-flip-sync1-) is about to occur | Null |
+| EmitEventHook | An event has been emitted by a call to [EmitEvent](../../brl/brl.event/#function-emitevent-eventtevent-) | A [TEvent](../../brl/brl.event/tevent) object |
 
 
-To hook into any of these functions, use [AddHook](../../brl/brl.hook/#function-addhook-id-func-object-id-data-object-context-object-context-object-null-priority-0) with the specified hook id and your hook function.
+To hook into any of these functions, use [AddHook](../../brl/brl.hook/#function-addhook-idfuncobject-iddataobjectcontextobject-contextobjectnullpriority0-) with the specified hook id and your hook function.
 
 
 To provide hook support for your own code, use [AllocHookId](../../brl/brl.hook/#function-allochookid) to generate a valid integer hook id 
 To provide hook support for your own code, use [AllocHookId](../../brl/brl.hook/#function-allochookid) to generate a valid integer hook id 
 somewhere in your program's startup code. Then, when the section of code you would like to be 
 somewhere in your program's startup code. Then, when the section of code you would like to be 
-'hookable' is about to execute, simply call [RunHooks](../../brl/brl.hook/#function-runhooks-object-id-data-object) with the previously generated hook id and your
+'hookable' is about to execute, simply call [RunHooks](../../brl/brl.hook/#function-runhooksobject-iddataobject-) with the previously generated hook id and your
 own custom 'data' object. 
 own custom 'data' object. 
 
 
 
 
@@ -31,7 +31,7 @@ own custom 'data' object.
 Allocate a hook id
 Allocate a hook id
 
 
 
 
-The returned hook id can be used with [AddHook](../../brl/brl.hook/#function-addhook-id-func-object-id-data-object-context-object-context-object-null-priority-0), [RunHooks](../../brl/brl.hook/#function-runhooks-object-id-data-object) and [RemoveHook](../../brl/brl.hook/#function-removehook-id-func-object-id-data-object-context-object-context-object-null).
+The returned hook id can be used with [AddHook](../../brl/brl.hook/#function-addhook-idfuncobject-iddataobjectcontextobject-contextobjectnullpriority0-), [RunHooks](../../brl/brl.hook/#function-runhooksobject-iddataobject-) and [RemoveHook](../../brl/brl.hook/#function-removehook-idfuncobject-iddataobjectcontextobject-contextobjectnull-).
 
 
 
 
 #### Returns
 #### Returns
@@ -77,11 +77,11 @@ Wend
 Add a hook function
 Add a hook function
 
 
 
 
-Add a hook function to be executed when [RunHooks](../../brl/brl.hook/#function-runhooks-object-id-data-object) is called with the specified hook <b>id</b>.
+Add a hook function to be executed when [RunHooks](../../brl/brl.hook/#function-runhooksobject-iddataobject-) is called with the specified hook <b>id</b>.
 
 
 
 
 #### Returns
 #### Returns
-A hook object that can be used with the [RemoveHook](../../brl/brl.hook/#function-removehook-id-func-object-id-data-object-context-object-context-object-null) command.
+A hook object that can be used with the [RemoveHook](../../brl/brl.hook/#function-removehook-idfuncobject-iddataobjectcontextobject-contextobjectnull-) command.
 
 
 
 
 #### Example
 #### Example
@@ -120,7 +120,7 @@ Wend
 Run hook functions
 Run hook functions
 
 
 
 
-[RunHooks](../../brl/brl.hook/#function-runhooks-object-id-data-object) runs all hook functions that have been added for the specified hook <b>id</b>.
+[RunHooks](../../brl/brl.hook/#function-runhooksobject-iddataobject-) runs all hook functions that have been added for the specified hook <b>id</b>.
 
 
 The first hook function is called with the provided <b>data</b> object. The object returned by
 The first hook function is called with the provided <b>data</b> object. The object returned by
 this function is then passed as the <b>data</b> parameter to the next hook function and so on.
 this function is then passed as the <b>data</b> parameter to the next hook function and so on.

+ 14 - 0
docs/api/brl/brl_jconv.md

@@ -0,0 +1,14 @@
+---
+id: brl.jconv
+title: brl.jconv
+sidebar_label: brl.jconv
+---
+
+
+## Types
+| Type | Description |
+|---|---|
+| [TJConvBuilder](../../brl/brl.jconv/tjconvbuilder) | Creates an instance of [TJConv](../../brl/brl.jconv/tjconv) with custom settings. |
+| [TJConv](../../brl/brl.jconv/tjconv) | Serialises or deserializes objects to and from JSON. |
+| [TJConvSerializer](../../brl/brl.jconv/tjconvserializer) | Serializes BlitzMax type to JSON. |
+

+ 2 - 2
docs/api/brl/brl_jpgloader.md

@@ -16,7 +16,7 @@ The JPG loader module provides the ability to load JPG format pixmaps.
 Load a Pixmap in JPeg format
 Load a Pixmap in JPeg format
 
 
 
 
-[LoadPixmapJPeg](../../brl/brl.jpgloader/#function-loadpixmapjpeg-tpixmap-url-object) loads a pixmap from <b>url</b> in JPeg format.
+[LoadPixmapJPeg](../../brl/brl.jpgloader/#function-loadpixmapjpegtpixmap-urlobject-) loads a pixmap from <b>url</b> in JPeg format.
 
 
 If the pixmap cannot be loaded, Null is returned.
 If the pixmap cannot be loaded, Null is returned.
 
 
@@ -28,7 +28,7 @@ If the pixmap cannot be loaded, Null is returned.
 Save a Pixmap in JPeg format
 Save a Pixmap in JPeg format
 
 
 
 
-Saves <b>pixmap</b> to <b>url</b> in JPeg format. If successful, [SavePixmapJPeg](../../brl/brl.jpgloader/#function-savepixmapjpeg-pixmap-tpixmap-url-object-quality-75) returns
+Saves <b>pixmap</b> to <b>url</b> in JPeg format. If successful, [SavePixmapJPeg](../../brl/brl.jpgloader/#function-savepixmapjpeg-pixmaptpixmapurlobjectquality75-) returns
 True, otherwise False.
 True, otherwise False.
 
 
 The optional <b>quality</b> parameter should be in the range 0 to 100, where
 The optional <b>quality</b> parameter should be in the range 0 to 100, where

+ 6 - 0
docs/api/brl/brl_json.md

@@ -103,6 +103,12 @@ The opening and closing characters of the top-level array ('[', ']') or object (
 This flag is useful when concatenating multiple arrays or objects into a stream.
 This flag is useful when concatenating multiple arrays or objects into a stream.
 
 
 
 
+<br/>
+
+### `Const JSON_FRACTIONAL_DIGITS:Int = $20000`
+
+Precision becomes the number of fraction digits.
+
 <br/>
 <br/>
 
 
 ### `Const JSON_REJECT_DUPLICATES:Int = $1`
 ### `Const JSON_REJECT_DUPLICATES:Int = $1`

+ 465 - 14
docs/api/brl/brl_linkedlist.md

@@ -5,13 +5,11 @@ sidebar_label: BRL.LinkedList
 ---
 ---
 
 
 
 
-<h1>Linked lists</h1>
-
 A linked list allows you to efficiently add and remove objects to and from a collection of objects.
 A linked list allows you to efficiently add and remove objects to and from a collection of objects.
 
 
-To create a linked list, use the [CreateList](../../brl/brl.linkedlist/#function-createlist-tlist) command.
+To create a linked list, use the [CreateList](../../brl/brl.linkedlist/#function-createlisttlist) command.
 
 
-Add objects to a linked list using [ListAddFirst](../../brl/brl.linkedlist/#function-listaddfirst-tlink-list-tlist-value-object) or [ListAddLast](../../brl/brl.linkedlist/#function-listaddlast-tlink-list-tlist-value-object). Both commands return a link object which can be used to later remove the object with the [RemoveLink](../../brl/brl.linkedlist/tlist/#method-removelink-link-tlink) command. You can also remove objects with the [ListRemove](../../brl/brl.linkedlist/#function-listremove-list-tlist-value-object) command. However this is not as efficient as using [RemoveLink](../../brl/brl.linkedlist/tlist/#method-removelink-link-tlink) because the list must first be searched for the object to be removed.
+Add objects to a linked list using [ListAddFirst](../../brl/brl.linkedlist/#function-listaddfirsttlink-listtlistvalueobject-) or [ListAddLast](../../brl/brl.linkedlist/#function-listaddlasttlink-listtlistvalueobject-). Both commands return a link object which can be used to later remove the object with the [RemoveLink](../../brl/brl.linkedlist/tlist/#method-removelink-linktlink-) command. You can also remove objects with the [ListRemove](../../brl/brl.linkedlist/#function-listremove-listtlistvalueobject-) command. However this is not as efficient as using [RemoveLink](../../brl/brl.linkedlist/tlist/#method-removelink-linktlink-) because the list must first be searched for the object to be removed.
 
 
 To visit all the objects in a linked list, you can use an [EachIn](../../brl/brl.blitz/#eachin) loop.
 To visit all the objects in a linked list, you can use an [EachIn](../../brl/brl.blitz/#eachin) loop.
 
 
@@ -35,22 +33,20 @@ A new linked list object
 
 
 #### Example
 #### Example
 ```blitzmax
 ```blitzmax
-' createlist.bmx
-
 SuperStrict
 SuperStrict
 
 
-' create a list to hold some objects
+Framework Brl.LinkedList
+Import Brl.StandardIO
 
 
-Local list:TList=CreateList()
+' create a list to hold some objects
+Local list:TList = CreateList()
 
 
 ' add some string objects to the list
 ' add some string objects to the list
-
-ListAddLast list,"one"
-ListAddLast list,"two"
-ListAddLast list,"three"
+ListAddLast(list,"one")
+ListAddLast(list,"two")
+ListAddLast(list,"three")
 
 
 ' enumerate all the strings in the list
 ' enumerate all the strings in the list
-
 For Local a:String = EachIn list
 For Local a:String = EachIn list
 	Print a
 	Print a
 Next
 Next
@@ -64,6 +60,34 @@ Clear a linked list
 Removes all objects from <b>list</b>.
 Removes all objects from <b>list</b>.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' print amount of elements in the list
+Print CountList(list)
+
+' clear the list and remove all elements
+ClearList(list)
+
+' print amount of elements in the list
+Print CountList(list)
+
+' outputs:
+' 3
+' 0
+```
 <br/>
 <br/>
 
 
 ### `Function CountList( list:TList )`
 ### `Function CountList( list:TList )`
@@ -74,6 +98,27 @@ Count list length
 The numbers of objects in <b>list</b>.
 The numbers of objects in <b>list</b>.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' print amount of elements in the list
+Print CountList(list)
+
+' outputs:
+' 3
+```
 <br/>
 <br/>
 
 
 ### `Function ListIsEmpty( list:TList )`
 ### `Function ListIsEmpty( list:TList )`
@@ -84,6 +129,31 @@ Check if list is empty
 True if list is empty, else false
 True if list is empty, else false
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' check if the list contains some elements
+If ListIsEmpty(list) Then
+	Print "list is empty"
+Else
+	Print "list contains elements"
+EndIf
+
+' outputs:
+' list contains elements
+```
 <br/>
 <br/>
 
 
 ### `Function ListContains( list:TList,value:Object )`
 ### `Function ListContains( list:TList,value:Object )`
@@ -94,12 +164,96 @@ Check if list contains a value
 True if list contains <b>value</b>, else false
 True if list contains <b>value</b>, else false
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' check if the list contains some elements
+If ListContains(list, "four") Then
+	Print "four"
+EndIf
+
+If ListContains(list, "three") Then
+	Print "three"
+EndIf
+
+' outputs:
+' three
+```
 <br/>
 <br/>
 
 
 ### `Function SortList( list:TList,ascending=True,compareFunc( o1:Object,o2:Object ) )`
 ### `Function SortList( list:TList,ascending=True,compareFunc( o1:Object,o2:Object ) )`
 
 
 Sort a list
 Sort a list
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "short")
+ListAddLast(list, "longer")
+ListAddLast(list, "the longest")
+
+
+' DEFAULT SORT
+' sort them (in this case this leads to an alphabetic sort)
+' second parameter sets sort to ascending or not
+SortList(list, True)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' longer
+' short
+' the longest
+
+
+' CUSTOM SORT
+' define a custom compare function
+Function MyCompare:Int( o1:Object, o2:Object )
+	If Len(String(o1)) < Len(String(o2)) Then
+		Return -1 ' o1 before o2
+	ElseIf Len(String(o1)) > Len(String(o2)) Then
+		Return 1 ' o1 after o2
+	Else
+		Return 0 ' equal
+	EndIf
+End Function
+
+' sort them with a custom compare function
+SortList(list, True, MyCompare)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' short
+' longer
+' the longest
+```
 <br/>
 <br/>
 
 
 ### `Function ListFromArray:TList( arr:Object[] )`
 ### `Function ListFromArray:TList( arr:Object[] )`
@@ -110,6 +264,29 @@ Create a list from an array
 A new linked list
 A new linked list
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create an array holding some objects
+Local objects:Object[] = ["one", "two", "three"]
+
+' create a linked list out of the elements
+Local list:TList = ListFromArray(objects) 
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Function ListToArray:Object[]( list:TList )`
 ### `Function ListToArray:Object[]( list:TList )`
@@ -120,18 +297,110 @@ convert a list to an array
 An array of objects
 An array of objects
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' create an array out of the list elements
+Local objects:Object[] = ListToArray(list) 
+
+' enumerate all the strings in the array
+For Local a:String = EachIn objects
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+```
 <br/>
 <br/>
 
 
 ### `Function SwapLists( list_x:TList,list_y:TList )`
 ### `Function SwapLists( list_x:TList,list_y:TList )`
 
 
 Swap the contents of 2 lists
 Swap the contents of 2 lists
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+
+' create a second list
+Local list2:TList = CreateList()
+ListAddLast(list2, "four")
+ListAddLast(list2, "five")
+ListAddLast(list2, "six")
+
+
+' swap the lists
+SwapLists(list, list2)
+
+' enumerate all the strings in the first list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' four
+' five
+' six
+```
 <br/>
 <br/>
 
 
 ### `Function ReverseList( list:TList )`
 ### `Function ReverseList( list:TList )`
 
 
 Reverse the order of elements of a list
 Reverse the order of elements of a list
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' reverse the list
+ReverseList(list)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' three
+' two
+' one
+```
 <br/>
 <br/>
 
 
 ### `Function ListFindLink:TLink( list:TList,value:Object )`
 ### `Function ListFindLink:TLink( list:TList,value:Object )`
@@ -142,6 +411,75 @@ Find a link in a list
 The link containting <b>value</b>
 The link containting <b>value</b>
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the begin of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' find the TLink instance of the element/object "two" 
+Local link:TLink = ListFindLink(list, "two")
+
+' remove the element from the list by utilizing the link
+ListRemoveLink(list, link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' three
+```
+<br/>
+
+### `Function ListRemoveLink( list:TList,link:TLink )`
+
+Remove an object from a linked list referenced by a link
+
+[ListRemoveLink](../../brl/brl.linkedlist/#function-listremovelink-listtlistlinktlink-) removes an object from the linked list referenced by the given link
+
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the begin of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' find the TLink instance of the element/object "two" 
+Local link:TLink = ListFindLink(list, "two")
+
+' remove the element from the list by utilizing the link
+ListRemoveLink(list, link)
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' three
+```
 <br/>
 <br/>
 
 
 ### `Function ListAddLast:TLink( list:TList,value:Object )`
 ### `Function ListAddLast:TLink( list:TList,value:Object )`
@@ -152,6 +490,49 @@ Add an object to a linked list
 A link object
 A link object
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the end of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' two
+' three
+```
+<br/>
+
+### `Function ListGetFirst:Object( list:TList )`
+
+Returns the first object in the list
+
+Returns Null if the list is empty.
+
+
+<br/>
+
+### `Function ListGetLast:Object( list:TList )`
+
+Returns the last object in the list
+
+Returns Null if the list is empty.
+
+
 <br/>
 <br/>
 
 
 ### `Function ListAddFirst:TLink( list:TList,value:Object )`
 ### `Function ListAddFirst:TLink( list:TList,value:Object )`
@@ -162,14 +543,84 @@ Add an object to a linked list
 A link object
 A link object
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the begin of the list
+ListAddFirst(list, "one")
+ListAddFirst(list, "two")
+ListAddFirst(list, "three")
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' three
+' two
+' one
+```
+<br/>
+
+### `Function ListRemoveFirst:Object( list:TList )`
+
+Removes and returns the first object in the list.
+
+Returns Null if the list is empty.
+
+
+<br/>
+
+### `Function ListRemoveLast:Object( list:TList )`
+
+Removes and returns the last object in the list.
+
+Returns Null if the list is empty.
+
+
 <br/>
 <br/>
 
 
 ### `Function ListRemove( list:TList,value:Object )`
 ### `Function ListRemove( list:TList,value:Object )`
 
 
 Remove an object from a linked list
 Remove an object from a linked list
 
 
-[ListRemove](../../brl/brl.linkedlist/#function-listremove-list-tlist-value-object) scans a list for the specified value and removes its link.
+[ListRemove](../../brl/brl.linkedlist/#function-listremove-listtlistvalueobject-) scans a list for the specified value and removes its link.
 
 
 
 
+#### Example
+```blitzmax
+SuperStrict
+
+Framework Brl.LinkedList
+Import Brl.StandardIO
+
+' create a list to hold some objects
+Local list:TList = CreateList()
+
+' add some string objects to the begin of the list
+ListAddLast(list, "one")
+ListAddLast(list, "two")
+ListAddLast(list, "three")
+
+' remove the string "two"
+ListRemove(list, "two")
+
+' enumerate all the strings in the list
+For Local a:String = EachIn list
+	Print a
+Next
+
+' outputs:
+' one
+' three
+```
 <br/>
 <br/>
 
 

+ 5 - 5
docs/api/brl/brl_map.md

@@ -32,12 +32,12 @@ A new map object
 Clears a map
 Clears a map
 
 
 
 
-[ClearMap](../../brl/brl.map/#function-clearmap-map-tmap) removes all keys and values from <b>map</b>
+[ClearMap](../../brl/brl.map/#function-clearmap-maptmap-) removes all keys and values from <b>map</b>
 
 
 
 
 <br/>
 <br/>
 
 
-### `Function MapIsEmpty( map:TMap )`
+### `Function MapIsEmpty:Int( map:TMap )`
 
 
 Checks if a map is empty
 Checks if a map is empty
 
 
@@ -71,7 +71,7 @@ The value associated with <b>key</b>
 
 
 <br/>
 <br/>
 
 
-### `Function MapContains( map:TMap,key:Object )`
+### `Function MapContains:Int( map:TMap,key:Object )`
 
 
 Checks if a map contains a key
 Checks if a map contains a key
 
 
@@ -92,7 +92,7 @@ Removes a key/value pair from a map
 Gets map keys
 Gets map keys
 
 
 
 
-The object returned by [MapKeys](../../brl/brl.map/#function-mapkeys-tmapenumerator-map-tmap) can be used with [EachIn](../../brl/brl.blitz/#eachin) to iterate through
+The object returned by [MapKeys](../../brl/brl.map/#function-mapkeystmapenumerator-maptmap-) can be used with [EachIn](../../brl/brl.blitz/#eachin) to iterate through
 the keys in <b>map</b>.
 the keys in <b>map</b>.
 
 
 
 
@@ -107,7 +107,7 @@ An iterator object
 Gets map values
 Gets map values
 
 
 
 
-The object returned by [MapValues](../../brl/brl.map/#function-mapvalues-tmapenumerator-map-tmap) can be used with [EachIn](../../brl/brl.blitz/#eachin) to iterate through
+The object returned by [MapValues](../../brl/brl.map/#function-mapvaluestmapenumerator-maptmap-) can be used with [EachIn](../../brl/brl.blitz/#eachin) to iterate through
 the values in <b>map</b>.
 the values in <b>map</b>.
 
 
 
 

+ 155 - 0
docs/api/brl/brl_math.md

@@ -619,3 +619,158 @@ Until KeyDown(KEY_ESCAPE)
 ```
 ```
 <br/>
 <br/>
 
 
+### `Function Round:Double( x:Double )`
+
+Nearest integral value to <b>x</b>.
+
+#### Example
+```blitzmax
+Rem
+Nearest integral value to x
+End Rem
+SuperStrict
+
+Framework brl.standardio
+Import brl.math
+
+Print "Round(+2.3) = " + Round(2.3)
+Print "Round(+2.5) = " + Round(2.5)
+Print "Round(+2.7) = " + round(2.7)
+Print ""
+
+Print "Round(-2.3) = " + Round(-2.3)
+Print "Round(-2.5) = " + Round(-2.5)
+Print "Round(-2.7) = " + Round(-2.7)
+
+Print "Round(-0.0) = " + Round(-0.0)
+```
+<br/>
+
+### `Function Trunc:Double( x:Double )`
+
+Nearest integral not greater in magnitude than <b>x</b>.
+
+#### Example
+```blitzmax
+Rem
+Nearest integral not greater in magnitude than x
+End Rem
+SuperStrict
+
+Framework brl.standardio
+Import brl.math
+
+Print "Trunc(+2.7) = " + Trunc(2.7)
+Print "Trunc(-2.7) = " + Trunc(-2.7)
+Print "Trunc(-0.0) = " + Trunc(-0.0)
+```
+<br/>
+
+### `Function SqrF:Float( x:Float )`
+
+Square root of <b>x</b>
+
+<br/>
+
+### `Function SinF:Float( x:Float )`
+
+Sine of <b>x</b> degrees
+
+<br/>
+
+### `Function CosF:Float( x:Float )`
+
+Cosine of <b>x</b> degrees
+
+<br/>
+
+### `Function TanF:Float( x:Float )`
+
+Tangent of <b>x</b> degrees
+
+<br/>
+
+### `Function ASinF:Float( x:Float )`
+
+Inverse Sine of <b>x</b>
+
+<br/>
+
+### `Function ACosF:Float( x:Float )`
+
+Inverse Cosine of <b>x</b>
+
+<br/>
+
+### `Function ATanF:Float( x:Float )`
+
+Inverse Tangent of <b>x</b>
+
+<br/>
+
+### `Function ATan2F:Float( y:Float,x:Float )`
+
+Inverse Tangent of two variables <b>x</b> , <b>y</b>
+
+<br/>
+
+### `Function SinhF:Float( x:Float )`
+
+Hyperbolic sine of <b>x</b>
+
+<br/>
+
+### `Function CoshF:Float( x:Float )`
+
+Hyperbolic cosine of <b>x</b>
+
+<br/>
+
+### `Function TanhF:Float( x:Float )`
+
+Hyperbolic tangent of <b>x</b>
+
+<br/>
+
+### `Function ExpF:Float( x:Float )`
+
+Exponential function
+
+<br/>
+
+### `Function LogF:Float( x:Float )`
+
+Natural logarithm
+
+<br/>
+
+### `Function Log10F:Float( x:Float )`
+
+Base 10 logarithm
+
+<br/>
+
+### `Function CeilF:Float( x:Float )`
+
+Smallest integral value not less than <b>x</b>
+
+<br/>
+
+### `Function FloorF:Float( x:Float )`
+
+Largest integral value not greater than <b>x</b>
+
+<br/>
+
+### `Function RoundF:Float( x:Float )`
+
+Nearest integral value to <b>x</b>.
+
+<br/>
+
+### `Function TruncF:Float( x:Float )`
+
+Nearest integral not greater in magnitude than <b>x</b>.
+
+<br/>
+

+ 111 - 106
docs/api/brl/brl_max2d.md

@@ -6,44 +6,44 @@ sidebar_label: BRL.Max2D
 
 
 
 
 
 
-The Max2D module provides a set of commands for drawing 2D graphics.<br>
-<br>
+The Max2D module provides a set of commands for drawing 2D graphics.<br/>
+<br/>
 Before using any of the Max2D commands, you must first create a Max2D graphics
 Before using any of the Max2D commands, you must first create a Max2D graphics
-object. The easiest way to do this is using the [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) command.<br>
-<br>
+object. The easiest way to do this is using the [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) command.<br/>
+<br/>
 By default, Max2D is double buffered which means you will have to use 
 By default, Max2D is double buffered which means you will have to use 
-[Flip](../../brl/brl.graphics/#function-flip-sync-1) once you have finished drawing each frame of graphics.<br>
-<br>
+[Flip](../../brl/brl.graphics/#function-flip-sync1-) once you have finished drawing each frame of graphics.<br/>
+<br/>
 <h2>Drawing</h2>
 <h2>Drawing</h2>
-Max2D provides support for the following drawing commands:<br>
-<br>
+Max2D provides support for the following drawing commands:<br/>
+<br/>
 <table>
 <table>
 <tr><th>Drawing command</th><th>Action</th></tr>
 <tr><th>Drawing command</th><th>Action</th></tr>
-<tr><td><a href=#Cls class=token>Cls</a></td><td>Clears the viewport</td></tr>
-<tr><td><a href=#Plot class=token>Plot</a></td><td>Draws a single pixel</td></tr>
-<tr><td><a href=#DrawLine class=token>DrawLine</a></td><td>Draws a line</td></tr>
-<tr><td><a href=#DrawRect class=token>DrawRect</a></td><td>Draws a rectangle</td></tr>
-<tr><td><a href=#DrawOval class=token>DrawOval</a></td><td>Draws an oval</td></tr>
-<tr><td><a href=#DrawPoly class=token>DrawPoly</a></td><td>Draws a polygon</td></tr>
-<tr><td><a href=#DrawText class=token>DrawText</a></td><td>Draws some text</td></tr>
-<tr><td><a href=#DrawImage class=token>DrawImage</a></td><td>Draws an image</td></tr>
-<tr><td><a href=#DrawPixmap class=token>DrawPixmap</a></td><td>Draws a pixmap</td></tr>
+<tr><td><a href="#Cls" class="token">Cls</a></td><td>Clears the viewport</td></tr>
+<tr><td><a href="#Plot" class="token">Plot</a></td><td>Draws a single pixel</td></tr>
+<tr><td><a href="#DrawLine" class="token">DrawLine</a></td><td>Draws a line</td></tr>
+<tr><td><a href="#DrawRect" class="token">DrawRect</a></td><td>Draws a rectangle</td></tr>
+<tr><td><a href="#DrawOval" class="token">DrawOval</a></td><td>Draws an oval</td></tr>
+<tr><td><a href="#DrawPoly" class="token">DrawPoly</a></td><td>Draws a polygon</td></tr>
+<tr><td><a href="#DrawText" class="token">DrawText</a></td><td>Draws some text</td></tr>
+<tr><td><a href="#DrawImage" class="token">DrawImage</a></td><td>Draws an image</td></tr>
+<tr><td><a href="#DrawPixmap" class="token">DrawPixmap</a></td><td>Draws a pixmap</td></tr>
 </table>
 </table>
-<br>
+<br/>
 <h2>Viewport, origin and handle</h2>
 <h2>Viewport, origin and handle</h2>
-Drawing commands are clipped to a rectangular area known as the <i>viewport</i>. Only the area within the viewport is ever modified, and attempting to draw outside the viewport will result in the drawing command being clipped or <i>chopped</i> to the viewport. To set the viewport, use the <a href=#SetViewport class=token>SetViewport</a> command.<br>
-<br>
-Drawing commands are also offset by the current <i>origin</i> and <i>handle</i>. To set these properties, use the <a href=#SetOrigin class=token>SetOrigin</a> and <a href=#SetHandle class=token>SetHandle</a> commands.<br>
-<br>
-The current handle is an x,y coordinate subtracted from all drawing x,y coordinates <i>before</i> any rotation or scaling occurs. This allows you to provide a local 'center' for drawing. On the other hand, the current origin is an x,y coordinate added to all drawing x,y coordinates <i>after</i> any rotation or scaling.<br>
-<br>
+Drawing commands are clipped to a rectangular area known as the <i>viewport</i>. Only the area within the viewport is ever modified, and attempting to draw outside the viewport will result in the drawing command being clipped or <i>chopped</i> to the viewport. To set the viewport, use the <a href="#SetViewport" class="token">SetViewport</a> command.<br/>
+<br/>
+Drawing commands are also offset by the current <i>origin</i> and <i>handle</i>. To set these properties, use the <a href="#SetOrigin" class="token">SetOrigin</a> and <a href="#SetHandle" class="token">SetHandle</a> commands.<br/>
+<br/>
+The current handle is an x,y coordinate subtracted from all drawing x,y coordinates <i>before</i> any rotation or scaling occurs. This allows you to provide a local 'center' for drawing. On the other hand, the current origin is an x,y coordinate added to all drawing x,y coordinates <i>after</i> any rotation or scaling.<br/>
+<br/>
 <h2>Color, alpha and blend mode</h2>
 <h2>Color, alpha and blend mode</h2>
-Drawing commands are affected by the current color, alpha and blend mode. You can set these properties by using the <a href=#SetColor class=token>SetColor</a>, <a href=#SetAlpha class=token>SetAlpha</a> and <a href=#SetBlend class=token>SetBlend</a> commands.<br>
-<br>
-The current alpha value controls the transparency level when using the ALPHABLEND blend mode.<br>
-<br>
-The current blend mode controls how pixels are combined with existing pixels in the back buffer and can be one of the following:<br>
-<br>
+Drawing commands are affected by the current color, alpha and blend mode. You can set these properties by using the <a href="#SetColor" class="token">SetColor</a>, <a href="#SetAlpha" class="token">SetAlpha</a> and <a href="#SetBlend" class="token">SetBlend</a> commands.<br/>
+<br/>
+The current alpha value controls the transparency level when using the ALPHABLEND blend mode.<br/>
+<br/>
+The current blend mode controls how pixels are combined with existing pixels in the back buffer and can be one of the following:<br/>
+<br/>
 <table>
 <table>
 <tr><th>Blend mode</th><th>Effect</th></tr>
 <tr><th>Blend mode</th><th>Effect</th></tr>
 <tr><td>SOLIDBLEND</td><td>Pixels overwrite existing backbuffer pixels</td></tr>
 <tr><td>SOLIDBLEND</td><td>Pixels overwrite existing backbuffer pixels</td></tr>
@@ -52,37 +52,42 @@ The current blend mode controls how pixels are combined with existing pixels in
 <tr><td>LIGHTBLEND</td><td>Pixel colors are added to backbuffer pixel colors, giving a 'lighting' effect</td></tr>
 <tr><td>LIGHTBLEND</td><td>Pixel colors are added to backbuffer pixel colors, giving a 'lighting' effect</td></tr>
 <tr><td>SHADEBLEND</td><td>Pixel colors are multiplied with backbuffer pixel colors, giving a 'shading' effect</td></tr>
 <tr><td>SHADEBLEND</td><td>Pixel colors are multiplied with backbuffer pixel colors, giving a 'shading' effect</td></tr>
 </table>
 </table>
-<br>
+<br/>
 <h2>Rotation and scale</h2>
 <h2>Rotation and scale</h2>
-Drawing commands can be scaled and rotated using the <a href=#SetScale class=token>SetScale</a> and <a href=#SetRotation class=token>SetRotation</a> commands. Rotation and scaling occur relative to the current handle.<br>
-<br>
+Drawing commands can be scaled and rotated using the <a href="#SetScale" class="token">SetScale</a> and <a href="#SetRotation" class="token">SetRotation</a> commands. Rotation and scaling occur relative to the current handle.<br/>
+<br/>
 <h2>Images</h2>
 <h2>Images</h2>
-Images are pre-rendered chunks of graphics that can be efficiently drawn using a single <a href=#DrawImage class=token>DrawImage</a> command. Images are typically stored in png, bmp or jpg format, and can be loaded using the <a href=#LoadImage class=token>LoadImage</a> command.<br>
-<br>
-Image drawing is also affected by color, alpha, blend, rotation and scale. The current color is multiplied with each pixel color before the image is drawn to the backbuffer, allowing you to <i>tint</i> images. To disable this effect, you should set the current color to white.<br>
-<br>
-Images can also have a mask color. This is the color that represents transparency when an image is drawn using the MASKBLEND blend mode. To set the mask color, use the <a href=#SetMaskColor class=token>SetMaskColor</a> command.<br>
-<br>
-Images can be created by snapshotting regions of the back buffer using the <a href=#GrabImage class=token>GrabImage</a> command.
+Images are pre-rendered chunks of graphics that can be efficiently drawn using a single <a href="#DrawImage" class="token">DrawImage</a> command. Images are typically stored in png, bmp or jpg format, and can be loaded using the <a href="#LoadImage" class="token">LoadImage</a> command.<br/>
+<br/>
+Image drawing is also affected by color, alpha, blend, rotation and scale. The current color is multiplied with each pixel color before the image is drawn to the backbuffer, allowing you to <i>tint</i> images. To disable this effect, you should set the current color to white.<br/>
+<br/>
+Images can also have a mask color. This is the color that represents transparency when an image is drawn using the MASKBLEND blend mode. To set the mask color, use the <a href="#SetMaskColor" class="token">SetMaskColor</a> command.<br/>
+<br/>
+Images can be created by snapshotting regions of the back buffer using the <a href="#GrabImage" class="token">GrabImage</a> command.
 <h2>Pixmaps</h2>
 <h2>Pixmaps</h2>
-Pixmaps are used to manipulate images at a pixel level, see the pixmaps module for details.<p>
-
-<a href=#LockImage class=token>LockImage</a> allows for direct Image pixel access and requires a corresponding call to
-<a href=#UnlockImage class=token>UnlockImage</a> when you have have finished reading or modifying the pixels. 
-The <a href=#DrawPixmap class=token>DrawPixmap</a> and <a href=#GrabPixmap class=token>GrabPixmap</a>
+Pixmaps are used to manipulate images at a pixel level, see the pixmaps module for details.
+<p>
+<a href="#LockImage" class="token">LockImage</a> allows for direct Image pixel access and requires a corresponding call to
+<a href="#UnlockImage" class="token">UnlockImage</a> when you have have finished reading or modifying the pixels. 
+The <a href="#DrawPixmap" class="token">DrawPixmap</a> and <a href="#GrabPixmap" class="token">GrabPixmap</a>
 commands allow you to move pixels to and from the current graphic display's backbuffer.
 commands allow you to move pixels to and from the current graphic display's backbuffer.
 <h2>Collisions</h2>
 <h2>Collisions</h2>
 Max2D features a multilayered pixel perfect collision system.
 Max2D features a multilayered pixel perfect collision system.
-The <a href=#CollideRect class=token>CollideRect</a> and 
-<a href=#CollideImage class=token>CollideImage</a> commands
+The <a href="#CollideRect" class="token">CollideRect</a> and 
+<a href="#CollideImage" class="token">CollideImage</a> commands
 provide a dual function allowing the drawing and hit testing of Rects and 
 provide a dual function allowing the drawing and hit testing of Rects and 
-Images with any combination of 32 collision layers.<p>
+Images with any combination of 32 collision layers.
+</p>
+<p>
 The current Scale, Rotation, Origin and Handle settings are taken into account 
 The current Scale, Rotation, Origin and Handle settings are taken into account 
 so coordinates for the collision commands acurately match their drawing counterparts 
 so coordinates for the collision commands acurately match their drawing counterparts 
-<a href=#DrawRect class=token>DrawRect</a> and <a href=#DrawImage class=token>DrawImage</a>.<p>
-<a href=#ResetCollisions class=token>ResetCollisions</a> is used
-to clear any or all of the 32 collision layers provided.<br>
-<br>
+<a href="#DrawRect" class="token">DrawRect</a> and <a href="#DrawImage" class="token">DrawImage</a>.
+</p>
+<p>
+<a href="#ResetCollisions" class="token">ResetCollisions</a> is used
+to clear any or all of the 32 collision layers provided.<br/>
+</p>
+<br/>
 
 
 
 
 
 
@@ -98,7 +103,7 @@ to clear any or all of the 32 collision layers provided.<br>
 Clear graphics buffer
 Clear graphics buffer
 
 
 
 
-Clears the graphics buffer to the current cls color as determined by [SetClsColor](../../brl/brl.max2d/#function-setclscolor-red-green-blue).
+Clears the graphics buffer to the current cls color as determined by [SetClsColor](../../brl/brl.max2d/#function-setclscolor-redgreenblue-).
 
 
 
 
 #### Example
 #### Example
@@ -154,8 +159,8 @@ Plot a pixel
 
 
 
 
 Sets the color of a single pixel on the back buffer to the current drawing color
 Sets the color of a single pixel on the back buffer to the current drawing color
-defined with the [SetColor](../../brl/brl.max2d/#function-setcolor-red-green-blue) command. Other commands that affect the operation of
-[Plot](../../brl/brl.max2d/#function-plot-x-y) include [SetOrigin](../../brl/brl.max2d/#function-setorigin-x-y), [SetViewPort](../../brl/brl.max2d/#function-setviewport-x-y-width-height), [SetBlend](../../brl/brl.max2d/#function-setblend-blend) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha).
+defined with the [SetColor](../../brl/brl.max2d/#function-setcolor-redgreenblue-) command. Other commands that affect the operation of
+[Plot](../../brl/brl.max2d/#function-plot-xy-) include [SetOrigin](../../brl/brl.max2d/#function-setorigin-xy-), [SetViewPort](../../brl/brl.max2d/#function-setviewport-xywidthheight-), [SetBlend](../../brl/brl.max2d/#function-setblend-blend-) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha-).
 
 
 
 
 #### Example
 #### Example
@@ -189,10 +194,10 @@ Draw a rectangle
 
 
 
 
 Sets the color of a rectangular area of pixels using the current drawing color
 Sets the color of a rectangular area of pixels using the current drawing color
-defined with the [SetColor](../../brl/brl.max2d/#function-setcolor-red-green-blue) command.
+defined with the [SetColor](../../brl/brl.max2d/#function-setcolor-redgreenblue-) command.
 
 
-Other commands that affect the operation of [DrawRect](../../brl/brl.max2d/#function-drawrect-x-y-width-height) include [SetHandle](../../brl/brl.max2d/#function-sethandle-x-y), [SetScale](../../brl/brl.max2d/#function-setscale-scale-x-scale-y),
-[SetRotation](../../brl/brl.max2d/#function-setrotation-rotation), [SetOrigin](../../brl/brl.max2d/#function-setorigin-x-y), [SetViewPort](../../brl/brl.max2d/#function-setviewport-x-y-width-height), [SetBlend](../../brl/brl.max2d/#function-setblend-blend) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha).
+Other commands that affect the operation of [DrawRect](../../brl/brl.max2d/#function-drawrect-xywidthheight-) include [SetHandle](../../brl/brl.max2d/#function-sethandle-xy-), [SetScale](../../brl/brl.max2d/#function-setscale-scalexscaley-),
+[SetRotation](../../brl/brl.max2d/#function-setrotation-rotation-), [SetOrigin](../../brl/brl.max2d/#function-setorigin-xy-), [SetViewPort](../../brl/brl.max2d/#function-setviewport-xywidthheight-), [SetBlend](../../brl/brl.max2d/#function-setblend-blend-) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha-).
 
 
 
 
 #### Example
 #### Example
@@ -233,10 +238,10 @@ Wend
 Draw a line
 Draw a line
 
 
 
 
-[DrawLine](../../brl/brl.max2d/#function-drawline-x-y-x2-y2-draw-last-pixel-true) draws a line from <b>x</b>, <b>y</b> to <b>x2</b>, <b>y2</b> with the current drawing color.
+[DrawLine](../../brl/brl.max2d/#function-drawline-xyx2y2drawlastpixeltrue-) draws a line from <b>x</b>, <b>y</b> to <b>x2</b>, <b>y2</b> with the current drawing color.
 
 
-BlitzMax commands that affect the drawing of lines include [SetLineWidth](../../brl/brl.max2d/#function-setlinewidth-width), [SetColor](../../brl/brl.max2d/#function-setcolor-red-green-blue), [SetHandle](../../brl/brl.max2d/#function-sethandle-x-y),
-[SetScale](../../brl/brl.max2d/#function-setscale-scale-x-scale-y), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation), [SetOrigin](../../brl/brl.max2d/#function-setorigin-x-y), [SetViewPort](../../brl/brl.max2d/#function-setviewport-x-y-width-height), [SetBlend](../../brl/brl.max2d/#function-setblend-blend) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha).
+BlitzMax commands that affect the drawing of lines include [SetLineWidth](../../brl/brl.max2d/#function-setlinewidth-width-), [SetColor](../../brl/brl.max2d/#function-setcolor-redgreenblue-), [SetHandle](../../brl/brl.max2d/#function-sethandle-xy-),
+[SetScale](../../brl/brl.max2d/#function-setscale-scalexscaley-), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation-), [SetOrigin](../../brl/brl.max2d/#function-setorigin-xy-), [SetViewPort](../../brl/brl.max2d/#function-setviewport-xywidthheight-), [SetBlend](../../brl/brl.max2d/#function-setblend-blend-) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha-).
 The optional <b>draw_last_pixel</b> parameter can be used to control whether the last pixel of the line is drawn or not.
 The optional <b>draw_last_pixel</b> parameter can be used to control whether the last pixel of the line is drawn or not.
 Not drawing the last pixel can be useful if you are using certain blending modes.
 Not drawing the last pixel can be useful if you are using certain blending modes.
 
 
@@ -272,11 +277,11 @@ Wend
 Draw an oval
 Draw an oval
 
 
 
 
-[DrawOval](../../brl/brl.max2d/#function-drawoval-x-y-width-height) draws an oval that fits in the rectangular area defined by <b>x</b>, <b>y</b>, <b>width</b>
+[DrawOval](../../brl/brl.max2d/#function-drawoval-xywidthheight-) draws an oval that fits in the rectangular area defined by <b>x</b>, <b>y</b>, <b>width</b>
 and <b>height</b> parameters.
 and <b>height</b> parameters.
 
 
-BlitzMax commands that affect the drawing of ovals include [SetColor](../../brl/brl.max2d/#function-setcolor-red-green-blue), [SetHandle](../../brl/brl.max2d/#function-sethandle-x-y),
-[SetScale](../../brl/brl.max2d/#function-setscale-scale-x-scale-y), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation), [SetOrigin](../../brl/brl.max2d/#function-setorigin-x-y), [SetViewPort](../../brl/brl.max2d/#function-setviewport-x-y-width-height), [SetBlend](../../brl/brl.max2d/#function-setblend-blend) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha).
+BlitzMax commands that affect the drawing of ovals include [SetColor](../../brl/brl.max2d/#function-setcolor-redgreenblue-), [SetHandle](../../brl/brl.max2d/#function-sethandle-xy-),
+[SetScale](../../brl/brl.max2d/#function-setscale-scalexscaley-), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation-), [SetOrigin](../../brl/brl.max2d/#function-setorigin-xy-), [SetViewPort](../../brl/brl.max2d/#function-setviewport-xywidthheight-), [SetBlend](../../brl/brl.max2d/#function-setblend-blend-) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha-).
 
 
 
 
 #### Example
 #### Example
@@ -309,10 +314,10 @@ Wend
 Draw a polygon
 Draw a polygon
 
 
 
 
-[DrawPoly](../../brl/brl.max2d/#function-drawpoly-xy) draws a polygon with corners defined by an array of x#,y# coordinate pairs.
+[DrawPoly](../../brl/brl.max2d/#function-drawpoly-xy-) draws a polygon with corners defined by an array of x#,y# coordinate pairs.
 
 
-BlitzMax commands that affect the drawing of polygons include [SetColor](../../brl/brl.max2d/#function-setcolor-red-green-blue), [SetHandle](../../brl/brl.max2d/#function-sethandle-x-y),
-[SetScale](../../brl/brl.max2d/#function-setscale-scale-x-scale-y), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation), [SetOrigin](../../brl/brl.max2d/#function-setorigin-x-y), [SetViewPort](../../brl/brl.max2d/#function-setviewport-x-y-width-height), [SetBlend](../../brl/brl.max2d/#function-setblend-blend) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha).
+BlitzMax commands that affect the drawing of polygons include [SetColor](../../brl/brl.max2d/#function-setcolor-redgreenblue-), [SetHandle](../../brl/brl.max2d/#function-sethandle-xy-),
+[SetScale](../../brl/brl.max2d/#function-setscale-scalexscaley-), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation-), [SetOrigin](../../brl/brl.max2d/#function-setorigin-xy-), [SetViewPort](../../brl/brl.max2d/#function-setviewport-xywidthheight-), [SetBlend](../../brl/brl.max2d/#function-setblend-blend-) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha-).
 
 
 
 
 #### Example
 #### Example
@@ -342,16 +347,16 @@ Wend
 Draw text
 Draw text
 
 
 
 
-[DrawText](../../brl/brl.max2d/#function-drawtext-t-x-y) prints strings at position <b>x</b>,@y of the graphics display using
-the current image font specified by the [SetImageFont](../../brl/brl.max2d/#function-setimagefont-font-timagefont) command.
+[DrawText](../../brl/brl.max2d/#function-drawtext-txy-) prints strings at position <b>x</b>,@y of the graphics display using
+the current image font specified by the [SetImageFont](../../brl/brl.max2d/#function-setimagefont-fonttimagefont-) command.
 
 
-Other commands that affect [DrawText](../../brl/brl.max2d/#function-drawtext-t-x-y) include [SetColor](../../brl/brl.max2d/#function-setcolor-red-green-blue), [SetHandle](../../brl/brl.max2d/#function-sethandle-x-y),
-[SetScale](../../brl/brl.max2d/#function-setscale-scale-x-scale-y), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation), [SetOrigin](../../brl/brl.max2d/#function-setorigin-x-y), [SetViewPort](../../brl/brl.max2d/#function-setviewport-x-y-width-height), [SetBlend](../../brl/brl.max2d/#function-setblend-blend) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha).
+Other commands that affect [DrawText](../../brl/brl.max2d/#function-drawtext-txy-) include [SetColor](../../brl/brl.max2d/#function-setcolor-redgreenblue-), [SetHandle](../../brl/brl.max2d/#function-sethandle-xy-),
+[SetScale](../../brl/brl.max2d/#function-setscale-scalexscaley-), [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation-), [SetOrigin](../../brl/brl.max2d/#function-setorigin-xy-), [SetViewPort](../../brl/brl.max2d/#function-setviewport-xywidthheight-), [SetBlend](../../brl/brl.max2d/#function-setblend-blend-) and [SetAlpha](../../brl/brl.max2d/#function-setalpha-alpha-).
 
 
-It is recomended that the blend mode be set to ALPHABLEND using the [SetBlend](../../brl/brl.max2d/#function-setblend-blend)
+It is recomended that the blend mode be set to ALPHABLEND using the [SetBlend](../../brl/brl.max2d/#function-setblend-blend-)
 command for non jagged antialiased text. Text that will be drawn at a smaller
 command for non jagged antialiased text. Text that will be drawn at a smaller
-size using the [SetScale](../../brl/brl.max2d/#function-setscale-scale-x-scale-y) command should use fonts loaded with the SMOOTHFONT
-style to benefit from mip-mapped filtering, see [LoadImageFont](../../brl/brl.max2d/#function-loadimagefont-timagefont-url-object-size-style-smoothfont) for more information.
+size using the [SetScale](../../brl/brl.max2d/#function-setscale-scalexscaley-) command should use fonts loaded with the SMOOTHFONT
+style to benefit from mip-mapped filtering, see [LoadImageFont](../../brl/brl.max2d/#function-loadimagefonttimagefont-urlobjectsizestylesmoothfont-) for more information.
 
 
 
 
 #### Example
 #### Example
@@ -437,7 +442,7 @@ If the blend mode is ALPHABLEND, then the image is also affected by the current
 Draw an image in a tiled pattern
 Draw an image in a tiled pattern
 
 
 
 
-[TileImage](../../brl/brl.max2d/#function-tileimage-image-timage-x-0-y-0-frame-0) draws an image in a repeating, tiled pattern, filling the current viewport.
+[TileImage](../../brl/brl.max2d/#function-tileimage-imagetimagex0y0frame0-) draws an image in a repeating, tiled pattern, filling the current viewport.
 
 
 
 
 <br/>
 <br/>
@@ -447,8 +452,8 @@ Draw an image in a tiled pattern
 Set current color
 Set current color
 
 
 
 
-The [SetColor](../../brl/brl.max2d/#function-setcolor-red-green-blue) command affects the color of [Plot](../../brl/brl.max2d/#function-plot-x-y), [DrawRect](../../brl/brl.max2d/#function-drawrect-x-y-width-height), [DrawLine](../../brl/brl.max2d/#function-drawline-x-y-x2-y2-draw-last-pixel-true), [DrawText](../../brl/brl.max2d/#function-drawtext-t-x-y),
-[DrawImage](../../brl/brl.max2d/#function-drawimage-image-timage-x-y-frame-0) and [DrawPoly](../../brl/brl.max2d/#function-drawpoly-xy).
+The [SetColor](../../brl/brl.max2d/#function-setcolor-redgreenblue-) command affects the color of [Plot](../../brl/brl.max2d/#function-plot-xy-), [DrawRect](../../brl/brl.max2d/#function-drawrect-xywidthheight-), [DrawLine](../../brl/brl.max2d/#function-drawline-xyx2y2drawlastpixeltrue-), [DrawText](../../brl/brl.max2d/#function-drawtext-txy-),
+[DrawImage](../../brl/brl.max2d/#function-drawimage-imagetimagexyframe0-) and [DrawPoly](../../brl/brl.max2d/#function-drawpoly-xy-).
 
 
 The <b>red</b>, <b>green</b> and <b>blue</b> parameters should be in the range of 0 to 255.
 The <b>red</b>, <b>green</b> and <b>blue</b> parameters should be in the range of 0 to 255.
 
 
@@ -475,7 +480,7 @@ commands are used in BlitzMax.
 
 
 <b>blend</b> should be one of:
 <b>blend</b> should be one of:
 
 
-<table><tr><td> <b>Blend mode</b></td><td><b>Effect</b></td></tr><tr><td>  MASKBLEND</td><td>Pixels are drawn only if their alpha component is greater than .5</td></tr><tr><td>  SOLIDBLEND</td><td>Pixels overwrite existing backbuffer pixels</td></tr><tr><td>  ALPHABLEND</td><td>Pixels are alpha blended with existing backbuffer pixels</td></tr><tr><td>  LIGHTBLEND</td><td>Pixel colors are added to backbuffer pixel colors, giving a 'lighting' effect</td></tr><tr><td>  SHADEBLEND</td><td>Pixel colors are multiplied with backbuffer pixel colors, giving a 'shading' effect</table>
+<table><tr><td> <b>Blend mode</b></td><td><b>Effect</b></td></tr><tr><td>  MASKBLEND</td><td>Pixels are drawn only if their alpha component is greater than .5</td></tr><tr><td>  SOLIDBLEND</td><td>Pixels overwrite existing backbuffer pixels</td></tr><tr><td>  ALPHABLEND</td><td>Pixels are alpha blended with existing backbuffer pixels</td></tr><tr><td>  LIGHTBLEND</td><td>Pixel colors are added to backbuffer pixel colors, giving a 'lighting' effect</td></tr><tr><td>  SHADEBLEND</td><td>Pixel colors are multiplied with backbuffer pixel colors, giving a 'shading' effect</td></tr></table>
 
 
 
 
 
 
@@ -486,7 +491,7 @@ commands are used in BlitzMax.
 Get current blend mode
 Get current blend mode
 
 
 
 
-See [SetBlend](../../brl/brl.max2d/#function-setblend-blend) for possible return values.
+See [SetBlend](../../brl/brl.max2d/#function-setblend-blend-) for possible return values.
 
 
 
 
 #### Returns
 #### Returns
@@ -521,7 +526,7 @@ the current alpha value in the range 0..1.0
 
 
 ### `Function SetLineWidth( width# )`
 ### `Function SetLineWidth( width# )`
 
 
-Sets pixel width of lines drawn with the [DrawLine](../../brl/brl.max2d/#function-drawline-x-y-x2-y2-draw-last-pixel-true) command
+Sets pixel width of lines drawn with the [DrawLine](../../brl/brl.max2d/#function-drawline-xyx2y2drawlastpixeltrue-) command
 
 
 <br/>
 <br/>
 
 
@@ -658,9 +663,9 @@ Set drawing handle
 
 
 
 
 The drawing handle is a 2D offset subtracted from the x,y location of all
 The drawing handle is a 2D offset subtracted from the x,y location of all
-drawing commands except [DrawImage](../../brl/brl.max2d/#function-drawimage-image-timage-x-y-frame-0) as Images have their own unique handles.
+drawing commands except [DrawImage](../../brl/brl.max2d/#function-drawimage-imagetimagexyframe0-) as Images have their own unique handles.
 
 
-Unlike [SetOrigin](../../brl/brl.max2d/#function-setorigin-x-y) the drawing handle is subtracted before rotation and scale
+Unlike [SetOrigin](../../brl/brl.max2d/#function-setorigin-xy-) the drawing handle is subtracted before rotation and scale
 are applied providing a 'local' origin.
 are applied providing a 'local' origin.
 
 
 
 
@@ -750,8 +755,8 @@ An image font object
 Set current image font
 Set current image font
 
 
 
 
-In order to [DrawText](../../brl/brl.max2d/#function-drawtext-t-x-y) in fonts other than the default system font use the [SetImageFont](../../brl/brl.max2d/#function-setimagefont-font-timagefont)
-command with a font handle returned by the [LoadImageFont](../../brl/brl.max2d/#function-loadimagefont-timagefont-url-object-size-style-smoothfont) command.
+In order to [DrawText](../../brl/brl.max2d/#function-drawtext-txy-) in fonts other than the default system font use the [SetImageFont](../../brl/brl.max2d/#function-setimagefont-fonttimagefont-)
+command with a font handle returned by the [LoadImageFont](../../brl/brl.max2d/#function-loadimagefonttimagefont-urlobjectsizestylesmoothfont-) command.
 
 
 Use &{SetImageFont Null} to select the default, built-in font.
 Use &{SetImageFont Null} to select the default, built-in font.
 
 
@@ -774,7 +779,7 @@ Get width of text
 
 
 
 
 This command is useful for calculating horizontal alignment of text when using
 This command is useful for calculating horizontal alignment of text when using
-the [DrawText](../../brl/brl.max2d/#function-drawtext-t-x-y) command.
+the [DrawText](../../brl/brl.max2d/#function-drawtext-txy-) command.
 
 
 
 
 #### Returns
 #### Returns
@@ -789,7 +794,7 @@ Get height of text
 
 
 
 
 This command is useful for calculating vertical alignment of text when using
 This command is useful for calculating vertical alignment of text when using
-the [DrawText](../../brl/brl.max2d/#function-drawtext-t-x-y) command.
+the [DrawText](../../brl/brl.max2d/#function-drawtext-txy-) command.
 
 
 
 
 #### Returns
 #### Returns
@@ -812,14 +817,14 @@ Load an image
 </td></tr><tr><td>  FILTEREDIMAGE</td><td>The image is smoothed when scaled up to greater than its original
 </td></tr><tr><td>  FILTEREDIMAGE</td><td>The image is smoothed when scaled up to greater than its original
 size, when rotated, or when drawn at fractional pixel coordinates.
 size, when rotated, or when drawn at fractional pixel coordinates.
 </td></tr><tr><td>  MIPMAPPEDIMAGE</td><td>The image is smoothed when scaled down to less than its original size.
 </td></tr><tr><td>  MIPMAPPEDIMAGE</td><td>The image is smoothed when scaled down to less than its original size.
-</td></tr><tr><td>  DYNAMICIMAGE</td><td>The image can be modified using [LockImage](../../brl/brl.max2d/#function-lockimage-tpixmap-image-timage-frame-0-read-lock-true-write-lock-true) or [GrabImage](../../brl/brl.max2d/#function-grabimage-image-timage-x-y-frame-0).</table>
+</td></tr><tr><td>  DYNAMICIMAGE</td><td>The image can be modified using [LockImage](../../brl/brl.max2d/#function-lockimagetpixmap-imagetimageframe0readlocktruewritelocktrue-) or [GrabImage](../../brl/brl.max2d/#function-grabimage-imagetimagexyframe0-).</td></tr></table>
 
 
 
 
 
 
 Note MIPMAPPEDIMAGE images consume extra video memory, so this flag should only be used
 Note MIPMAPPEDIMAGE images consume extra video memory, so this flag should only be used
 when really necessary.
 when really necessary.
 
 
-If flags is -1, the auto image flags are used: See [AutoImageFlags](../../brl/brl.max2d/#function-autoimageflags-flags).
+If flags is -1, the auto image flags are used: See [AutoImageFlags](../../brl/brl.max2d/#function-autoimageflags-flags-).
 
 
 To combine flags, use the | (boolean OR) operator.
 To combine flags, use the | (boolean OR) operator.
 
 
@@ -835,10 +840,10 @@ A new image object
 Load a multi-frame image
 Load a multi-frame image
 
 
 
 
-[LoadAnimImage](../../brl/brl.max2d/#function-loadanimimage-timage-url-object-cell-width-cell-height-first-cell-cell-count-flags-1) extracts multiple image frames from a single, larger image. <b>url</b> can be either a string or an
+[LoadAnimImage](../../brl/brl.max2d/#function-loadanimimagetimage-urlobjectcellwidthcellheightfirstcellcellcountflags1-) extracts multiple image frames from a single, larger image. <b>url</b> can be either a string or an
 existing pixmap.
 existing pixmap.
 
 
-See [LoadImage](../../brl/brl.max2d/#function-loadimage-timage-url-object-flags-1) for valid <b>flags</b> values.
+See [LoadImage](../../brl/brl.max2d/#function-loadimagetimage-urlobjectflags1-) for valid <b>flags</b> values.
 
 
 
 
 #### Returns
 #### Returns
@@ -852,7 +857,7 @@ An image object
 Set an image's handle to an arbitrary point
 Set an image's handle to an arbitrary point
 
 
 
 
-An image's handle is subtracted from the coordinates of [DrawImage](../../brl/brl.max2d/#function-drawimage-image-timage-x-y-frame-0) before
+An image's handle is subtracted from the coordinates of [DrawImage](../../brl/brl.max2d/#function-drawimage-imagetimagexyframe0-) before
 rotation and scale are applied.
 rotation and scale are applied.
 
 
 
 
@@ -863,10 +868,10 @@ rotation and scale are applied.
 Enable or disable auto midhandle mode
 Enable or disable auto midhandle mode
 
 
 
 
-When auto midhandle mode is enabled, all images are automatically 'midhandled' (see [MidHandleImage](../../brl/brl.max2d/#function-midhandleimage-image-timage))
+When auto midhandle mode is enabled, all images are automatically 'midhandled' (see [MidHandleImage](../../brl/brl.max2d/#function-midhandleimage-imagetimage-))
 when they are created. If auto midhandle mode is disabled, images are handled by their top left corner.
 when they are created. If auto midhandle mode is disabled, images are handled by their top left corner.
 
 
-AutoMidHandle defaults to False after calling [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0).
+AutoMidHandle defaults to False after calling [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-).
 
 
 
 
 <br/>
 <br/>
@@ -876,8 +881,8 @@ AutoMidHandle defaults to False after calling [Graphics](../../brl/brl.graphics/
 Set auto image flags
 Set auto image flags
 
 
 
 
-The auto image flags are used by [LoadImage](../../brl/brl.max2d/#function-loadimage-timage-url-object-flags-1) and [CreateImage](../../brl/brl.max2d/#function-createimage-timage-width-height-frames-1-flags-1) when no image
-flags are specified. See [LoadImage](../../brl/brl.max2d/#function-loadimage-timage-url-object-flags-1) for a full list of valid image flags.
+The auto image flags are used by [LoadImage](../../brl/brl.max2d/#function-loadimagetimage-urlobjectflags1-) and [CreateImage](../../brl/brl.max2d/#function-createimagetimage-widthheightframes1flags1-) when no image
+flags are specified. See [LoadImage](../../brl/brl.max2d/#function-loadimagetimage-urlobjectflags1-) for a full list of valid image flags.
 AutoImageFlags defaults to MASKEDIMAGE | FILTEREDIMAGE.
 AutoImageFlags defaults to MASKEDIMAGE | FILTEREDIMAGE.
 
 
 
 
@@ -914,10 +919,10 @@ The height, in pixels, of <b>image</b>
 Create an empty image
 Create an empty image
 
 
 
 
-[CreateImage](../../brl/brl.max2d/#function-createimage-timage-width-height-frames-1-flags-1) creates an 'empty' image, which should be initialized using either [GrabImage](../../brl/brl.max2d/#function-grabimage-image-timage-x-y-frame-0) or [LockImage](../../brl/brl.max2d/#function-lockimage-tpixmap-image-timage-frame-0-read-lock-true-write-lock-true)
+[CreateImage](../../brl/brl.max2d/#function-createimagetimage-widthheightframes1flags1-) creates an 'empty' image, which should be initialized using either [GrabImage](../../brl/brl.max2d/#function-grabimage-imagetimagexyframe0-) or [LockImage](../../brl/brl.max2d/#function-lockimagetpixmap-imagetimageframe0readlocktruewritelocktrue-)
 before being drawn.
 before being drawn.
 
 
-Please refer to [LoadImage](../../brl/brl.max2d/#function-loadimage-timage-url-object-flags-1) for valid <b>flags</b> values. The <b>flags</b> value is always combined with DYNAMICIMAGE.
+Please refer to [LoadImage](../../brl/brl.max2d/#function-loadimagetimage-urlobjectflags1-) for valid <b>flags</b> values. The <b>flags</b> value is always combined with DYNAMICIMAGE.
 
 
 
 
 #### Returns
 #### Returns
@@ -961,7 +966,7 @@ Locking an image allows you to directly access an image's pixels.
 
 
 Only images created with the DYNAMICIMAGE flag can be locked.
 Only images created with the DYNAMICIMAGE flag can be locked.
 
 
-Locked images must eventually be unlocked with [UnlockImage](../../brl/brl.max2d/#function-unlockimage-image-timage-frame-0) before they can be drawn.
+Locked images must eventually be unlocked with [UnlockImage](../../brl/brl.max2d/#function-unlockimage-imagetimageframe0-) before they can be drawn.
 
 
 
 
 #### Returns
 #### Returns
@@ -975,7 +980,7 @@ A pixmap representing the image contents
 Unlock an image
 Unlock an image
 
 
 
 
-Unlocks an image previously locked with [LockImage](../../brl/brl.max2d/#function-lockimage-tpixmap-image-timage-frame-0-read-lock-true-write-lock-true).
+Unlocks an image previously locked with [LockImage](../../brl/brl.max2d/#function-lockimagetpixmap-imagetimageframe0readlocktruewritelocktrue-).
 
 
 
 
 <br/>
 <br/>
@@ -1040,8 +1045,8 @@ Grab pixmap
 Tests if two images collide
 Tests if two images collide
 
 
 
 
-[ImagesCollide](../../brl/brl.max2d/#function-imagescollideimage1-timage-x1-y1-frame1-image2-timage-x2-y2-frame2) uses the current Rotation and Scale factors from the most previous
-call to [SetScale](../../brl/brl.max2d/#function-setscale-scale-x-scale-y) and [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation) to calculate at a pixel level if the two images collide.
+[ImagesCollide](../../brl/brl.max2d/#function-imagescollideimage1timagex1y1frame1image2timagex2y2frame2) uses the current Rotation and Scale factors from the most previous
+call to [SetScale](../../brl/brl.max2d/#function-setscale-scalexscaley-) and [SetRotation](../../brl/brl.max2d/#function-setrotation-rotation-) to calculate at a pixel level if the two images collide.
 
 
 
 
 #### Returns
 #### Returns
@@ -1055,7 +1060,7 @@ True if any pixels of the two images specified at the given location overlap.
 Tests if two images with arbitrary Rotation and Scales collide
 Tests if two images with arbitrary Rotation and Scales collide
 
 
 
 
-[ImagesCollide2](../../brl/brl.max2d/#function-imagescollide2image1-timage-x1-y1-frame1-rot1-scalex1-scaley1-image2-timage-x2-y2-frame2-rot2-scalex2-scaley2) uses the specified Rotation and Scale paramteters
+[ImagesCollide2](../../brl/brl.max2d/#function-imagescollide2image1timagex1y1frame1rot1scalex1scaley1image2timagex2y2frame2rot2scalex2scaley2) uses the specified Rotation and Scale paramteters
 to calculate at a pixel level if the two images collide (overlap).
 to calculate at a pixel level if the two images collide (overlap).
 
 
 
 
@@ -1074,9 +1079,9 @@ The BlitzMax 2D collision system manages 32 layers, the <b>mask</b> parameter ca
 be a combination of the following values or the special value COLLISION_LAYER_ALL in order
 be a combination of the following values or the special value COLLISION_LAYER_ALL in order
 to perform collision operations on multiple layers.
 to perform collision operations on multiple layers.
 
 
-Note: COLLISION_LAYER_32 is used by the [ImagesCollide](../../brl/brl.max2d/#function-imagescollideimage1-timage-x1-y1-frame1-image2-timage-x2-y2-frame2) and [ImagesCollide2](../../brl/brl.max2d/#function-imagescollide2image1-timage-x1-y1-frame1-rot1-scalex1-scaley1-image2-timage-x2-y2-frame2-rot2-scalex2-scaley2) commands.
+Note: COLLISION_LAYER_32 is used by the [ImagesCollide](../../brl/brl.max2d/#function-imagescollideimage1timagex1y1frame1image2timagex2y2frame2) and [ImagesCollide2](../../brl/brl.max2d/#function-imagescollide2image1timagex1y1frame1rot1scalex1scaley1image2timagex2y2frame2rot2scalex2scaley2) commands.
 
 
-<table><tr><td> <b>Layer</b></td><td><b>Mask value</b></td></tr><tr><td>  COLLISION_LAYER_ALL</td><td>0</td></tr><tr><td>  COLLISION_LAYER_1</td><td>$0001</td></tr><tr><td>  COLLISION_LAYER_2</td><td>$0002</td></tr><tr><td>  COLLISION_LAYER_3</td><td>$0004</td></tr><tr><td>  COLLISION_LAYER_4</td><td>$0008</td></tr><tr><td>  COLLISION_LAYER_5</td><td>$0010</td></tr><tr><td>  COLLISION_LAYER_6</td><td>$0020</td></tr><tr><td>  COLLISION_LAYER_7</td><td>$0040</td></tr><tr><td>  COLLISION_LAYER_8</td><td>$0080</td></tr><tr><td>  COLLISION_LAYER_9</td><td>$0100</td></tr><tr><td>  COLLISION_LAYER_10</td><td>$0200</td></tr><tr><td>  COLLISION_LAYER_11</td><td>$0400</td></tr><tr><td>  COLLISION_LAYER_12</td><td>$0800</td></tr><tr><td>  COLLISION_LAYER_13</td><td>$1000</td></tr><tr><td>  COLLISION_LAYER_14</td><td>$2000</td></tr><tr><td>  COLLISION_LAYER_15</td><td>$4000</td></tr><tr><td>  COLLISION_LAYER_16</td><td>$8000</table>
+<table><tr><td> <b>Layer</b></td><td><b>Mask value</b></td></tr><tr><td>  COLLISION_LAYER_ALL</td><td>0</td></tr><tr><td>  COLLISION_LAYER_1</td><td>$0001</td></tr><tr><td>  COLLISION_LAYER_2</td><td>$0002</td></tr><tr><td>  COLLISION_LAYER_3</td><td>$0004</td></tr><tr><td>  COLLISION_LAYER_4</td><td>$0008</td></tr><tr><td>  COLLISION_LAYER_5</td><td>$0010</td></tr><tr><td>  COLLISION_LAYER_6</td><td>$0020</td></tr><tr><td>  COLLISION_LAYER_7</td><td>$0040</td></tr><tr><td>  COLLISION_LAYER_8</td><td>$0080</td></tr><tr><td>  COLLISION_LAYER_9</td><td>$0100</td></tr><tr><td>  COLLISION_LAYER_10</td><td>$0200</td></tr><tr><td>  COLLISION_LAYER_11</td><td>$0400</td></tr><tr><td>  COLLISION_LAYER_12</td><td>$0800</td></tr><tr><td>  COLLISION_LAYER_13</td><td>$1000</td></tr><tr><td>  COLLISION_LAYER_14</td><td>$2000</td></tr><tr><td>  COLLISION_LAYER_15</td><td>$4000</td></tr><tr><td>  COLLISION_LAYER_16</td><td>$8000</td></tr></table>
 
 
 
 
 
 
@@ -1091,7 +1096,7 @@ The <b>collidemask</b> specifies any layers to test for collision with.
 
 
 The <b>writemask</b> specifies which if any collision layers the <b>image</b> is added to in it's currently transformed state.
 The <b>writemask</b> specifies which if any collision layers the <b>image</b> is added to in it's currently transformed state.
 
 
-The id specifies an object to be returned to future [CollideImage](../../brl/brl.max2d/#function-collideimage-object-image-timage-x-y-frame-collidemask-writemask-id-object-null) calls when collisions occur.
+The id specifies an object to be returned to future [CollideImage](../../brl/brl.max2d/#function-collideimageobjectimagetimagexyframecollidemaskwritemaskidobjectnull) calls when collisions occur.
 
 
 
 
 #### Example
 #### Example
@@ -1158,7 +1163,7 @@ The <b>collidemask</b> specifies any layers to test for collision with.
 
 
 The <b>writemask</b> specifies which if any collision layers the <b>image</b> is added to in it's currently transformed state.
 The <b>writemask</b> specifies which if any collision layers the <b>image</b> is added to in it's currently transformed state.
 
 
-The <b>id</b> specifies an object to be returned to future [CollideImage](../../brl/brl.max2d/#function-collideimage-object-image-timage-x-y-frame-collidemask-writemask-id-object-null) calls when collisions occur.
+The <b>id</b> specifies an object to be returned to future [CollideImage](../../brl/brl.max2d/#function-collideimageobjectimagetimagexyframecollidemaskwritemaskidobjectnull) calls when collisions occur.
 
 
 
 
 <br/>
 <br/>

+ 103 - 0
docs/api/brl/brl_maxunit.md

@@ -0,0 +1,103 @@
+---
+id: brl.maxunit
+title: BRL.MaxUnit
+sidebar_label: BRL.MaxUnit
+---
+
+
+![](assets/logo.png)
+<p>A unit testing Module based loosely on JUnit.</p>
+To define a test :<br/>
+<ol>
+<li> implement a sub-Type of TTest</li>
+<li> initialize the user states by creating a Method tagged with `{before}`</li>
+<li> clean-up after a test by creating a Method tagged with `{after}`.</li>
+</ol>
+Here is an example:
+```blitzmax
+Type MyTest Extends TTest
+
+	Local value1:Int
+	Local value2:Int
+
+	Method setup() { before }
+		value1 = 2
+		value2 = 3
+	End Method
+
+End Type
+```
+For each test implement a <b>Method</b> which interacts with the fixture. You tell MaxUnit that this is a test Method by
+tagging it with {test}. The Method can otherwise be called anything you like. It should take no parameters and not
+return anything.<br/>
+Verify the expected results with assertions specified by calling <b>assertTrue</b> with a boolean.
+```blitzmax
+	Method testAdd() { test }
+		Local result:Int = value1 + value2
+		assertTrue(result = 5)
+	End Method
+```
+Finally, you can run the tests by creating an instance of the TTestSuite and calling its <b>run</b> method.
+```blitzmax
+New TTestSuite.run()
+```
+The following code snippet is a complete example, including a failed test :<br/>
+You can open the source <a href="example.bmx">here</a>.
+```blitzmax
+SuperStrict
+
+Import BRL.MaxUnit
+
+New TTestSuite.run()
+
+Type MyTest Extends TTest
+
+	Field  value1:Int
+	Field value2:Int
+
+	Method setup() { before }
+		value1 = 2
+		value2 = 3
+	End Method
+
+	Method testAdd() { test }
+		Local result:Int = value1 + value2
+		assertTrue(result = 5)
+	End Method
+	
+	Method testMultiply() { test }
+		Local result:Int = value1 * value2
+		assertEqualsI(6, result)
+	End Method
+
+	Method testOops() { test }
+		Local result:Int = value1 + value2
+		assertEqualsI(2, result, "Just here to show a failed test...")
+	End Method
+
+End Type
+```
+The above program should produce the following output :
+```
+[0] ..F
+
+There was 1 failure:
+1) testOops
+    assertEqualsI() : Just here to show a failed test... expected:<2> but was:<5>
+
+
+FAILURES!!!
+Tests run: 3,  Failures: 1,  Errors: 0
+Time: 0.0
+
+Process complete
+```
+
+## Types
+| Type | Description |
+|---|---|
+| [TTest](../../brl/brl.maxunit/ttest) | A test defines a set of test methods to test. |
+| [TTestSuite](../../brl/brl.maxunit/ttestsuite) | A test suite defines the fixture to run multiple tests. |
+| [AssertionFailedException](../../brl/brl.maxunit/assertionfailedexception) | Failed assertion. |
+| [TAssert](../../brl/brl.maxunit/tassert) | A set of assert methods. |
+

+ 14 - 0
docs/api/brl/brl_objectlist.md

@@ -0,0 +1,14 @@
+---
+id: brl.objectlist
+title: BRL.ObjectList
+sidebar_label: BRL.ObjectList
+---
+
+
+## Types
+| Type | Description |
+|---|---|
+| [TObjectList](../../brl/brl.objectlist/tobjectlist) | Array-backed Object List |
+| [TObjectListEnumerator](../../brl/brl.objectlist/tobjectlistenumerator) | Enumerator Object used by [TObjectList](../../brl/brl.objectlist/tobjectlist) in order to implement [Eachin](../../brl/brl.blitz/#eachin) support. |
+| [TObjectListReverseEnumerator](../../brl/brl.objectlist/tobjectlistreverseenumerator) | Enumerator Object used by [TObjectList](../../brl/brl.objectlist/tobjectlist) in order to implement [Eachin](../../brl/brl.blitz/#eachin) support. |
+

+ 1 - 1
docs/api/brl/brl_openalaudio.md

@@ -6,7 +6,7 @@ sidebar_label: BRL.OpenALAudio
 
 
 
 
 
 
-The OpenAL audio module provide OpenAL drivers for use with the audio module.
+The OpenAL audio module provide OpenAL drivers for use with the [audio](../../audio) module.
 
 
 
 
 ## Functions
 ## Functions

+ 17 - 17
docs/api/brl/brl_pixmap.md

@@ -8,24 +8,24 @@ sidebar_label: BRL.Pixmap
 
 
 Pixmaps provide storage for rectangular regions of pixels.
 Pixmaps provide storage for rectangular regions of pixels.
 
 
-You can create a new pixmap using the [CreatePixmap](../../brl/brl.pixmap/#function-createpixmap-tpixmap-width-height-format-align-bytes-4) command, or load a pixmap 
-using [LoadPixmap](../../brl/brl.pixmap/tpixmaploader/#method-loadpixmap-tpixmap-stream-tstream-abstract).
+You can create a new pixmap using the [CreatePixmap](../../brl/brl.pixmap/#function-createpixmaptpixmap-widthheightformatalignbytes4-) command, or load a pixmap 
+using [LoadPixmap](../../brl/brl.pixmap/tpixmaploader/#method-loadpixmaptpixmap-streamtstream-abstract).
 
 
 Pixmaps have 5 properties: width, height, a byte pointer to the pixmap's pixels, pitch and
 Pixmaps have 5 properties: width, height, a byte pointer to the pixmap's pixels, pitch and
 format.
 format.
 
 
-You can retrieve a pointer to a pixmap's pixels using the [PixmapPixelPtr](../../brl/brl.pixmap/#function-pixmappixelptr-byte-ptr-pixmap-tpixmap-x-0-y-0) command.
+You can retrieve a pointer to a pixmap's pixels using the [PixmapPixelPtr](../../brl/brl.pixmap/#function-pixmappixelptrbyte-ptr-pixmaptpixmapx0y0-) command.
 
 
 A pixmap's pitch refers to the number of bytes between one row of pixels in the pixmap
 A pixmap's pitch refers to the number of bytes between one row of pixels in the pixmap
-and the next. To retrieve a pixmap's pitch, use the [PixmapPitch](../../brl/brl.pixmap/#function-pixmappitch-pixmap-tpixmap) command.
+and the next. To retrieve a pixmap's pitch, use the [PixmapPitch](../../brl/brl.pixmap/#function-pixmappitch-pixmaptpixmap-) command.
 
 
 A pixmap's pixel format determines how the pixels within a pixmap are stored in memory. This 
 A pixmap's pixel format determines how the pixels within a pixmap are stored in memory. This 
 must be taken into account if you want to access pixels directly via a pixmap's pixel pointer.
 must be taken into account if you want to access pixels directly via a pixmap's pixel pointer.
-You can retrieve the format of a pixmap using the [PixmapFormat](../../brl/brl.pixmap/#function-pixmapformat-pixmap-tpixmap) command, and convert pixmaps
-from one format to another using [ConvertPixmap](../../brl/brl.pixmap/#function-convertpixmap-tpixmap-pixmap-tpixmap-format).
+You can retrieve the format of a pixmap using the [PixmapFormat](../../brl/brl.pixmap/#function-pixmapformat-pixmaptpixmap-) command, and convert pixmaps
+from one format to another using [ConvertPixmap](../../brl/brl.pixmap/#function-convertpixmaptpixmap-pixmaptpixmapformat-).
 
 
-You can also use [ResizePixmap](../../brl/brl.pixmap/#function-resizepixmap-tpixmap-pixmap-tpixmap-width-height-nodebug) to resize a pixmap and flip a pixmap horizontally or vertically
-with [XFlipPixmap](../../brl/brl.pixmap/#function-xflippixmap-tpixmap-pixmap-tpixmap-nodebug) and [YFlipPixmap](../../brl/brl.pixmap/#function-yflippixmap-tpixmap-pixmap-tpixmap-nodebug).
+You can also use [ResizePixmap](../../brl/brl.pixmap/#function-resizepixmaptpixmap-pixmaptpixmapwidthheight-nodebug) to resize a pixmap and flip a pixmap horizontally or vertically
+with [XFlipPixmap](../../brl/brl.pixmap/#function-xflippixmaptpixmap-pixmaptpixmap-nodebug) and [YFlipPixmap](../../brl/brl.pixmap/#function-yflippixmaptpixmap-pixmaptpixmap-nodebug).
 
 
 
 
 ## Types
 ## Types
@@ -43,10 +43,10 @@ Create a pixmap
 
 
 <b>format</b> should be one of the following:
 <b>format</b> should be one of the following:
 
 
-<table><tr><td> <b>Format</b></td><td><b>Description</b></td></tr><tr><td>  PF_A8</td><td>8 bit alpha</td></tr><tr><td>  PF_I8</td><td>8 bit intensity</td></tr><tr><td>  PF_RGB888</td><td>24 bit big endian RGB</td></tr><tr><td>  PF_BGR888</td><td>24 bit little endian RGB</td></tr><tr><td>  PF_RGBA8888</td><td>32 bit big endian RGB with alpha</td></tr><tr><td>  PF_BGRA8888</td><td>32 bit little endian RGB with alpha</table>
+<table><tr><td> <b>Format</b></td><td><b>Description</b></td></tr><tr><td>  PF_A8</td><td>8 bit alpha</td></tr><tr><td>  PF_I8</td><td>8 bit intensity</td></tr><tr><td>  PF_RGB888</td><td>24 bit big endian RGB</td></tr><tr><td>  PF_BGR888</td><td>24 bit little endian RGB</td></tr><tr><td>  PF_RGBA8888</td><td>32 bit big endian RGB with alpha</td></tr><tr><td>  PF_BGRA8888</td><td>32 bit little endian RGB with alpha</td></tr></table>
 
 
 
 
-Note that the newly created pixmap will contain random data. [ClearPixels](../../brl/brl.pixmap/tpixmap/#method-clearpixels-argb) can
+Note that the newly created pixmap will contain random data. [ClearPixels](../../brl/brl.pixmap/tpixmap/#method-clearpixels-argb-) can
 be used to set all pixels to a known value prior to use.
 be used to set all pixels to a known value prior to use.
 
 
 
 
@@ -63,7 +63,7 @@ Create a pixmap with existing pixel data
 
 
 The memory referenced by a static pixmap is not released when the pixmap is deleted.
 The memory referenced by a static pixmap is not released when the pixmap is deleted.
 
 
-See [CreatePixmap](../../brl/brl.pixmap/#function-createpixmap-tpixmap-width-height-format-align-bytes-4) for valid pixmap formats.
+See [CreatePixmap](../../brl/brl.pixmap/#function-createpixmaptpixmap-widthheightformatalignbytes4-) for valid pixmap formats.
 
 
 
 
 #### Returns
 #### Returns
@@ -108,7 +108,7 @@ Until KeyHit(key_escape) Or AppTerminate()
 Convert pixel format of a pixmap
 Convert pixel format of a pixmap
 
 
 
 
-See [CreatePixmap](../../brl/brl.pixmap/#function-createpixmap-tpixmap-width-height-format-align-bytes-4) for valid pixmap formats.
+See [CreatePixmap](../../brl/brl.pixmap/#function-createpixmaptpixmap-widthheightformatalignbytes4-) for valid pixmap formats.
 
 
 
 
 #### Returns
 #### Returns
@@ -198,7 +198,7 @@ The pitch, in bytes, of <b>pixmap</b>
 Get pixmap format
 Get pixmap format
 
 
 
 
-See [CreatePixmap](../../brl/brl.pixmap/#function-createpixmap-tpixmap-width-height-format-align-bytes-4) for supported formats.
+See [CreatePixmap](../../brl/brl.pixmap/#function-createpixmaptpixmap-widthheightformatalignbytes4-) for supported formats.
 
 
 
 
 #### Returns
 #### Returns
@@ -221,7 +221,7 @@ A byte pointer to the pixels stored in <b>pixmap</b>
 
 
 Create a pixmap window
 Create a pixmap window
 
 
-[PixmapWindow](../../brl/brl.pixmap/#function-pixmapwindow-tpixmap-pixmap-tpixmap-x-y-width-height) creates a 'virtual' window into <b>pixmap</b>.
+[PixmapWindow](../../brl/brl.pixmap/#function-pixmapwindowtpixmap-pixmaptpixmapxywidthheight-) creates a 'virtual' window into <b>pixmap</b>.
 
 
 
 
 #### Returns
 #### Returns
@@ -407,7 +407,7 @@ Read a pixel from a pixmap
 
 
 The returned 32 bit value contains the following components:
 The returned 32 bit value contains the following components:
 
 
-<table><tr><td> bits 24-31</td><td>pixel alpha</td></tr><tr><td>  bits 16-23</td><td>pixel red</td></tr><tr><td>  bits 8-15</td><td>pixel green</td></tr><tr><td>  bits 0-7</td><td>pixel blue</table>
+<table><tr><td> bits 24-31</td><td>pixel alpha</td></tr><tr><td>  bits 16-23</td><td>pixel red</td></tr><tr><td>  bits 8-15</td><td>pixel green</td></tr><tr><td>  bits 0-7</td><td>pixel blue</td></tr></table>
 
 
 
 
 
 
@@ -424,7 +424,7 @@ Write a pixel to a pixmap
 
 
 The 32 bit <b>argb</b> value contains the following components:
 The 32 bit <b>argb</b> value contains the following components:
 
 
-<table><tr><td> bits 24-31</td><td>pixel alpha</td></tr><tr><td>  bits 16-23</td><td>pixel red</td></tr><tr><td>  bits 8-15</td><td>pixel green</td></tr><tr><td>  bits 0-7</td><td>pixel blue</table>
+<table><tr><td> bits 24-31</td><td>pixel alpha</td></tr><tr><td>  bits 16-23</td><td>pixel red</td></tr><tr><td>  bits 8-15</td><td>pixel green</td></tr><tr><td>  bits 0-7</td><td>pixel blue</td></tr></table>
 
 
 
 
 
 
@@ -439,7 +439,7 @@ Sets all pixels in a pixmap to a 32 bit pixel value.
 
 
 The 32 bit <b>argb</b> value contains the following components:
 The 32 bit <b>argb</b> value contains the following components:
 
 
-<table><tr><td> bits 24-31</td><td>pixel alpha</td></tr><tr><td>  bits 16-23</td><td>pixel red</td></tr><tr><td>  bits 8-15</td><td>pixel green</td></tr><tr><td>  bits 0-7</td><td>pixel blue</table>
+<table><tr><td> bits 24-31</td><td>pixel alpha</td></tr><tr><td>  bits 16-23</td><td>pixel red</td></tr><tr><td>  bits 8-15</td><td>pixel green</td></tr><tr><td>  bits 0-7</td><td>pixel blue</td></tr></table>
 
 
 
 
 
 

+ 2 - 2
docs/api/brl/brl_pngloader.md

@@ -16,7 +16,7 @@ The PNG loader module provides the ability to load PNG format pixmaps.
 Load a Pixmap in PNG format
 Load a Pixmap in PNG format
 
 
 
 
-[LoadPixmapPNG](../../brl/brl.pngloader/#function-loadpixmappng-tpixmap-url-object) loads a pixmap from <b>url</b> in PNG format.
+[LoadPixmapPNG](../../brl/brl.pngloader/#function-loadpixmappngtpixmap-urlobject-) loads a pixmap from <b>url</b> in PNG format.
 
 
 If the pixmap cannot be loaded, Null is returned.
 If the pixmap cannot be loaded, Null is returned.
 
 
@@ -28,7 +28,7 @@ If the pixmap cannot be loaded, Null is returned.
 Save a Pixmap in PNG format
 Save a Pixmap in PNG format
 
 
 
 
-[SavePixmapPNG](../../brl/brl.pngloader/#function-savepixmappng-pixmap-tpixmap-url-object-compression-5) saves <b>pixmap</b> to <b>url</b> in PNG format. If successful, [SavePixmapPNG](../../brl/brl.pngloader/#function-savepixmappng-pixmap-tpixmap-url-object-compression-5) returns
+[SavePixmapPNG](../../brl/brl.pngloader/#function-savepixmappng-pixmaptpixmapurlobjectcompression5-) saves <b>pixmap</b> to <b>url</b> in PNG format. If successful, [SavePixmapPNG](../../brl/brl.pngloader/#function-savepixmappng-pixmaptpixmapurlobjectcompression5-) returns
 True, otherwise False.
 True, otherwise False.
 
 
 The optional <b>compression</b> parameter should be in the range 0 to 9, where
 The optional <b>compression</b> parameter should be in the range 0 to 9, where

+ 6 - 8
docs/api/brl/brl_polledinput.md

@@ -5,11 +5,9 @@ sidebar_label: BRL.PolledInput
 ---
 ---
 
 
 
 
-<h1>Polled input</h1>
-
 The polled input module provides an easy way to detect keyboard and mouse input.
 The polled input module provides an easy way to detect keyboard and mouse input.
 
 
-The functions in this module are only available when your program is running in [Graphics](../../brl/brl.graphics/#function-graphics-tgraphics-width-height-depth-0-hertz-60-flags-0) mode. When working on GUI applications, you should use events instead.
+The functions in this module are only available when your program is running in [Graphics](../../brl/brl.graphics/#function-graphicstgraphics-widthheightdepth0hertz60flags0x1y1-) mode. When working on GUI applications, you should use events instead.
 
 
 
 
 ## Functions
 ## Functions
@@ -71,7 +69,7 @@ Check for key hit
 
 
 
 
 The returned value represents the number of the times <b>key</b> has been hit since the last
 The returned value represents the number of the times <b>key</b> has been hit since the last
-call to [KeyHit](../../brl/brl.polledinput/#function-keyhit-key) with the same <b>key</b>.
+call to [KeyHit](../../brl/brl.polledinput/#function-keyhit-key-) with the same <b>key</b>.
 
 
 See the key codes module for a list of valid key codes.
 See the key codes module for a list of valid key codes.
 
 
@@ -156,7 +154,7 @@ The character code of the next character.
 Flush key states and character queue.
 Flush key states and character queue.
 
 
 
 
-[FlushKeys](../../brl/brl.polledinput/#function-flushkeysresetstates-int-true) resets the state of all keys to 'off', and resets the character queue
+[FlushKeys](../../brl/brl.polledinput/#function-flushkeysresetstatesint-true) resets the state of all keys to 'off', and resets the character queue
 used by [GetChar](../../brl/brl.polledinput/#function-getchar).
 used by [GetChar](../../brl/brl.polledinput/#function-getchar).
 
 
 
 
@@ -296,10 +294,10 @@ Check for mouse button click
 
 
 
 
 The returned value represents the number of the times <b>button</b> has been clicked since the
 The returned value represents the number of the times <b>button</b> has been clicked since the
-last call to [MouseHit](../../brl/brl.polledinput/#function-mousehit-button) with the same <b>button</b>.
+last call to [MouseHit](../../brl/brl.polledinput/#function-mousehit-button-) with the same <b>button</b>.
 
 
 <b>button</b> should be 1 for the left mouse button, 2 for the right mouse button or 3 for the
 <b>button</b> should be 1 for the left mouse button, 2 for the right mouse button or 3 for the
-middle mouse button.
+middle mouse button. Two further buttons, 4 and 5, are also available for mice that support them.
 
 
 
 
 #### Returns
 #### Returns
@@ -330,7 +328,7 @@ Check for mouse button down state
 
 
 
 
 <b>button</b> should be 1 for the left mouse button, 2 for the right mouse button or 3 for the
 <b>button</b> should be 1 for the left mouse button, 2 for the right mouse button or 3 for the
-middle mouse button.
+middle mouse button. Two further buttons, 4 and 5, are also available for mice that support them.
 
 
 
 
 #### Returns
 #### Returns

+ 1 - 1
docs/api/brl/brl_ramstream.md

@@ -7,7 +7,7 @@ sidebar_label: BRL.RamStream
 
 
 ## Functions
 ## Functions
 
 
-### `Function CreateRamStream:TRamStream( ram:Byte Ptr,size:Long,readable,writeable )`
+### `Function CreateRamStream:TRamStream( ram:Byte Ptr,size:Long,readable,writeMode )`
 
 
 Create a ram stream
 Create a ram stream
 
 

+ 6 - 9
docs/api/brl/brl_random.md

@@ -5,19 +5,16 @@ sidebar_label: BRL.Random
 ---
 ---
 
 
 
 
-<h1>Random numbers</h1>
-
 The random module contains commands for generating random numbers.
 The random module contains commands for generating random numbers.
 
 
 The numbers generated are not really random, as without special hardware support a software algorithm cannot produce 'real' random numbers.
 The numbers generated are not really random, as without special hardware support a software algorithm cannot produce 'real' random numbers.
 
 
 Instead, the algorithm produces values that merely appear to be random. In reality, each generated value actually depends on the previously generated value.
 Instead, the algorithm produces values that merely appear to be random. In reality, each generated value actually depends on the previously generated value.
 
 
-You can set the 'state' of the random number generator using the [SeedRnd](../../brl/brl.random/trandom/#method-seedrndseed-int) command. A common practice is to seed the random number generator with the system time when your program starts up, for example:
-```
+You can set the 'state' of the random number generator using the [SeedRnd](../../brl/brl.random/trandom/#method-seedrndseedint) command. A common practice is to seed the random number generator with the system time when your program starts up, for example:
+```blitzmax
 SeedRnd MilliSecs()
 SeedRnd MilliSecs()
-````
-
+```
 This ensures that the random number generator does not start in the same state each time your program is run, which would cause it to produce the same sequence of random numbers.
 This ensures that the random number generator does not start in the same state each time your program is run, which would cause it to produce the same sequence of random numbers.
 
 
 
 
@@ -111,7 +108,7 @@ Generate random double
 
 
 The optional parameters allow you to use Rnd in 3 ways:
 The optional parameters allow you to use Rnd in 3 ways:
 
 
-<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rnd()</td><td>Random double in the range 0 (inclusive) to 1 (exclusive)</td></tr><tr><td>  &Rnd(_x_)</td><td>Random double in the range 0 (inclusive) to n (exclusive)</td></tr><tr><td>  &Rnd(_x,y_)</td><td>Random double in the range x (inclusive) to y (exclusive)</table>
+<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rnd()</td><td>Random double in the range 0 (inclusive) to 1 (exclusive)</td></tr><tr><td>  &Rnd(_x_)</td><td>Random double in the range 0 (inclusive) to n (exclusive)</td></tr><tr><td>  &Rnd(_x,y_)</td><td>Random double in the range x (inclusive) to y (exclusive)</td></tr></table>
 
 
 
 
 
 
@@ -149,9 +146,9 @@ Print "    Exact area = " + Pi     '  4 * Pi/4, compare with estimate
 Generate random integer
 Generate random integer
 
 
 
 
-The optional parameter allows you to use [Rand](../../brl/brl.random/trandom/#method-rand-intminvalue-int-maxvalue-int-1) in 2 ways:
+The optional parameter allows you to use [Rand](../../brl/brl.random/trandom/#method-randintminvalueint-maxvalueint-1) in 2 ways:
 
 
-<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rand(x)</td><td>Random integer in the range 1 to x (inclusive)</td></tr><tr><td>  &Rand(x,y)</td><td>Random integer in the range x to y (inclusive)</table>
+<table><tr><td> <b>Format</b></td><td><b>Result</b></td></tr><tr><td>  &Rand(x)</td><td>Random integer in the range 1 to x (inclusive)</td></tr><tr><td>  &Rand(x,y)</td><td>Random integer in the range x to y (inclusive)</td></tr></table>
 
 
 
 
 
 

+ 0 - 2
docs/api/brl/brl_reflection.md

@@ -5,8 +5,6 @@ sidebar_label: BRL.Reflection
 ---
 ---
 
 
 
 
-<h1>Reflection</h1>
-
 BlitzMax provides limited support for a form of runtime <i>reflection</i>.
 BlitzMax provides limited support for a form of runtime <i>reflection</i>.
 
 
 Using reflection, programs can 'inspect' objects and types at runtime. You can determine the fields and methods contained in an object or type, set and get object fields and invoke - or 'call' - object methods.
 Using reflection, programs can 'inspect' objects and types at runtime. You can determine the fields and methods contained in an object or type, set and get object fields and invoke - or 'call' - object methods.

+ 4 - 4
docs/api/brl/brl_retro.md

@@ -17,8 +17,8 @@ the transition to BlitzMax a little easier.
 
 
 NOTE: Strings in classic BASIC are '1 based'. This means that the first character within a 
 NOTE: Strings in classic BASIC are '1 based'. This means that the first character within a 
 string is at index 1, the second at index 2 and so on. However, BlitzMax strings are '0 based',
 string is at index 1, the second at index 2 and so on. However, BlitzMax strings are '0 based',
-meaning the first character is at index 0, the second at index 1 and so on. The [instr](../../brl/brl.retro/#function-instr-str-sub-start-1) and
-[Mid](../../brl/brl.retro/#function-mid-str-pos-size-1) functions in this module retain the '1 based' behaviour of classic BASIC.
+meaning the first character is at index 0, the second at index 1 and so on. The [instr](../../brl/brl.retro/#function-instr-strsubstart1-) and
+[Mid](../../brl/brl.retro/#function-mid-strpossize1-) functions in this module retain the '1 based' behaviour of classic BASIC.
 
 
 
 
 ## Functions
 ## Functions
@@ -31,8 +31,8 @@ Extract substring from a string
 The Mid$ command returns a substring of a String.
 The Mid$ command returns a substring of a String.
 
 
 Given an existing string, a <b>position</b> from the start of the string and
 Given an existing string, a <b>position</b> from the start of the string and
-an optional <b>size</b>, [Mid](../../brl/brl.retro/#function-mid-str-pos-size-1) creates a new string equal to the section specified.
-If no size if given, [Mid](../../brl/brl.retro/#function-mid-str-pos-size-1) returns the characters in the existing string from
+an optional <b>size</b>, [Mid](../../brl/brl.retro/#function-mid-strpossize1-) creates a new string equal to the section specified.
+If no size if given, [Mid](../../brl/brl.retro/#function-mid-strpossize1-) returns the characters in the existing string from
 <b>position</b> to the end of the string.
 <b>position</b> to the end of the string.
 
 
 For compatibility with classic BASIC, the <b>pos</b> parameter is 'one based'.
 For compatibility with classic BASIC, the <b>pos</b> parameter is 'one based'.

+ 6 - 6
docs/api/brl/brl_socket.md

@@ -52,7 +52,7 @@ Bind a socket to a local port
 
 
 
 
 If <b>localPort</b> is 0, a new local port will be allocated. If <b>localPort</b> is not 0,
 If <b>localPort</b> is 0, a new local port will be allocated. If <b>localPort</b> is not 0,
-[BindSocket](../../brl/brl.socket/#function-bindsocket-socket-tsocket-localport-family-int-af-inet) will fail if there is already an application bound to <b>localPort</b>.
+[BindSocket](../../brl/brl.socket/#function-bindsocket-sockettsocket-localport-familyint-afinet) will fail if there is already an application bound to <b>localPort</b>.
 
 
 
 
 #### Returns
 #### Returns
@@ -66,10 +66,10 @@ True if successful, otherwise false
 Connect a socket to a remote ip and port
 Connect a socket to a remote ip and port
 
 
 
 
-For both UDP and TCP sockets, [ConnectSocket](../../brl/brl.socket/#function-connectsocket-socket-tsocket-addrinfo-taddrinfo) will fail if the specified
+For both UDP and TCP sockets, [ConnectSocket](../../brl/brl.socket/#function-connectsocket-sockettsocket-addrinfotaddrinfo-) will fail if the specified
 ip address could not be reached.
 ip address could not be reached.
 
 
-In the case of TCP sockets, [ConnectSocket](../../brl/brl.socket/#function-connectsocket-socket-tsocket-addrinfo-taddrinfo) will also fail if there is
+In the case of TCP sockets, [ConnectSocket](../../brl/brl.socket/#function-connectsocket-sockettsocket-addrinfotaddrinfo-) will also fail if there is
 no application listening at the remote port.
 no application listening at the remote port.
 
 
 
 
@@ -108,11 +108,11 @@ A new socket, or Null if no connection was made in the specified timeout
 Get socket connection status
 Get socket connection status
 
 
 
 
-[SocketConnected](../../brl/brl.socket/#function-socketconnected-socket-tsocket) allows you to determine if a TCP connection is still
+[SocketConnected](../../brl/brl.socket/#function-socketconnected-sockettsocket-) allows you to determine if a TCP connection is still
 alive or has been remotely closed.
 alive or has been remotely closed.
 
 
-[SocketConnected](../../brl/brl.socket/#function-socketconnected-socket-tsocket) should only be used with TCP sockets that have already
-connected via [ConnectSocket](../../brl/brl.socket/#function-connectsocket-socket-tsocket-addrinfo-taddrinfo) or [SocketAccept](../../brl/brl.socket/#function-socketaccept-tsocket-socket-tsocket-timeout-0).
+[SocketConnected](../../brl/brl.socket/#function-socketconnected-sockettsocket-) should only be used with TCP sockets that have already
+connected via [ConnectSocket](../../brl/brl.socket/#function-connectsocket-sockettsocket-addrinfotaddrinfo-) or [SocketAccept](../../brl/brl.socket/#function-socketaccepttsocket-sockettsockettimeout0-).
 
 
 
 
 #### Returns
 #### Returns

+ 4 - 4
docs/api/brl/brl_standardio.md

@@ -5,8 +5,8 @@ sidebar_label: BRL.StandardIO
 ---
 ---
 
 
 
 
-The BlitzMax StandardIO module contains commands for reading and writing text to the standard IO (Input/Output) stream.<br>
-<br>
+The BlitzMax StandardIO module contains commands for reading and writing text to the standard IO (Input/Output) stream.<br/>
+<br/>
 The standard IO stream is generally connected to a 'console', allowing you to interact with an application in a very simple way.
 The standard IO stream is generally connected to a 'console', allowing you to interact with an application in a very simple way.
 
 
 
 
@@ -53,11 +53,11 @@ Print "Hello "+name
 
 
 ## Globals
 ## Globals
 
 
-### `Global StandardIOStream:TStream=TTextStream.Create( New TCStandardIO,TTextStream.UTF8 )`
+### `Global StandardIOStream:TStream=TTextStream.Create( New TCStandardIO,ETextStreamFormat.UTF8 )`
 
 
 BlitzMax Stream object used for Print and Input
 BlitzMax Stream object used for Print and Input
 
 
-The [Print](../../brl/brl.standardio/#function-print-str) and [Input](../../brl/brl.standardio/#function-input-prompt) commands can be redirected by setting the <b>StandardIOStream</b> Global to an alternative Stream Object.
+The [Print](../../brl/brl.standardio/#function-print-str-) and [Input](../../brl/brl.standardio/#function-input-prompt-) commands can be redirected by setting the <b>StandardIOStream</b> Global to an alternative Stream Object.
 
 
 
 
 <br/>
 <br/>

+ 60 - 29
docs/api/brl/brl_stream.md

@@ -12,11 +12,11 @@ BlitzMax supports many kinds of streams, including standard file streams
 (for reading and writing to files), bank streams (for reading and writing to banks) and 
 (for reading and writing to files), bank streams (for reading and writing to banks) and 
 endian streams (for swapping the byte order of stream data).
 endian streams (for swapping the byte order of stream data).
 
 
-Streams are usually created using [OpenStream](../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true), [ReadStream](../../brl/brl.stream/#function-readstream-tstream-url-object) or [WriteStream](../../brl/brl.stream/#function-writestream-tstream-url-object). However,
+Streams are usually created using [OpenStream](../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../brl/brl.stream/#function-readstreamtstream-urlobject-) or [WriteStream](../../brl/brl.stream/#function-writestreamtstream-urlobject-). However,
 some kinds of streams provide their own methods for creating streams. For example, banks
 some kinds of streams provide their own methods for creating streams. For example, banks
-streams are created with the [CreateBankStream](../../brl/brl.bankstream/#function-createbankstream-tbankstream-bank-tbank) command.
+streams are created with the [CreateBankStream](../../brl/brl.bankstream/#function-createbankstreamtbankstream-banktbank-) command.
 
 
-[OpenStream](../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true), [ReadStream](../../brl/brl.stream/#function-readstream-tstream-url-object) and [WriteStream](../../brl/brl.stream/#function-writestream-tstream-url-object) all require a <i>url</i> parameter, which is used to
+[OpenStream](../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../brl/brl.stream/#function-readstreamtstream-urlobject-) and [WriteStream](../../brl/brl.stream/#function-writestreamtstream-urlobject-) all require a <i>url</i> parameter, which is used to
 'locate' the stream. A url is usually a string value.
 'locate' the stream. A url is usually a string value.
 
 
 If the url contains the string "::", then a stream <i>protocol</i> is being specified. If not,
 If the url contains the string "::", then a stream <i>protocol</i> is being specified. If not,
@@ -29,16 +29,16 @@ from a binary file that has been embedded in an application using the [Incbin](.
 Other protocols include "http::" for reading and writing data over a network, and 
 Other protocols include "http::" for reading and writing data over a network, and 
 "littleendian::" and "bigendian::" for swapping the byte order of streams.
 "littleendian::" and "bigendian::" for swapping the byte order of streams.
 
 
-To write to a stream, use one of the 'Write' style commands, such as [WriteByte](../../brl/brl.stream/tstream/#method-writebyte-n-int).
+To write to a stream, use one of the 'Write' style commands, such as [WriteByte](../../brl/brl.stream/tstream/#method-writebyte-nint-).
 
 
-To read from a stream, use one of the 'Read' style commands, such as [ReadByte](../../brl/brl.stream/tstream/#method-readbyte-int).
+To read from a stream, use one of the 'Read' style commands, such as [ReadByte](../../brl/brl.stream/tstream/#method-readbyteint).
 
 
 Some kinds of streams (for example, file streams and bank streams) support <i>random access</i>.
 Some kinds of streams (for example, file streams and bank streams) support <i>random access</i>.
 This means that you can modify where in the stream the next read or write is to occur using
 This means that you can modify where in the stream the next read or write is to occur using
-the [SeekStream](../../brl/brl.stream/#function-seekstream-long-stream-tstream-pos-long-whence-int-seek-set) command. You can also tell where you are in such streams using the 
-[StreamPos](../../brl/brl.stream/#function-streampos-long-stream-tstream) command.
+the [SeekStream](../../brl/brl.stream/#function-seekstreamlong-streamtstream-poslong-whenceint-seekset-) command. You can also tell where you are in such streams using the 
+[StreamPos](../../brl/brl.stream/#function-streamposlong-streamtstream-) command.
 
 
-When you are finished with a stream, you should always close it using [CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream).
+When you are finished with a stream, you should always close it using [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-).
 Failure to do so may result in a resource leak, or prevent the stream from successfully
 Failure to do so may result in a resource leak, or prevent the stream from successfully
 opening in future.
 opening in future.
 
 
@@ -57,12 +57,12 @@ opening in future.
 
 
 ## Functions
 ## Functions
 
 
-### `Function OpenStream:TStream( url:Object,readable:Int=True,writeable:Int=True )`
+### `Function OpenStream:TStream( url:Object,readable:Int=True,writeMode:Int=WRITE_MODE_OVERWRITE )`
 
 
-Open a stream for reading/writing
+Open a stream for reading/writing/appending
 
 
-All streams created by [OpenStream](../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true), [ReadStream](../../brl/brl.stream/#function-readstream-tstream-url-object) or [WriteStream](../../brl/brl.stream/#function-writestream-tstream-url-object) should eventually be
-closed using [CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream).
+All streams created by [OpenStream](../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../brl/brl.stream/#function-readstreamtstream-urlobject-), [WriteStream](../../brl/brl.stream/#function-writestreamtstream-urlobject-) or [AppendStream](../../brl/brl.stream/#function-appendstreamtstream-urlobject-) should eventually be
+closed using [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-).
 
 
 
 
 #### Returns
 #### Returns
@@ -75,8 +75,8 @@ A stream object
 
 
 Open a stream for reading
 Open a stream for reading
 
 
-All streams created by [OpenStream](../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true), [ReadStream](../../brl/brl.stream/#function-readstream-tstream-url-object) or [WriteStream](../../brl/brl.stream/#function-writestream-tstream-url-object) should eventually
-be closed using [CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream).
+All streams created by [OpenStream](../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../brl/brl.stream/#function-readstreamtstream-urlobject-) or [WriteStream](../../brl/brl.stream/#function-writestreamtstream-urlobject-) should eventually
+be closed using [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-).
 
 
 
 
 #### Returns
 #### Returns
@@ -107,8 +107,8 @@ CloseStream in
 
 
 Open a stream for writing
 Open a stream for writing
 
 
-All streams created by [OpenStream](../../brl/brl.stream/#function-openstream-tstream-url-object-readable-int-true-writeable-int-true), [ReadStream](../../brl/brl.stream/#function-readstream-tstream-url-object) or [WriteStream](../../brl/brl.stream/#function-writestream-tstream-url-object) should eventually
-be closed using [CloseStream](../../brl/brl.stream/#function-closestream-stream-tstream).
+All streams created by [OpenStream](../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../brl/brl.stream/#function-readstreamtstream-urlobject-), [WriteStream](../../brl/brl.stream/#function-writestreamtstream-urlobject-) or [AppendStream](../../brl/brl.stream/#function-appendstreamtstream-urlobject-) should eventually
+be closed using [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-).
 
 
 
 
 #### Returns
 #### Returns
@@ -144,6 +144,20 @@ Print "File mygame.ini created, bytes="+FileSize("mygame.ini")
 ```
 ```
 <br/>
 <br/>
 
 
+### `Function AppendStream:TStream( url:Object )`
+
+Open a stream for appending
+
+All streams created by [OpenStream](../../brl/brl.stream/#function-openstreamtstream-urlobjectreadableinttruewritemodeintwritemodeoverwrite-), [ReadStream](../../brl/brl.stream/#function-readstreamtstream-urlobject-), [WriteStream](../../brl/brl.stream/#function-writestreamtstream-urlobject-) or [AppendStream](../../brl/brl.stream/#function-appendstreamtstream-urlobject-) should eventually
+be closed using [CloseStream](../../brl/brl.stream/#function-closestream-streamtstream-).
+
+
+#### Returns
+A stream object
+
+
+<br/>
+
 ### `Function Eof:Int( stream:TStream )`
 ### `Function Eof:Int( stream:TStream )`
 
 
 Get stream end of file status
 Get stream end of file status
@@ -188,7 +202,7 @@ New stream position, or -1 If stream is not seekable
 
 
 Flush a stream
 Flush a stream
 
 
-[FlushStream](../../brl/brl.stream/#function-flushstream-stream-tstream) writes any outstanding buffered data to <b>stream</b>.
+[FlushStream](../../brl/brl.stream/#function-flushstream-streamtstream-) writes any outstanding buffered data to <b>stream</b>.
 
 
 
 
 <br/>
 <br/>
@@ -208,7 +222,7 @@ Closing a stream also flushes the stream before it closes.
 
 
 Read a Byte from a stream
 Read a Byte from a stream
 
 
-[ReadByte](../../brl/brl.stream/tstream/#method-readbyte-int) reads a single Byte from <b>stream</b>.
+[ReadByte](../../brl/brl.stream/tstream/#method-readbyteint) reads a single Byte from <b>stream</b>.
 A TStreamReadException is thrown If there is not enough data available.
 A TStreamReadException is thrown If there is not enough data available.
 
 
 
 
@@ -222,7 +236,7 @@ A Byte value
 
 
 Read a Short from a stream
 Read a Short from a stream
 
 
-[ReadShort](../../brl/brl.stream/tstream/#method-readshort-int) reads 2 bytes from <b>stream</b>.
+[ReadShort](../../brl/brl.stream/tstream/#method-readshortint) reads 2 bytes from <b>stream</b>.
 A TStreamReadException is thrown If there is not enough data available.
 A TStreamReadException is thrown If there is not enough data available.
 
 
 
 
@@ -236,7 +250,7 @@ A Short value
 
 
 Read an Int from a stream
 Read an Int from a stream
 
 
-[ReadInt](../../brl/brl.stream/tstream/#method-readint-int) reads 4 bytes from <b>stream</b>.
+[ReadInt](../../brl/brl.stream/tstream/#method-readintint) reads 4 bytes from <b>stream</b>.
 A TStreamReadException is thrown If there is not enough data available.
 A TStreamReadException is thrown If there is not enough data available.
 
 
 
 
@@ -250,7 +264,7 @@ An Int value
 
 
 Read a Long from a stream
 Read a Long from a stream
 
 
-[ReadLong](../../brl/brl.stream/tstream/#method-readlong-long) reads 8 bytes from <b>stream</b>.
+[ReadLong](../../brl/brl.stream/tstream/#method-readlonglong) reads 8 bytes from <b>stream</b>.
 A TStreamReadException is thrown If there is not enough data available.
 A TStreamReadException is thrown If there is not enough data available.
 
 
 
 
@@ -292,7 +306,7 @@ A Double value
 
 
 Write a Byte to a stream
 Write a Byte to a stream
 
 
-[WriteByte](../../brl/brl.stream/tstream/#method-writebyte-n-int) writes a single Byte to <b>stream</b>.
+[WriteByte](../../brl/brl.stream/tstream/#method-writebyte-nint-) writes a single Byte to <b>stream</b>.
 A TStreamWriteException is thrown If the Byte could Not be written
 A TStreamWriteException is thrown If the Byte could Not be written
 
 
 
 
@@ -302,7 +316,7 @@ A TStreamWriteException is thrown If the Byte could Not be written
 
 
 Write a Short to a stream
 Write a Short to a stream
 
 
-[WriteShort](../../brl/brl.stream/tstream/#method-writeshort-n-int) writes 2 bytes to <b>stream</b>.
+[WriteShort](../../brl/brl.stream/tstream/#method-writeshort-nint-) writes 2 bytes to <b>stream</b>.
 A TStreamWriteException is thrown if not all bytes could be written
 A TStreamWriteException is thrown if not all bytes could be written
 
 
 
 
@@ -312,7 +326,7 @@ A TStreamWriteException is thrown if not all bytes could be written
 
 
 Write an Int to a stream
 Write an Int to a stream
 
 
-[WriteInt](../../brl/brl.stream/tstream/#method-writeint-n-int) writes 4 bytes to <b>stream</b>.
+[WriteInt](../../brl/brl.stream/tstream/#method-writeint-nint-) writes 4 bytes to <b>stream</b>.
 A TStreamWriteException is thrown if not all bytes could be written
 A TStreamWriteException is thrown if not all bytes could be written
 
 
 
 
@@ -322,7 +336,7 @@ A TStreamWriteException is thrown if not all bytes could be written
 
 
 Write a Long to a stream
 Write a Long to a stream
 
 
-[WriteLong](../../brl/brl.stream/tstream/#method-writelong-n-long) writes 8 bytes to <b>stream</b>.
+[WriteLong](../../brl/brl.stream/tstream/#method-writelong-nlong-) writes 8 bytes to <b>stream</b>.
 A TStreamWriteException is thrown if not all bytes could be written
 A TStreamWriteException is thrown if not all bytes could be written
 
 
 
 
@@ -332,7 +346,7 @@ A TStreamWriteException is thrown if not all bytes could be written
 
 
 Write a Float to a stream
 Write a Float to a stream
 
 
-[WriteFloat](../../brl/brl.stream/tstream/#method-writefloat-n) writes 4 bytes to <b>stream</b>.
+[WriteFloat](../../brl/brl.stream/tstream/#method-writefloat-n-) writes 4 bytes to <b>stream</b>.
 A TStreamWriteException is thrown if not all bytes could be written
 A TStreamWriteException is thrown if not all bytes could be written
 
 
 
 
@@ -342,7 +356,7 @@ A TStreamWriteException is thrown if not all bytes could be written
 
 
 Write a Double to a stream
 Write a Double to a stream
 
 
-[WriteDouble](../../brl/brl.stream/tstream/#method-writedouble-n) writes 8 bytes to <b>stream</b>.
+[WriteDouble](../../brl/brl.stream/tstream/#method-writedouble-n-) writes 8 bytes to <b>stream</b>.
 A TStreamWriteException is thrown if not all bytes could be written
 A TStreamWriteException is thrown if not all bytes could be written
 
 
 
 
@@ -472,7 +486,7 @@ A [TStreamWriteException](../../brl/brl.stream/tstreamwriteexception) is thrown
 Copy stream contents to another stream
 Copy stream contents to another stream
 
 
 
 
-[CopyStream](../../brl/brl.stream/#function-copystream-fromstream-tstream-tostream-tstream-bufsize-int-4096) copies bytes from <b>fromStream</b> to <b>toStream</b> Until <b>fromStream</b> reaches end
+[CopyStream](../../brl/brl.stream/#function-copystream-fromstreamtstreamtostreamtstreambufsizeint4096-) copies bytes from <b>fromStream</b> to <b>toStream</b> Until <b>fromStream</b> reaches end
 of file.
 of file.
 
 
 A [TStreamWriteException](../../brl/brl.stream/tstreamwriteexception) is thrown if not all bytes could be written.
 A [TStreamWriteException](../../brl/brl.stream/tstreamwriteexception) is thrown if not all bytes could be written.
@@ -485,7 +499,7 @@ A [TStreamWriteException](../../brl/brl.stream/tstreamwriteexception) is thrown
 Copy bytes from one stream to another
 Copy bytes from one stream to another
 
 
 
 
-[CopyBytes](../../brl/brl.stream/#function-copybytes-fromstream-tstream-tostream-tstream-count-int-bufsize-int-4096) copies <b>count</b> bytes from <b>fromStream</b> to <b>toStream</b>.
+[CopyBytes](../../brl/brl.stream/#function-copybytes-fromstreamtstreamtostreamtstreamcountintbufsizeint4096-) copies <b>count</b> bytes from <b>fromStream</b> to <b>toStream</b>.
 
 
 A [TStreamReadException](../../brl/brl.stream/tstreamreadexception) is thrown if not all bytes could be read, and a
 A [TStreamReadException](../../brl/brl.stream/tstreamreadexception) is thrown if not all bytes could be read, and a
 [TStreamWriteException](../../brl/brl.stream/tstreamwriteexception) is thrown if not all bytes could be written.
 [TStreamWriteException](../../brl/brl.stream/tstreamwriteexception) is thrown if not all bytes could be written.
@@ -499,3 +513,20 @@ Returns a case sensitive filename if it exists from a case insensitive file path
 
 
 <br/>
 <br/>
 
 
+## Consts
+
+### `Const WRITE_MODE_OVERWRITE:Int = 1`
+
+Opens a file for output operations.
+
+<br/>
+
+### `Const WRITE_MODE_APPEND:Int = 2`
+
+Opens a file for appending with all output operations writing data at the end of the file.
+
+Repositioning operations such as [Seek](../../brl/brl.stream/tio/#method-seeklong-poslong-whenceint-seekset-) affects the next input operations, but output operations move the position back to the end of file.
+
+
+<br/>
+

+ 13 - 13
docs/api/brl/brl_system.md

@@ -28,7 +28,7 @@ There can only be one system driver initialised. A second call to this function
 
 
 ### `Function SystemDriver:TSystemDriver()`
 ### `Function SystemDriver:TSystemDriver()`
 
 
-Returns the BlitzMax system driver, or throws an exception if [InitSystemDriver](../../brl/brl.system/#function-initsystemdriverdriver-tsystemdriver)() hasn't been called with one.
+Returns the BlitzMax system driver, or throws an exception if [InitSystemDriver](../../brl/brl.system/#function-initsystemdriverdrivertsystemdriver)() hasn't been called with one.
 
 
 <br/>
 <br/>
 
 
@@ -43,7 +43,7 @@ returned back to your program.
 
 
 If [PollSystem](../../brl/brl.system/#function-pollsystem) encounters a key, mouse or app suspend/resume/terminate
 If [PollSystem](../../brl/brl.system/#function-pollsystem) encounters a key, mouse or app suspend/resume/terminate
 event, an equivalent [TEvent](../../brl/brl.event/tevent) object event will be generated which may be intercepted using
 event, an equivalent [TEvent](../../brl/brl.event/tevent) object event will be generated which may be intercepted using
-the [EmitEventHook](../../brl/brl.event/#global-emiteventhook-int-allochookid) hook.
+the [EmitEventHook](../../brl/brl.event/#global-emiteventhookintallochookid) hook.
 
 
 
 
 <br/>
 <br/>
@@ -61,7 +61,7 @@ of any events occuring, so use with caution.
 
 
 If [WaitSystem](../../brl/brl.system/#function-waitsystem) encounters a key, mouse or app suspend/resume/terminate
 If [WaitSystem](../../brl/brl.system/#function-waitsystem) encounters a key, mouse or app suspend/resume/terminate
 event, an equivalent [TEvent](../../brl/brl.event/tevent) object will be generated which may be intercepted using
 event, an equivalent [TEvent](../../brl/brl.event/tevent) object will be generated which may be intercepted using
-the [EmitEventHook](../../brl/brl.event/#global-emiteventhook-int-allochookid) hook.
+the [EmitEventHook](../../brl/brl.event/#global-emiteventhookintallochookid) hook.
 
 
 
 
 <br/>
 <br/>
@@ -73,10 +73,10 @@ Get current date
 
 
 By default, it returns the current date in the format: DD MON YYYY (i.e. 10 DEC 2000).
 By default, it returns the current date in the format: DD MON YYYY (i.e. 10 DEC 2000).
 You can also specify some parameters to return the date in a format of your choice:
 You can also specify some parameters to return the date in a format of your choice:
-<table><tr><td> <b>parameter</b></td><td><b>description</b></td></tr><tr><td>  %%a</td><td>Abbreviated day name (sun - mon).</td></tr><tr><td>  %%A</td><td>Long day name (Sunday - Monday).</td></tr><tr><td>  %%b</td><td>Abbreviated month name (jan - feb).</td></tr><tr><td>  %%B</td><td>Long month name (January...).</td></tr><tr><td>  %%c</td><td>Locale date & time.</td></tr><tr><td>  %%d</td><td>day - in number (1..31).</td></tr><tr><td>  %%H</td><td>hour - in number (0..23).</td></tr><tr><td>  %%I</td><td>hour - in number (1..12).</td></tr><tr><td>  %%j</td><td>day of the year (1..366).</td></tr><tr><td>  %%m</td><td>month - in number (1..12).</td></tr><tr><td>  %%M</td><td>minutes - in number (00..59).</td></tr><tr><td>  %%P</td><td>AM / PM.</td></tr><tr><td>  %%S</td><td>seconds - in number (00..59).</td></tr><tr><td>  %%U</td><td>week number</td></tr><tr><td>  %%w</td><td>day of the week (0..6).</td></tr><tr><td>  %%W</td><td>week of the year (0..53).</td></tr><tr><td>  %%x</td><td>locale data representation.</td></tr><tr><td>  %%y</td><td>year without century (2014 --> 14).</td></tr><tr><td>  %%Y</td><td>Year (2014).</td></tr><tr><td>  %%Z</td><td>Time zone name.</table>
+<table><tr><td> <b>parameter</b></td><td><b>description</b></td></tr><tr><td>  %%a</td><td>Abbreviated day name (sun - mon).</td></tr><tr><td>  %%A</td><td>Long day name (Sunday - Monday).</td></tr><tr><td>  %%b</td><td>Abbreviated month name (jan - feb).</td></tr><tr><td>  %%B</td><td>Long month name (January...).</td></tr><tr><td>  %%c</td><td>Locale date & time.</td></tr><tr><td>  %%d</td><td>day - in number (1..31).</td></tr><tr><td>  %%H</td><td>hour - in number (0..23).</td></tr><tr><td>  %%I</td><td>hour - in number (1..12).</td></tr><tr><td>  %%j</td><td>day of the year (1..366).</td></tr><tr><td>  %%m</td><td>month - in number (1..12).</td></tr><tr><td>  %%M</td><td>minutes - in number (00..59).</td></tr><tr><td>  %%P</td><td>AM / PM.</td></tr><tr><td>  %%S</td><td>seconds - in number (00..59).</td></tr><tr><td>  %%U</td><td>week number</td></tr><tr><td>  %%w</td><td>day of the week (0..6).</td></tr><tr><td>  %%W</td><td>week of the year (0..53).</td></tr><tr><td>  %%x</td><td>locale data representation.</td></tr><tr><td>  %%y</td><td>year without century (2014 --> 14).</td></tr><tr><td>  %%Y</td><td>Year (2014).</td></tr><tr><td>  %%Z</td><td>Time zone name.</td></tr></table>
 
 
-You can use these parameters together:<br>
-CurrentDate("Month: %%a Day: %%d")<br>
+You can use these parameters together:<br/>
+CurrentDate("Month: %%a Day: %%d")<br/>
 
 
 
 
 #### Returns
 #### Returns
@@ -116,7 +116,7 @@ Print "The time is "+CurrentTime$()
 Move mouse pointer
 Move mouse pointer
 
 
 
 
-[MoveMouse](../../brl/brl.system/#function-movemouse-x-y) positions the mouse cursor at a specific location within
+[MoveMouse](../../brl/brl.system/#function-movemouse-xy-) positions the mouse cursor at a specific location within
 the current window or graphics display.
 the current window or graphics display.
 
 
 
 
@@ -139,7 +139,7 @@ Make the mouse pointer invisible
 Notify user
 Notify user
 
 
 
 
-[Notify](../../brl/brl.system/#function-notify-text-serious-false) activates a simple user interface element informing the user of an event.
+[Notify](../../brl/brl.system/#function-notify-textseriousfalse-) activates a simple user interface element informing the user of an event.
 The optional <b>serious</b> flag can be used to indicate a 'critical' event.
 The optional <b>serious</b> flag can be used to indicate a 'critical' event.
 
 
 Note that a user interface may not be available when in graphics mode on some platforms.
 Note that a user interface may not be available when in graphics mode on some platforms.
@@ -158,8 +158,8 @@ Notify "Hello World"
 Request user confirmation.
 Request user confirmation.
 
 
 
 
-[Confirm](../../brl/brl.system/#function-confirm-text-serious-false) activates a simple user interface element requesting the user to select between
-YES and NO options. If the user selects YES, then [Confirm](../../brl/brl.system/#function-confirm-text-serious-false) returns True. Otherwise,
+[Confirm](../../brl/brl.system/#function-confirm-textseriousfalse-) activates a simple user interface element requesting the user to select between
+YES and NO options. If the user selects YES, then [Confirm](../../brl/brl.system/#function-confirm-textseriousfalse-) returns True. Otherwise,
 False is returned.
 False is returned.
 
 
 Note that a user interface may not be available when in graphics mode on some platforms.
 Note that a user interface may not be available when in graphics mode on some platforms.
@@ -184,9 +184,9 @@ print result
 Request user confirmation or cancellation.
 Request user confirmation or cancellation.
 
 
 
 
-[Proceed](../../brl/brl.system/#function-proceed-text-serious-false) activates a simple user interface element requesting the user to select between
-YES, NO and CANCEL options. If the user selects YES, then [Proceed](../../brl/brl.system/#function-proceed-text-serious-false) return 1. If the user
-selects NO, then [Proceed](../../brl/brl.system/#function-proceed-text-serious-false) returns 0. Otherwise, [Proceed](../../brl/brl.system/#function-proceed-text-serious-false) returns -1.
+[Proceed](../../brl/brl.system/#function-proceed-textseriousfalse-) activates a simple user interface element requesting the user to select between
+YES, NO and CANCEL options. If the user selects YES, then [Proceed](../../brl/brl.system/#function-proceed-textseriousfalse-) return 1. If the user
+selects NO, then [Proceed](../../brl/brl.system/#function-proceed-textseriousfalse-) returns 0. Otherwise, [Proceed](../../brl/brl.system/#function-proceed-textseriousfalse-) returns -1.
 
 
 Note that a user interface may not be available when in graphics mode on some platforms.
 Note that a user interface may not be available when in graphics mode on some platforms.
 
 

+ 7 - 6
docs/api/brl/brl_textstream.md

@@ -19,19 +19,20 @@ many text processing applications are unable to handle UTF8 and UTF16 files.
 
 
 ## Functions
 ## Functions
 
 
-### `Function LoadText$( url:Object )`
+### `Function LoadText$( url:Object, checkForUTF8:Int = True )`
 
 
 Load text from a stream
 Load text from a stream
 
 
 
 
-[LoadText](../../brl/brl.textstream/#function-loadtext-url-object) loads LATIN1, UTF8 or UTF16 text from <b>url</b>.
+[LoadText](../../brl/brl.textstream/#function-loadtext-urlobject-checkforutf8int-true-) loads LATIN1, UTF8 or UTF16 text from <b>url</b>.
 
 
 The first bytes read from the stream control the format of the text:
 The first bytes read from the stream control the format of the text:
-<table><tr><td> &$fe $ff</td><td>Text is big endian UTF16</td></tr><tr><td>  &$ff $fe</td><td>Text is little endian UTF16</td></tr><tr><td>  &$ef $bb $bf</td><td>Text is UTF8</table>
+<table><tr><td> &$fe $ff</td><td>Text is big endian UTF16</td></tr><tr><td>  &$ff $fe</td><td>Text is little endian UTF16</td></tr><tr><td>  &$ef $bb $bf</td><td>Text is UTF8</td></tr></table>
 
 
 
 
 If the first bytes don't match any of the above values, the stream
 If the first bytes don't match any of the above values, the stream
-is assumed to contain LATIN1 text.
+is assumed to contain LATIN1 text. Additionally, when <b>checkForUTF8</b> is enabled, the
+stream will be tested for UTF8 compatibility, and loaded as such as appropriate.
 
 
 A [TStreamReadException](../../brl/brl.stream/tstreamreadexception) is thrown if not all bytes could be read.
 A [TStreamReadException](../../brl/brl.stream/tstreamreadexception) is thrown if not all bytes could be read.
 
 
@@ -42,12 +43,12 @@ A string containing the text
 
 
 <br/>
 <br/>
 
 
-### `Function SaveText:Int( str$,url:Object )`
+### `Function SaveText:Int( str$,url:Object, format:ETextStreamFormat = ETextStreamFormat.LATIN1, withBOM:Int = True )`
 
 
 Save text to a stream
 Save text to a stream
 
 
 
 
-[SaveText](../../brl/brl.textstream/#function-savetext-int-str-url-object) saves the characters in <b>str</b> to <b>url</b>.
+[SaveText](../../brl/brl.textstream/#function-savetextint-strurlobject-formatetextstreamformat-etextstreamformatlatin1-withbomint-true-) saves the characters in <b>str</b> to <b>url</b>.
 
 
 If <b>str</b> contains any characters with a character code greater than 255,
 If <b>str</b> contains any characters with a character code greater than 255,
 then <b>str</b> is saved in UTF16 format. Otherwise, <b>str</b> is saved in LATIN1 format.
 then <b>str</b> is saved in UTF16 format. Otherwise, <b>str</b> is saved in LATIN1 format.

+ 10 - 10
docs/api/brl/brl_threads.md

@@ -12,15 +12,15 @@ Multithreading effectively allows your programs to do several things at the same
 
 
 Multithreading used to be achieved by software trickery, which made threading useful but not really faster - there was still only one CPU pretending to do multiple things at the same time! But these days, multicore CPUs mean that threading can be used to truly do multiple things at the same time (or 'in parallel').
 Multithreading used to be achieved by software trickery, which made threading useful but not really faster - there was still only one CPU pretending to do multiple things at the same time! But these days, multicore CPUs mean that threading can be used to truly do multiple things at the same time (or 'in parallel').
 
 
-Creating a thread is easy - just call [CreateThread](../../brl/brl.threads/#function-createthread-tthread-entry-object-data-object-data-object). You will need to provide a function for the thread to use as it's 'entry point'. Once the thread is created, this function will start executing in parallel with the code that called [CreateThread](../../brl/brl.threads/#function-createthread-tthread-entry-object-data-object-data-object). When the thread function returns, that thread will be 'terminated'.
+Creating a thread is easy - just call [CreateThread](../../brl/brl.threads/#function-createthreadtthread-entryobject-dataobject-dataobject-). You will need to provide a function for the thread to use as it's 'entry point'. Once the thread is created, this function will start executing in parallel with the code that called [CreateThread](../../brl/brl.threads/#function-createthreadtthread-entryobject-dataobject-dataobject-). When the thread function returns, that thread will be 'terminated'.
 
 
 Alas, threading turns out to be rather tricky due to an issue known as 'synchronization'. Synchronization is required when you need to prevent multiple threads from modifying or accessing the same data at the same time. Synchronization usually involves a thread 'blocking'. When a thread blocks, it completely halts execution until another thread does something that causes it to 'unblock' and resume execution.
 Alas, threading turns out to be rather tricky due to an issue known as 'synchronization'. Synchronization is required when you need to prevent multiple threads from modifying or accessing the same data at the same time. Synchronization usually involves a thread 'blocking'. When a thread blocks, it completely halts execution until another thread does something that causes it to 'unblock' and resume execution.
 
 
 BlitzMax provides 2 primitives known as 'mutexes' and 'semaphores' to assist with synchronization:
 BlitzMax provides 2 primitives known as 'mutexes' and 'semaphores' to assist with synchronization:
 
 
-* Mutexes provide a simple locking mechanism. Only one thread at a time can lock a mutex (using [LockMutex](../../brl/brl.threads/#function-lockmutex-mutex-tmutex) or [TryLockMutex](../../brl/brl.threads/#function-trylockmutex-int-mutex-tmutex)), so this is an easy way to protect resources from simultaneous access. If a thread calls [LockMutex](../../brl/brl.threads/#function-lockmutex-mutex-tmutex) and the mutex is already locked by another thread, the current thread will block until the other thread releases the mutex using [UnlockMutex](../../brl/brl.threads/#function-unlockmutex-mutex-tmutex). So don't forget to [UnlockMutex](../../brl/brl.threads/#function-unlockmutex-mutex-tmutex) a mutex after you are finished with it!
+* Mutexes provide a simple locking mechanism. Only one thread at a time can lock a mutex (using [LockMutex](../../brl/brl.threads/#function-lockmutex-mutextmutex-) or [TryLockMutex](../../brl/brl.threads/#function-trylockmutexint-mutextmutex-)), so this is an easy way to protect resources from simultaneous access. If a thread calls [LockMutex](../../brl/brl.threads/#function-lockmutex-mutextmutex-) and the mutex is already locked by another thread, the current thread will block until the other thread releases the mutex using [UnlockMutex](../../brl/brl.threads/#function-unlockmutex-mutextmutex-). So don't forget to [UnlockMutex](../../brl/brl.threads/#function-unlockmutex-mutextmutex-) a mutex after you are finished with it!
 
 
-* Semaphores provide a synchronized counting mechanism, and contain an internal integer counter. There are 2 operations you can perform on a semaphore - post and wait. Posting a semaphore (using [PostSemaphore](../../brl/brl.threads/#function-postsemaphore-semaphore-tsemaphore)) causes the semaphore's internal counter to be incremented, while waiting for a semaphore (using [WaitSemaphore](../../brl/brl.threads/#function-waitsemaphore-semaphore-tsemaphore)) will cause the current thread to block until the semaphore's internal counter is greater than 0. When it is, the counter is decremented and the thread unblocks. Semaphores are very useful for producer/consumer type situations.
+* Semaphores provide a synchronized counting mechanism, and contain an internal integer counter. There are 2 operations you can perform on a semaphore - post and wait. Posting a semaphore (using [PostSemaphore](../../brl/brl.threads/#function-postsemaphore-semaphoretsemaphore-)) causes the semaphore's internal counter to be incremented, while waiting for a semaphore (using [WaitSemaphore](../../brl/brl.threads/#function-waitsemaphore-semaphoretsemaphore-)) will cause the current thread to block until the semaphore's internal counter is greater than 0. When it is, the counter is decremented and the thread unblocks. Semaphores are very useful for producer/consumer type situations.
 
 
 
 
 ## Types
 ## Types
@@ -41,9 +41,9 @@ Create a thread
 
 
 Creates a thread and returns a thread object.
 Creates a thread and returns a thread object.
 
 
-The value returned by the thread <b>entry</b> routine can be later retrieved using [WaitThread](../../brl/brl.threads/#function-waitthread-object-thread-tthread).
+The value returned by the thread <b>entry</b> routine can be later retrieved using [WaitThread](../../brl/brl.threads/#function-waitthreadobject-threadtthread-).
 
 
-To 'close' a thread, call either [DetachThread](../../brl/brl.threads/#function-detachthread-thread-tthread) or [WaitThread](../../brl/brl.threads/#function-waitthread-object-thread-tthread). This isn't strictly
+To 'close' a thread, call either [DetachThread](../../brl/brl.threads/#function-detachthread-threadtthread-) or [WaitThread](../../brl/brl.threads/#function-waitthreadobject-threadtthread-). This isn't strictly
 necessary as the thread will eventually be closed when it is garbage collected, however, it
 necessary as the thread will eventually be closed when it is garbage collected, however, it
 may be a good idea if you are creating many threads very often, as some operating systems have
 may be a good idea if you are creating many threads very often, as some operating systems have
 a limit on the number of threads that can be allocated at once.
 a limit on the number of threads that can be allocated at once.
@@ -119,9 +119,9 @@ A thread object representing the current thread.
 Detach a thread
 Detach a thread
 
 
 
 
-[DetachThread](../../brl/brl.threads/#function-detachthread-thread-tthread) closes a thread's handle, but does not halt or otherwise affect the target thread.
+[DetachThread](../../brl/brl.threads/#function-detachthread-threadtthread-) closes a thread's handle, but does not halt or otherwise affect the target thread.
 
 
-Once one a thread has been detached, it wil no longer be possible to use [WaitThread](../../brl/brl.threads/#function-waitthread-object-thread-tthread) to get its return value.
+Once one a thread has been detached, it wil no longer be possible to use [WaitThread](../../brl/brl.threads/#function-waitthreadobject-threadtthread-) to get its return value.
 
 
 This allows the thread to run without your program having to continually check whether it has completedin order to close it.
 This allows the thread to run without your program having to continually check whether it has completedin order to close it.
 
 
@@ -133,11 +133,11 @@ This allows the thread to run without your program having to continually check w
 Wait for a thread to finish
 Wait for a thread to finish
 
 
 
 
-[WaitThread](../../brl/brl.threads/#function-waitthread-object-thread-tthread) causes the calling thread to block until the target thread has completed execution.
+[WaitThread](../../brl/brl.threads/#function-waitthreadobject-threadtthread-) causes the calling thread to block until the target thread has completed execution.
 
 
-If the target thread has already completed execution, [WaitThread](../../brl/brl.threads/#function-waitthread-object-thread-tthread) returns immediately.
+If the target thread has already completed execution, [WaitThread](../../brl/brl.threads/#function-waitthreadobject-threadtthread-) returns immediately.
 
 
-The returned object is the object returned by the thread's entry routine, as passed to [CreateThread](../../brl/brl.threads/#function-createthread-tthread-entry-object-data-object-data-object).
+The returned object is the object returned by the thread's entry routine, as passed to [CreateThread](../../brl/brl.threads/#function-createthreadtthread-entryobject-dataobject-dataobject-).
 
 
 
 
 #### Returns
 #### Returns

+ 8 - 3
docs/api/brl/brl_timer.md

@@ -5,6 +5,11 @@ sidebar_label: BRL.Timer
 ---
 ---
 
 
 
 
+## Types
+| Type | Description |
+|---|---|
+| [TChrono](../../brl/brl.timer/tchrono) | A high resolution timing mechanism. |
+
 ## Functions
 ## Functions
 
 
 ### `Function CreateTimer:TTimer( hertz#,event:TEvent=Null )`
 ### `Function CreateTimer:TTimer( hertz#,event:TEvent=Null )`
@@ -12,9 +17,9 @@ sidebar_label: BRL.Timer
 Create a timer
 Create a timer
 
 
 
 
-[CreateTimer](../../brl/brl.timer/#function-createtimer-ttimer-hertz-event-tevent-null) creates a timer object that 'ticks' <b>hertz</b> times per second.
+[CreateTimer](../../brl/brl.timer/#function-createtimerttimer-hertzeventteventnull-) creates a timer object that 'ticks' <b>hertz</b> times per second.
 
 
-Each time the timer ticks, <b>event</b> will be emitted using [EmitEvent](../../brl/brl.event/#function-emitevent-event-tevent).
+Each time the timer ticks, <b>event</b> will be emitted using [EmitEvent](../../brl/brl.event/#function-emitevent-eventtevent-).
 
 
 If <b>event</b> is Null, an event with an <b>id</b> equal to EVENT_TIMERTICK and
 If <b>event</b> is Null, an event with an <b>id</b> equal to EVENT_TIMERTICK and
 <b>source</b> equal to the timer object will be emitted instead.
 <b>source</b> equal to the timer object will be emitted instead.
@@ -86,7 +91,7 @@ The number of times <b>timer</b> has ticked over
 Wait until a timer ticks
 Wait until a timer ticks
 
 
 #### Returns
 #### Returns
-The number of ticks since the last call to [WaitTimer](../../brl/brl.timer/#function-waittimer-int-timer-ttimer)
+The number of ticks since the last call to [WaitTimer](../../brl/brl.timer/#function-waittimerint-timerttimer-)
 
 
 
 
 #### Example
 #### Example

+ 69 - 0
docs/api/brl/brl_uuid.md

@@ -0,0 +1,69 @@
+---
+id: brl.uuid
+title: BRL.uuid
+sidebar_label: BRL.uuid
+---
+
+
+## Functions
+
+### `Function uuidGenerate:String(upperCase:Int = False)`
+
+Generates a UUID in canonical form, optionally in uppercase.
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import BRL.uuid
+
+For Local i:Int = 0 Until 5
+	Print uuidGenerate()
+Next
+```
+<br/>
+
+### `Function uuidGenerateBytes:Byte[]()`
+
+Generates a UUID Byte array.
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import BRL.StringBuilder
+Import BRL.uuid
+
+For Local i:Int = 0 Until 5
+	Local bytes:Byte[] = uuidGenerateBytes()
+	Local sb:TStringBuilder = New TStringBuilder
+	For Local n:Int = 0 Until bytes.length
+		If n Then
+			sb.Append(",")
+		End If
+		sb.Append(bytes[n])
+	Next
+	Print sb.ToString()
+Next
+```
+<br/>
+
+### `Function uuidToCanonical:String(buf:Byte[], upperCase:Int = False)`
+
+Converts a UUID Byte array into a String, optionally in uppercase.
+
+#### Example
+```blitzmax
+SuperStrict
+
+Framework brl.standardio
+Import BRL.uuid
+
+Local bytes:Byte[] = uuidGenerateBytes()
+Print uuidToCanonical(bytes, False)
+Print uuidToCanonical(bytes, True)
+```
+<br/>
+

+ 215 - 21
docs/api/brl/brl_volumes.md

@@ -11,7 +11,7 @@ sidebar_label: BRL.Volumes
 <h2>Volume Information</h2>
 <h2>Volume Information</h2>
 <p>Enables access to all volumes on the system, as well as drive-details such as free and total space for the volume.</p>
 <p>Enables access to all volumes on the system, as well as drive-details such as free and total space for the volume.</p>
 <p>To get a list of volumes on the current system, simply call <a href="#ListVolumes">ListVolumes</a> which returns
 <p>To get a list of volumes on the current system, simply call <a href="#ListVolumes">ListVolumes</a> which returns
-a list of <a href="#TVolume">TVolume</a> objects, from which you have access to the extra information.<br>
+a list of <a href="#TVolume">TVolume</a> objects, from which you have access to the extra information.<br/>
 You can also retrieve size information directly using <a href="#GetVolumeSize">GetVolumeSize</a> and <a href="#GetVolumeFreeSpace">GetVolumeFreeSpace</a>.
 You can also retrieve size information directly using <a href="#GetVolumeSize">GetVolumeSize</a> and <a href="#GetVolumeFreeSpace">GetVolumeFreeSpace</a>.
 </p>
 </p>
 <h2>User Directories</h2>
 <h2>User Directories</h2>
@@ -45,7 +45,7 @@ Others domains include <a href="#kSystemDomain">kSystemDomain</a>, <a href="#kLo
 
 
 Returns a list of volumes on the system.
 Returns a list of volumes on the system.
 
 
-#### Example
+#### Example 1
 ```blitzmax
 ```blitzmax
 SuperStrict
 SuperStrict
 
 
@@ -60,7 +60,49 @@ If list Then
 	For Local v:TVolume = EachIn list
 	For Local v:TVolume = EachIn list
 	
 	
 		'If v.available Then
 		'If v.available Then
-			Print "t" + v.volumeName + "  -  " + v.volumeDevice + " (" +  v.volumeType +  ") -  " + ((v.volumeFree / 1024) / 1024) + "mb"
+			Print "~t" + v.volumeName + "  -  " + v.volumeDevice + " (" +  v.volumeType +  ") -  " + ((v.volumeFree / 1024) / 1024) + "mb"
+		'End If
+	
+	Next
+End If
+```
+#### Example 2
+```blitzmax
+SuperStrict
+
+Framework BRL.volumes
+Import brl.standardio
+
+Local list:TList = ListVolumes()
+
+If list Then
+	Print "Volumes :"
+
+	For Local v:TVolume = EachIn list
+	
+		'If v.available Then
+			Print "~t" + v.volumeName + "  -  " + v.volumeDevice + " (" +  v.volumeType +  ") -  " + ((v.volumeFree / 1024) / 1024) + "mb"
+		'End If
+	
+	Next
+End If
+```
+#### Example 3
+```blitzmax
+SuperStrict
+
+Framework BRL.volumes
+Import brl.standardio
+
+Local list:TList = ListVolumes()
+
+If list Then
+	Print "Volumes :"
+
+	For Local v:TVolume = EachIn list
+	
+		'If v.available Then
+			Print "~t" + v.volumeName + "  -  " + v.volumeDevice + " (" +  v.volumeType +  ") -  " + ((v.volumeFree / 1024) / 1024) + "mb"
 		'End If
 		'End If
 	
 	
 	Next
 	Next
@@ -78,7 +120,47 @@ Parameters:
 </ul>
 </ul>
 
 
 
 
-#### Example
+#### Example 1
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import brl.standardio
+
+Local vol:String
+
+?win32
+vol = "C:\"
+?linux
+vol = "/"
+?macos
+vol = "/"
+?
+
+Print "Freespace :"
+Print vol + " = " + (GetVolumeFreeSpace(vol) / 1024) + " kb"
+```
+#### Example 2
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import brl.standardio
+
+Local vol:String
+
+?win32
+vol = "C:\"
+?linux
+vol = "/"
+?macos
+vol = "/"
+?
+
+Print "Freespace :"
+Print vol + " = " + (GetVolumeFreeSpace(vol) / 1024) + " kb"
+```
+#### Example 3
 ```blitzmax
 ```blitzmax
 SuperStrict
 SuperStrict
 
 
@@ -110,7 +192,47 @@ Parameters:
 </ul>
 </ul>
 
 
 
 
-#### Example
+#### Example 1
+```blitzmax
+SuperStrict
+
+Framework BRL.volumes
+Import brl.standardio
+
+Local vol:String
+
+?win32
+vol = "C:\"
+?linux
+vol = "/"
+?macos
+vol = "/"
+?
+
+Print "Total space :"
+Print vol + " = " + (GetVolumeSize(vol) / 1024) + " kb"
+```
+#### Example 2
+```blitzmax
+SuperStrict
+
+Framework BRL.volumes
+Import brl.standardio
+
+Local vol:String
+
+?win32
+vol = "C:\"
+?linux
+vol = "/"
+?macos
+vol = "/"
+?
+
+Print "Total space :"
+Print vol + " = " + (GetVolumeSize(vol) / 1024) + " kb"
+```
+#### Example 3
 ```blitzmax
 ```blitzmax
 SuperStrict
 SuperStrict
 
 
@@ -151,13 +273,31 @@ Returns the user home directory.
 The table lists examples for the various platforms -
 The table lists examples for the various platforms -
 <table align="center">
 <table align="center">
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
-<tr><td>Linux</td><td>/home/username</td><td>&lt;/td></tr>
-<tr><td>Mac OS</td><td>/Users/username</td><td>&lt;/td></tr>
-<tr><td>Win32</td><td>C:\Documents and Settings\username</td><td>&nbsp;</td></tr>
+<tr><td>Linux</td><td>`/home/username`</td><td>``</td></tr>
+<tr><td>Mac OS</td><td>`/Users/username`</td><td>``</td></tr>
+<tr><td>Win32</td><td>`C:\Documents and Settings\username`</td><td>&nbsp;</td></tr>
 </table>
 </table>
 
 
 
 
-#### Example
+#### Example 1
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserHomeDir()
+```
+#### Example 2
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserHomeDir()
+```
+#### Example 3
 ```blitzmax
 ```blitzmax
 SuperStrict
 SuperStrict
 
 
@@ -175,13 +315,31 @@ Returns the user Desktop directory.
 The table lists examples for the various platforms -
 The table lists examples for the various platforms -
 <table align="center">
 <table align="center">
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
-<tr><td>Linux</td><td>/home/username/Desktop</td><td>/Desktop</td></tr>
-<tr><td>Mac OS</td><td>/Users/username/Desktop</td><td>/Desktop</td></tr>
-<tr><td>Win32</td><td>C:\Documents and Settings\username\Desktop</td><td>&nbsp;</td></tr>
+<tr><td>Linux</td><td>`/home/username/Desktop`</td><td>`/Desktop`</td></tr>
+<tr><td>Mac OS</td><td>`/Users/username/Desktop`</td><td>`/Desktop`</td></tr>
+<tr><td>Win32</td><td>`C:\Documents and Settings\username\Desktop`</td><td>&nbsp;</td></tr>
 </table>
 </table>
 
 
 
 
-#### Example
+#### Example 1
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserDesktopDir()
+```
+#### Example 2
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserDesktopDir()
+```
+#### Example 3
 ```blitzmax
 ```blitzmax
 SuperStrict
 SuperStrict
 
 
@@ -199,13 +357,31 @@ Returns the user directory for application data.
 The table lists examples for the various platforms -
 The table lists examples for the various platforms -
 <table align="center">
 <table align="center">
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
-<tr><td>Linux</td><td>/home/username</td><td>&lt;/td></tr>
-<tr><td>Mac OS</td><td>/Users/username/Library/Application Support</td><td>/Library/Application Support</td></tr>
-<tr><td>Win32</td><td>C:\Documents and Settings\username\Application Data</td><td>&nbsp;</td></tr>
+<tr><td>Linux</td><td>`/home/username`</td><td>``</td></tr>
+<tr><td>Mac OS</td><td>`/Users/username/Library/Application Support`</td><td>`/Library/Application Support`</td></tr>
+<tr><td>Win32</td><td>`C:\Documents and Settings\username\Application Data`</td><td>&nbsp;</td></tr>
 </table>
 </table>
 
 
 
 
-#### Example
+#### Example 1
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserAppDir()
+```
+#### Example 2
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserAppDir()
+```
+#### Example 3
 ```blitzmax
 ```blitzmax
 SuperStrict
 SuperStrict
 
 
@@ -223,13 +399,31 @@ Returns the user Documents directory.
 The table lists examples for the various platforms -
 The table lists examples for the various platforms -
 <table align="center">
 <table align="center">
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
 <tr><th>Platform</th><th>Example</th><th>Equivalent</th></tr>
-<tr><td>Linux</td><td>/home/username/Documents</td><td>/Documents</td></tr>
-<tr><td>Mac OS</td><td>/Users/username/Documents</td><td>/Documents</td></tr>
-<tr><td>Win32</td><td>C:\Documents and Settings\username\My Documents</td><td>&nbsp;</td></tr>
+<tr><td>Linux</td><td>`/home/username/Documents`</td><td>`/Documents`</td></tr>
+<tr><td>Mac OS</td><td>`/Users/username/Documents`</td><td>`/Documents`</td></tr>
+<tr><td>Win32</td><td>`C:\Documents and Settings\username\My Documents`</td><td>&nbsp;</td></tr>
 </table>
 </table>
 
 
 
 
-#### Example
+#### Example 1
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserDocumentsDir()
+```
+#### Example 2
+```blitzmax
+SuperStrict
+
+Framework BRL.Volumes
+Import BRL.Standardio
+
+Print GetUserDocumentsDir()
+```
+#### Example 3
 ```blitzmax
 ```blitzmax
 SuperStrict
 SuperStrict
 
 

+ 47 - 0
docs/api/crypto/crypto.crc32/tcrc32.md

@@ -0,0 +1,47 @@
+---
+id: tcrc32
+title: TCRC32
+sidebar_label: TCRC32
+---
+
+A CRC32 function.
+
+
+## Methods
+
+### `Method Update:Int(data:Byte Ptr, dataLen:Int) Override`
+
+Updates the calculation with <b>dataLen</b> bytes of data.
+
+<br/>
+
+### `Method Digest(txt:String, result:Int Var)`
+
+Calculates the CRC for the given [String](../../../brl/brl.blitz/#string), setting the value in <b>result</b>.
+
+<br/>
+
+### `Method Digest(stream:TStream, result:Int Var)`
+
+Calculates the CRC for the given [TStream](../../../brl/brl.stream/tstream), setting the value in <b>result</b>.
+
+<br/>
+
+### `Method Finish:Int(result:Byte[]) Override`
+
+Finishes calculation and produces the result, filling <b>result</b> with the calculated bytes.
+
+The state is reset, ready to create a new calculation.
+
+
+<br/>
+
+### `Method Finish:Int(result:Int Var)`
+
+Finishes calculation and produces the result, setting <b>result</b> with the result.
+
+The state is reset, ready to create a new calculation.
+
+
+<br/>
+

+ 1 - 1
docs/api/brl/brl.crypto/tcryptoexchangekeypair.md → docs/api/crypto/crypto.crypto/tcryptoexchangekeypair.md

@@ -13,7 +13,7 @@ the secret key ever gets leaked.
 
 
 ## Methods
 ## Methods
 
 
-### `Method ToString:String()`
+### `Method ToString:String() Override`
 
 
 Returns a String representation of the key pair.
 Returns a String representation of the key pair.
 
 

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov