diff --git a/docs/user/Doxyfile b/docs/user/Doxyfile
index a8f5f0d740..7c1e650149 100644
--- a/docs/user/Doxyfile
+++ b/docs/user/Doxyfile
@@ -1,4 +1,4 @@
-# Doxyfile 1.4.7
+# Doxyfile 1.5.1-p1
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@@ -45,11 +45,11 @@ CREATE_SUBDIRS = NO
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
-# Swedish, and Ukrainian.
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
+# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
+# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
+# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
OUTPUT_LANGUAGE = English
@@ -209,7 +209,7 @@ BUILTIN_STL_SUPPORT = NO
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
-DISTRIBUTE_GROUP_DOC = YES
+DISTRIBUTE_GROUP_DOC = NO
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# the same type (for instance a group of public functions) to be put as a
@@ -465,7 +465,7 @@ INPUT = . \
support \
../../headers/os/midi2 \
../../headers/os/support \
- ../../headers/posix/syslog.h
+ ../../headers/posix/syslog.h
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
diff --git a/docs/user/midi2/Midi2Defs.dox b/docs/user/midi2/Midi2Defs.dox
new file mode 100644
index 0000000000..11de6a7a37
--- /dev/null
+++ b/docs/user/midi2/Midi2Defs.dox
@@ -0,0 +1,279 @@
+/*!
+\file Midi2Defs.h
+\ingroup midi2
+*/
+
+/*!
+\name Channel Message Masks
+\brief Some definitions to define the raw MIDI events.
+
+The default implementation of BMidiLocalConsumer::Data() uses these constants
+to determine which event has been passed on. If you override that method, you
+may use the constants yourself.
+*/
+
+//! @{
+
+/*!
+\var B_NOTE_OFF
+*/
+
+/*!
+\var B_NOTE_ON
+*/
+
+/*!
+\var B_KEY_PRESSURE
+*/
+
+/*!
+\var B_CONTROL_CHANGE
+*/
+
+/*!
+\var B_PROGRAM_CHANGE
+*/
+
+/*!
+\var B_CHANNEL_PRESSURE
+*/
+
+/*!
+\var B_PITCH_BEND
+*/
+
+//! @}
+
+
+/*!
+\name System Messages
+\brief Some definitions to define the raw MIDI system messages.
+
+The default implementation of BMidiLocalConsumer::Data() uses these constants
+to determine which event system message has been passed on. See
+BMidiLocalProducer::SpraySystemCommon() and BMidiLocalProducer::SpraySystemRealTime()
+for more details on how and when to use these messages.
+*/
+
+//! @{
+
+/*!
+\var B_SYS_EX_START
+*/
+
+/*!
+\var B_MIDI_TIME_CODE
+*/
+
+/*!
+\var B_SONG_POSITION
+*/
+
+/*!
+\var B_SONG_SELECT
+*/
+
+/*!
+\var B_CABLE_MESSAGE
+*/
+
+/*!
+\var B_TUNE_REQUEST
+*/
+
+/*!
+\var B_SYS_EX_END
+*/
+
+/*!
+\var B_TIMING_CLOCK
+*/
+
+/*!
+\var B_START
+*/
+
+/*!
+\var B_CONTINUE
+*/
+
+/*!
+\var B_STOP
+*/
+
+/*!
+\var B_ACTIVE_SENSING
+*/
+
+/*!
+\var B_SYSTEM_RESET
+*/
+
+//! @}
+
+/*!
+\name Controller Numbers
+\brief Constants that represent specific controller messages.
+
+These constants can be used in BMidiLocalProducer::SprayControlChange()
+and BMidiLocalConsumer::ControlChange(). These constants represent the
+MIDI specification.
+*/
+
+//! @{
+
+
+*/
+
+/*!
+\var B_MODULATION
+*/
+
+/*!
+\var B_BREATH_CONTROLLER
+*/
+
+/*!
+\var B_FOOT_CONTROLLER
+*/
+
+/*!
+\var B_PORTAMENTO_TIME
+*/
+
+/*!
+\var B_DATA_ENTRY
+*/
+
+/*!
+\var B_MAIN_VOLUME
+*/
+
+/*!
+\var B_MIDI_BALANCE
+*/
+
+/*!
+\var B_PAN
+*/
+
+/*!
+\var B_EXPRESSION_CTRL
+*/
+
+/*!
+\var B_GENERAL_CTRL_1
+*/
+
+/*!
+\var B_GENERAL_CTRL_2
+*/
+
+/*!
+\var B_GENERAL_CTRL_3
+*/
+
+/*!
+\var B_GENERAL_CTRL_4
+*/
+
+/*!
+\var B_SUSTAIN_PEDAL
+*/
+
+/*!
+\var B_PORTAMENTO
+*/
+
+/*!
+\var B_SOSTENUTO
+*/
+
+/*!
+\var B_SOFT_PEDAL
+*/
+
+/*!
+\var B_HOLD_2
+*/
+
+/*!
+\var B_GENERAL_CTRL_5
+*/
+
+/*!
+\var B_GENERAL_CTRL_6
+*/
+
+/*!
+\var B_TEMPO_CHANGE
+*/
+
+/*!
+\var B_GENERAL_CTRL_7
+*/
+
+/*!
+\var B_GENERAL_CTRL_8
+*/
+
+/*!
+\var B_EFFECTS_DEPTH
+*/
+
+/*!
+\var B_TREMOLO_DEPTH
+*/
+
+/*!
+\var B_CHORUS_DEPTH
+*/
+
+/*!
+\var B_CELESTE_DEPTH
+*/
+
+/*!
+\var B_PHASER_DEPTH
+*/
+
+/*!
+\var B_DATA_INCREMENT
+*/
+
+/*!
+\var B_DATA_DECREMENT
+*/
+
+/*!
+\var B_RESET_ALL_CONTROLLERS
+*/
+
+/*!
+\var B_LOCAL_CONTROL
+*/
+
+/*!
+\var B_ALL_NOTES_OFF
+*/
+
+/*!
+\var B_OMNI_MODE_OFF
+*/
+
+/*!
+\var B_OMNI_MODE_ON
+*/
+
+/*!
+\var B_MONO_MODE_ON
+*/
+
+/*!
+\var B_POLY_MODE_ON
+*/
+
+
+//! @}
+
+
diff --git a/docs/user/midi2/midi2intro.dox b/docs/user/midi2/midi2intro.dox
index 5a4c3ab746..3d6eaef722 100644
--- a/docs/user/midi2/midi2intro.dox
+++ b/docs/user/midi2/midi2intro.dox
@@ -288,7 +288,7 @@ as the BeOS R5 kits, although there are a few small differences in the API
More about the Midi Kit:
-- \subpage midi2defs
+- \ref Midi2Defs.h
- Be Newsletter Volume 3, Issue 47 - Motor Mix sample code
- Be Newsletter Volume 4, Issue 3 - Overview of the new kit
- OpenBeOS
diff --git a/docs/user/midi2/midiconsumer.dox b/docs/user/midi2/midiconsumer.dox
index 1d40d514cf..5d6db32cb5 100644
--- a/docs/user/midi2/midiconsumer.dox
+++ b/docs/user/midi2/midiconsumer.dox
@@ -54,3 +54,238 @@ Unfortunately, the Midi Kit provides no easy mechanism for doing any of this,
so you are on your own here.
*/
+
+/*!
+\class BMidiLocalConsumer MidiConsumer.h
+\ingroup midi2
+\ingroup libmidi2
+\brief A consumer endpoint that is created by your own application
+
+If you want to create a consumer that reacts to MIDI events, you should
+subclass BMidiLocalConsumer.
+
+Each local consumer has its own thread that receives and dispatches the MIDI
+events. Whenever MIDI data arrives, the Data() hook passes the MIDI event on to
+a more specific hook function: NoteOn(), NoteOff(), SystemExclusive(), and so
+on. Calls to these hook functions are serialized -- they will never have to be
+re-entrant. They also should not be called from outside the thread that is
+invoking them.
+
+Your subclass can override any of the MIDI event hooks. BMidiLocalConsumer
+doesn't provide default implementations for them, so you don't have to call a
+hook's default implementation if you override it. For complete control, you can
+also override Data().
+
+Most hook functions take a channel argument. Even though MIDI channels are
+really numbered 1 through 16, the hook functions work with channels 0 through
+15. The performance time for the event is specified in microseconds relative to
+the system time base. A performance time that is 0 (or really any time in the
+past) means "play as soon as possible". See the \ref midi2time "introduction"
+for more information about timing and consumers.
+
+The thread driving the consumer's events is a very high priority real time
+thread. Events should be handled as quickly as possible (not counting
+snoozing). If non-time-critical computation is needed it may be wise to queue
+events up for a lower priority thread to handle them external to the main event
+thread.
+
+*/
+
+/*!
+\fn BMidiLocalConsumer::BMidiLocalConsumer(const char *name = NULL)
+\brief Creates a new local consumer endpoint
+
+The new endpoint is not visible to other applications until you Register() it.
+
+You can tell the constructor what the name of the new consumer will be. If you
+pass NULL (or use the default argument), then the consumer's name will be an
+empty string. It won't be NULL, since endpoint names cannot be NULL.
+
+There is no guarantee that the endpoint will be successfully created. For
+example, the Midi Server may not be running. Therefore, you should always call
+IsValid() after creating a new endpoint to make sure that everything went okay.
+If not, Release() the object to reclaim memory and abort gracefully.
+
+\code
+MyConsumer* cons = new MyConsumer(...);
+if (!cons->IsValid())
+{
+ cons->Release();
+ ...exit gracefully...
+}
+\endcode
+
+*/
+
+/*!
+\fn void BMidiLocalConsumer::SetLatency(bigtime_t latency)
+\brief Changes the published latency of the consumer
+\sa Latency()
+*/
+
+/*!
+\fn int32 BMidiLocalConsumer::GetProducerID()
+\brief Returns the ID of the producer that most recently sent a MIDI event to
+this consumer
+
+You can call this from one of the hooks to determine which producer the event
+came from.
+
+*/
+
+/*!
+\fn void BMidiLocalConsumer::SetTimeout(bigtime_t when, void* data)
+\brief Requests that the Timeout() hook will be called at some point
+
+This method asks the consumer thread to call the Timeout() hook as soon as
+possible after the timeout expires. For every call to SetTimeout(), the
+Timeout() hook is only called once. Note: the term "timeout" may be a little
+misleading; the hook will always be called, even if events are received
+in the mean time. Apparently, this facility is handy for dealing with early
+events.
+
+Note that the event thread blocks on the consumer's port as long as no events
+arrive. By default no timeout is set, and as a result the thread blocks
+forever. Your call to SetTimeout() doesn't change this. The new timeout value
+will go into effect the next time the thread tries to read from the port, i.e.
+after the first event has been received. If no event ever comes in, the
+Timeout() hook will never be called. This also means that you cannot cancel a
+timeout once you have set it. To repeat, calling SetTimeout() only takes effect
+after at least one new event has been received.
+
+\param when An absolute time that's measured against the system clock.
+
+\param data A pointer to a "cookie" that you can pass along to Timeout(). The
+data is not copied, so you must ensure that the pointer remains valid until
+Timeout() is called. You typically delete the data inside Timeout().
+
+*/
+
+/*!
+\fn void BMidiLocalConsumer::Timeout(void* data)
+\brief Hook function that is called per your own request
+\sa SetTimeout()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::Data(
+ uchar* data, size_t length, bool atomic, bigtime_t time)
+\brief Invoked when raw MIDI is received
+
+What the default implementation of Data() does depends on the value of atomic.
+If atomic is true, the data received comprises a single MIDI event; i.e. one
+status byte followed by the appropriate number of data bytes and nothing else.
+In this case, Data() calls the event-specific hook function that corresponds to
+that status byte. This optimization is used by the Midi Kit to allow faster
+dispatch of events generated by the specific Spray functions from
+BMidiLocalProducer.
+
+If atomic is false, Data() ignores the MIDI event. If you want a consumer to
+handle non-atomic events, you have to override Data() and program this
+yourself. In that case, you probably also want to call the default
+implementation to handle the "normal" MIDI events.
+
+Data() is rarely overridden, but you can override it if you want to. If you do,
+remember that the data buffer is owned by the Midi Kit. Do not attempt to
+modify or free it, lest you wish to be laughed at by other developers.
+
+\param data the MIDI event data
+\param length byte size of the data buffer
+\param atomic whether the data buffer contains a single complete MIDI event
+\param time the requested performance time of the event
+
+\sa BMidiLocalProducer::SprayData()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::NoteOff(
+ uchar channel, uchar note, uchar velocity, bigtime_t time)
+\brief Invoked when a Note Off event is received
+\sa BMidiLocalProducer::SprayNoteOff()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::NoteOn(
+ uchar channel, uchar note, uchar velocity, bigtime_t time)
+\brief Invoked when a Note On event is received
+\sa BMidiLocalProducer::SprayNoteOn()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::KeyPressure(
+ uchar channel, uchar note, uchar pressure, bigtime_t time)
+\brief Invoked when a Polyphonic Pressure (Aftertouch) event is received
+\sa BMidiLocalProducer::SprayKeyPressure()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::ControlChange(
+ uchar channel, uchar controlNumber, uchar controlValue, bigtime_t time)
+\brief Invoked when a Controller Change event is received
+\sa BMidiLocalProducer::SprayControlChange()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::ProgramChange(
+ uchar channel, uchar programNumber, bigtime_t time)
+\brief Invoked when a Program Change event is received
+\sa BMidiLocalProducer::SprayProgramChange()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::ChannelPressure(
+ uchar channel, uchar pressure, bigtime_t time)
+\brief Invoked when a Channel Pressure event is received
+\sa BMidiLocalProducer::SprayChannelPressure()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::PitchBend(
+ uchar channel, uchar lsb, uchar msb, bigtime_t time)
+\brief Invoked when a Pitch Bend event is received
+\sa BMidiLocalProducer::SprayPitchBend()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::SystemExclusive(
+ void* data, size_t length, bigtime_t time)
+\brief Invoked when a System Exclusive event is received
+
+The data does not include the sysex start and end control bytes (0xF0 and 0xF7),
+only the payload of the sysex message.
+
+The data belongs to the Midi Kit and is only valid for the duration of this
+event. You may not modify or free it.
+
+\sa BMidiLocalProducer::SpraySystemExclusive()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::SystemCommon(
+ uchar status, uchar data1, uchar data2, bigtime_t time)
+\brief Invoked when a System Common event is received
+
+Not all data bytes are used for all common events. Unused bytes are set to 0.
+
+\sa BMidiLocalProducer::SpraySystemCommon()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::SystemRealTime(
+ uchar status, bigtime_t time)
+\brief Invoked when a Real Time event is received
+\sa BMidiLocalProducer::SpraySystemRealTime()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::TempoChange(int32 beatsPerMinute, bigtime_t time)
+\brief Invoked when a Tempo Change event is received
+\sa BMidiLocalProducer::SprayTempoChange()
+*/
+
+/*!
+\fn void BMidiLocalConsumer::AllNotesOff(bool justChannel, bigtime_t time)
+\brief Not used
+*/
+
+
diff --git a/docs/user/midi2/mididefs.dox b/docs/user/midi2/mididefs.dox
deleted file mode 100644
index 0374ee59c6..0000000000
--- a/docs/user/midi2/mididefs.dox
+++ /dev/null
@@ -1,89 +0,0 @@
-/*!
-\page midi2defs Midi Kit definitions (Midi2Defs.h)
-
-\section channelmasks Channel message masks
-
-
-| B_NOTE_OFF | 0x80 |
-| B_NOTE_ON | 0x90 |
-| B_KEY_PRESSURE | 0xa0 |
-| B_CONTROL_CHANGE | 0xb0 |
-| B_PROGRAM_CHANGE | 0xc0 |
-| B_CHANNEL_PRESSURE | 0xd0 |
-| B_PITCH_BEND | 0xe0 |
-
-
-\section systemmessages System messages
-
-
-| B_SYS_EX_START | 0xf0 |
-| B_MIDI_TIME_CODE | 0xf1 |
-| B_SONG_POSITION | 0xf2 |
-| B_SONG_SELECT | 0xf3 |
-| B_CABLE_MESSAGE | 0xf5 |
-| B_TUNE_REQUEST | 0xf6 |
-| B_SYS_EX_END | 0xf7 |
-| B_TIMING_CLOCK | 0xf8 |
-| B_START | 0xfa |
-| B_CONTINUE | 0xfb |
-| B_STOP | 0xfc |
-| B_ACTIVE_SENSING | 0xfe |
-| B_SYSTEM_RESET | 0xff |
-
-
-\section controllernumbers Controller numbers
-
-
-| B_MODULATION | 0x01 |
-| B_BREATH_CONTROLLER | 0x02 |
-| B_FOOT_CONTROLLER | 0x04 |
-| B_PORTAMENTO_TIME | 0x05 |
-| B_DATA_ENTRY | 0x06 |
-| B_MAIN_VOLUME | 0x07 |
-| B_MIDI_BALANCE | 0x08 |
-| B_PAN | 0x0a |
-| B_EXPRESSION_CTRL | 0x0b |
-| B_GENERAL_CTRL_1 | 0x10 |
-| B_GENERAL_CTRL_2 | 0x11 |
-| B_GENERAL_CTRL_3 | 0x12 |
-| B_GENERAL_CTRL_4 | 0x13 |
-| B_SUSTAIN_PEDAL | 0x40 |
-| B_PORTAMENTO | 0x41 |
-| B_SOSTENUTO | 0x42 |
-| B_SOFT_PEDAL | 0x43 |
-| B_HOLD_2 | 0x45 |
-| B_GENERAL_CTRL_5 | 0x50 |
-| B_GENERAL_CTRL_6 | 0x51 |
-| B_TEMPO_CHANGE | 0x51 |
-| B_GENERAL_CTRL_7 | 0x52 |
-| B_GENERAL_CTRL_8 | 0x53 |
-| B_EFFECTS_DEPTH | 0x5b |
-| B_TREMOLO_DEPTH | 0x5c |
-| B_CHORUS_DEPTH | 0x5d |
-| B_CELESTE_DEPTH | 0x5e |
-| B_PHASER_DEPTH | 0x5f |
-| B_DATA_INCREMENT | 0x60 |
-| B_DATA_DECREMENT | 0x61 |
-| B_RESET_ALL_CONTROLLERS | 0x79 |
-| B_LOCAL_CONTROL | 0x7a |
-| B_ALL_NOTES_OFF | 0x7b |
-| B_OMNI_MODE_OFF | 0x7c |
-| B_OMNI_MODE_ON | 0x7d |
-| B_MONO_MODE_ON | 0x7e |
-| B_POLY_MODE_ON | 0x7f |
-
-
-\section bmidiop BMidiOp
-
-
-| B_MIDI_NO_OP |
-| B_MIDI_REGISTERED |
-| B_MIDI_UNREGISTERED |
-| B_MIDI_CONNECTED |
-| B_MIDI_DISCONNECTED |
-| B_MIDI_CHANGED_NAME |
-| B_MIDI_CHANGED_LATENCY |
-| B_MIDI_CHANGED_PROPERTIES |
-
-
-*/
diff --git a/docs/user/midi2/midilocalcons.dox b/docs/user/midi2/midilocalcons.dox
deleted file mode 100644
index 4ab6fbce3f..0000000000
--- a/docs/user/midi2/midilocalcons.dox
+++ /dev/null
@@ -1,232 +0,0 @@
-/*!
-\class BMidiLocalConsumer MidiConsumer.h
-\ingroup midi2
-\ingroup libmidi2
-\brief A consumer endpoint that is created by your own application
-
-If you want to create a consumer that reacts to MIDI events, you should
-subclass BMidiLocalConsumer.
-
-Each local consumer has its own thread that receives and dispatches the MIDI
-events. Whenever MIDI data arrives, the Data() hook passes the MIDI event on to
-a more specific hook function: NoteOn(), NoteOff(), SystemExclusive(), and so
-on. Calls to these hook functions are serialized -- they will never have to be
-re-entrant. They also should not be called from outside the thread that is
-invoking them.
-
-Your subclass can override any of the MIDI event hooks. BMidiLocalConsumer
-doesn't provide default implementations for them, so you don't have to call a
-hook's default implementation if you override it. For complete control, you can
-also override Data().
-
-Most hook functions take a channel argument. Even though MIDI channels are
-really numbered 1 through 16, the hook functions work with channels 0 through
-15. The performance time for the event is specified in microseconds relative to
-the system time base. A performance time that is 0 (or really any time in the
-past) means "play as soon as possible". See the \ref midi2time "introduction"
-for more information about timing and consumers.
-
-The thread driving the consumer's events is a very high priority real time
-thread. Events should be handled as quickly as possible (not counting
-snoozing). If non-time-critical computation is needed it may be wise to queue
-events up for a lower priority thread to handle them external to the main event
-thread.
-
-*/
-
-/*!
-\fn BMidiLocalConsumer::BMidiLocalConsumer(const char *name = NULL)
-\brief Creates a new local consumer endpoint
-
-The new endpoint is not visible to other applications until you Register() it.
-
-You can tell the constructor what the name of the new consumer will be. If you
-pass NULL (or use the default argument), then the consumer's name will be an
-empty string. It won't be NULL, since endpoint names cannot be NULL.
-
-There is no guarantee that the endpoint will be successfully created. For
-example, the Midi Server may not be running. Therefore, you should always call
-IsValid() after creating a new endpoint to make sure that everything went okay.
-If not, Release() the object to reclaim memory and abort gracefully.
-
-\code
-MyConsumer* cons = new MyConsumer(...);
-if (!cons->IsValid())
-{
- cons->Release();
- ...exit gracefully...
-}
-\endcode
-
-*/
-
-/*!
-\fn void BMidiLocalConsumer::SetLatency(bigtime_t latency)
-\brief Changes the published latency of the consumer
-\sa Latency()
-*/
-
-/*!
-\fn int32 BMidiLocalConsumer::GetProducerID()
-\brief Returns the ID of the producer that most recently sent a MIDI event to
-this consumer
-
-You can call this from one of the hooks to determine which producer the event
-came from.
-
-*/
-
-/*!
-\fn void BMidiLocalConsumer::SetTimeout(bigtime_t when, void* data)
-\brief Requests that the Timeout() hook will be called at some point
-
-This method asks the consumer thread to call the Timeout() hook as soon as
-possible after the timeout expires. For every call to SetTimeout(), the
-Timeout() hook is only called once. Note: the term "timeout" may be a little
-misleading; the hook will always be called, even if events are received
-in the mean time. Apparently, this facility is handy for dealing with early
-events.
-
-Note that the event thread blocks on the consumer's port as long as no events
-arrive. By default no timeout is set, and as a result the thread blocks
-forever. Your call to SetTimeout() doesn't change this. The new timeout value
-will go into effect the next time the thread tries to read from the port, i.e.
-after the first event has been received. If no event ever comes in, the
-Timeout() hook will never be called. This also means that you cannot cancel a
-timeout once you have set it. To repeat, calling SetTimeout() only takes effect
-after at least one new event has been received.
-
-\param when An absolute time that's measured against the system clock.
-
-\param data A pointer to a "cookie" that you can pass along to Timeout(). The
-data is not copied, so you must ensure that the pointer remains valid until
-Timeout() is called. You typically delete the data inside Timeout().
-
-*/
-
-/*!
-\fn void BMidiLocalConsumer::Timeout(void* data)
-\brief Hook function that is called per your own request
-\sa SetTimeout()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::Data(
- uchar* data, size_t length, bool atomic, bigtime_t time)
-\brief Invoked when raw MIDI is received
-
-What the default implementation of Data() does depends on the value of atomic.
-If atomic is true, the data received comprises a single MIDI event; i.e. one
-status byte followed by the appropriate number of data bytes and nothing else.
-In this case, Data() calls the event-specific hook function that corresponds to
-that status byte. This optimization is used by the Midi Kit to allow faster
-dispatch of events generated by the specific Spray functions from
-BMidiLocalProducer.
-
-If atomic is false, Data() ignores the MIDI event. If you want a consumer to
-handle non-atomic events, you have to override Data() and program this
-yourself. In that case, you probably also want to call the default
-implementation to handle the "normal" MIDI events.
-
-Data() is rarely overridden, but you can override it if you want to. If you do,
-remember that the data buffer is owned by the Midi Kit. Do not attempt to
-modify or free it, lest you wish to be laughed at by other developers.
-
-\param data the MIDI event data
-\param length byte size of the data buffer
-\param atomic whether the data buffer contains a single complete MIDI event
-\param time the requested performance time of the event
-
-\sa BMidiLocalProducer::SprayData()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::NoteOff(
- uchar channel, uchar note, uchar velocity, bigtime_t time)
-\brief Invoked when a Note Off event is received
-\sa BMidiLocalProducer::SprayNoteOff()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::NoteOn(
- uchar channel, uchar note, uchar velocity, bigtime_t time)
-\brief Invoked when a Note On event is received
-\sa BMidiLocalProducer::SprayNoteOn()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::KeyPressure(
- uchar channel, uchar note, uchar pressure, bigtime_t time)
-\brief Invoked when a Polyphonic Pressure (Aftertouch) event is received
-\sa BMidiLocalProducer::SprayKeyPressure()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::ControlChange(
- uchar channel, uchar controlNumber, uchar controlValue, bigtime_t time)
-\brief Invoked when a Controller Change event is received
-\sa BMidiLocalProducer::SprayControlChange()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::ProgramChange(
- uchar channel, uchar programNumber, bigtime_t time)
-\brief Invoked when a Program Change event is received
-\sa BMidiLocalProducer::SprayProgramChange()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::ChannelPressure(
- uchar channel, uchar pressure, bigtime_t time)
-\brief Invoked when a Channel Pressure event is received
-\sa BMidiLocalProducer::SprayChannelPressure()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::PitchBend(
- uchar channel, uchar lsb, uchar msb, bigtime_t time)
-\brief Invoked when a Pitch Bend event is received
-\sa BMidiLocalProducer::SprayPitchBend()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::SystemExclusive(
- void* data, size_t length, bigtime_t time)
-\brief Invoked when a System Exclusive event is received
-
-The data does not include the sysex start and end control bytes (0xF0 and 0xF7),
-only the payload of the sysex message.
-
-The data belongs to the Midi Kit and is only valid for the duration of this
-event. You may not modify or free it.
-
-\sa BMidiLocalProducer::SpraySystemExclusive()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::SystemCommon(
- uchar status, uchar data1, uchar data2, bigtime_t time)
-\brief Invoked when a System Common event is received
-
-Not all data bytes are used for all common events. Unused bytes are set to 0.
-
-\sa BMidiLocalProducer::SpraySystemCommon()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::SystemRealTime(
- uchar status, bigtime_t time)
-\brief Invoked when a Real Time event is received
-\sa BMidiLocalProducer::SpraySystemRealTime()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::TempoChange(int32 beatsPerMinute, bigtime_t time)
-\brief Invoked when a Tempo Change event is received
-\sa BMidiLocalProducer::SprayTempoChange()
-*/
-
-/*!
-\fn void BMidiLocalConsumer::AllNotesOff(bool justChannel, bigtime_t time)
-\brief Not used
-*/
diff --git a/docs/user/midi2/midilocalprod.dox b/docs/user/midi2/midilocalprod.dox
deleted file mode 100644
index 75567a6048..0000000000
--- a/docs/user/midi2/midilocalprod.dox
+++ /dev/null
@@ -1,228 +0,0 @@
-/*!
-\class BMidiLocalProducer MidiProducer.h
-\ingroup midi2
-\ingroup libmidi2
-\brief A producer endpoint that is created by your own application
-
-You create a BMidiLocalProducer if you want your application to send MIDI
-events. You use the various spray functions to send events to all connected
-consumers. If no consumers are connected to the producer, any calls to the
-spray functions are ignored.
-
-Most spray functions accept a channel argument. Even though MIDI channels are
-really numbered 1 through 16, the spray functions work with channels 0 through
-15. You can also specify the performance time for the event using the time
-argument. Specify 0 (or any time in the past) to perform the event "now", i.e.
-as soon as possible. You can also schedule events to be performed in the
-future, by passing a time such as system_time() + 5000000, which means 5
-seconds from now.
-
-Unlike BMidiLocalConsumer, which should be subclassed almost always, you hardly
-ever need to derive a class from BMidiLocalProducer. The only reason for
-subclassing is when you need to know when the producer gets connected or
-disconnected.
-
-Also unlike consumers, local producers have no thread of control directly
-associated with them. If you want to send out the MIDI events from a different
-thread, you will have to create one yourself.
-
-*/
-
-/*!
-\fn BMidiLocalProducer::BMidiLocalProducer(const char *name = NULL)
-\brief Creates a new local producer endpoint
-
-The new endpoint is not visible to other applications until you Register() it.
-
-You can tell the constructor what the name of the new producer will be. If you
-pass NULL (or use the default argument), then the producer's name will be an
-empty string. It won't be NULL, since endpoint names cannot be NULL.
-
-There is no guarantee that the endpoint will be successfully created. For
-example, the Midi Server may not be running. Therefore, you should always call
-IsValid() after creating a new endpoint to make sure that everything went okay.
-If not, Release() the object to reclaim memory and abort gracefully.
-
-\code
-BMidiLocalProducer* prod = new BMidiLocalProducer(...);
-if (!prod->IsValid())
-{
- prod->Release();
- ...exit gracefully...
-}
-\endcode
-
-*/
-
-/*!
-\fn void BMidiLocalProducer::Connected(BMidiConsumer* cons)
-\brief Invoked when a new consumer is connected to this producer
-
-Although typical notifications (i.e. from BMidiRoster's "watching" facility)
-are only sent if it is some other app that is performing the operation,
-Connected() is also called if you are making the connection yourself.
-
-If you override this hook, you don't have to call the default implementation,
-because that does nothing.
-
-\param cons The newly connected consumer. The reference count of the consumer
-object is not increased, so you should not Release() it. However, if you want
-to keep track of the consumer beyond this function, you should first Acquire()
-it, and Release() it when you are done.
-
-\sa Disconnected()
-*/
-
-/*!
-\fn void BMidiLocalProducer::Disconnected(BMidiConsumer* cons)
-\brief Invoked when a consumer is disconnected from this producer
-\sa Connected()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayData(
- void* data, size_t length, bool atomic = false, bigtime_t time = 0) const
-\brief Sends raw MIDI data downstream to all connected consumers
-
-Typically you won't have to call SprayData(); the other spray functions will do
-just fine. If you do call it, remember that you retain ownership of the data
-and that you are responsible for freeing it at some point. (Even though data is
-not declared const, the function does not change it.)
-
-With atomic set to false, you can send a MIDI message in segments (perhaps for
-a large sysex dump). However, when you do this, you are on your own. The Midi
-Kit only tags the data as being non-atomic, but offers no additional support.
-The default implementation of BMidiLocalConsumer completely ignores such
-events. To handle non-atomic MIDI data, you should override the
-BMidiLocalConsumer::Data() hook and process the MIDI event yourself. All of
-BMidiLocalProducer's other spray functions always send atomic data.
-
-\param data the MIDI event data
-\param length byte size of the data buffer
-\param atomic whether the data buffer contains a single complete MIDI event
-\param time the required performance time of the event
-
-\sa BMidiLocalConsumer::Data()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayNoteOff(
- uchar channel, uchar note, uchar velocity, bigtime_t time = 0) const
-\brief Sends a Note Off event to all connected consumers
-\sa BMidiLocalConsumer::NoteOff()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayNoteOn(
- uchar channel, uchar note, uchar velocity, bigtime_t time = 0) const
-\brief Sends a Note On event to all connected consumers
-\sa BMidiLocalConsumer::NoteOn()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayKeyPressure(
- uchar channel, uchar note, uchar pressure, bigtime_t time = 0) const
-\brief Sends a Polyphonic Pressure (Aftertouch) event to all connected
-consumers
-\sa BMidiLocalConsumer::KeyPressure()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayControlChange(
- uchar channel, uchar controlNumber, uchar controlValue,
- bigtime_t time = 0) const
-\brief Sends a Controller Change event to all connected consumers
-
-\sa \ref controllernumbers
-\sa BMidiLocalConsumer::ControlChange()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayProgramChange(
- uchar channel, uchar programNumber, bigtime_t time = 0) const
-\brief Sends a Program Change event to all connected consumers
-\sa BMidiLocalConsumer::ProgramChange()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayChannelPressure(
- uchar channel, uchar pressure, bigtime_t time = 0) const
-\brief Sends a Channel Pressure event to all connected consumers
-\sa BMidiLocalConsumer::ChannelPressure()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayPitchBend(
- uchar channel, uchar lsb, uchar msb, bigtime_t time = 0) const
-\brief Sends a Pitch Bend event to all connected consumers
-\sa BMidiLocalConsumer::PitchBend()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SpraySystemExclusive(
- void* data, size_t length, bigtime_t time = 0) const
-\brief Sends a System Exclusive event to all connected consumers
-
-You retain ownership of the data and are responsible for freeing it. Even
-though data is not declared const, the function does not change it. Even though
-the amount of data may be quite large, this function always sends sysex
-messages as an atomic block of data.
-
-\sa BMidiLocalConsumer::SystemExclusive()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SpraySystemCommon(
- uchar status, uchar data1, uchar data2, bigtime_t time = 0) const
-\brief Sends a System Common event to the connected consumers
-
-The status byte must be one of the following:
-
-
-| 0xF1 | B_MIDI_TIME_CODE | data1 only |
-| 0xF2 | B_SONG_POSITION | data1 and data2 |
-| 0xF3 | B_SONG_SELECT | data1 only |
-| 0xF5 | B_CABLE_MESSAGE | data1 only |
-| 0xF6 | B_TUNE_REQUEST | no data |
-| 0xF7 | B_SYS_EX_END | no data |
-
-
-\sa BMidiLocalConsumer::SystemCommon()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SpraySystemRealTime(
- uchar status, bigtime_t time = 0) const
-\brief Sends a Real Time event to the connected consumers
-
-The status byte must be one of the following:
-
-
-| 0xF8 | B_TIMING_CLOCK |
-| 0xFA | B_START |
-| 0xFB | B_CONTINUE |
-| 0xFC | B_STOP |
-| 0xFE | B_ACTIVE_SENSING |
-| 0xFF | B_SYSTEM_RESET |
-
-
-Because of their high priority, the MIDI specification allows real time
-messages to "interleave" with other MIDI messages. A large sysex dump, for
-example, may be interrupted by a real time event. The Midi Kit, however,
-doesn't care. If you (or another producer) have just sent a big system
-exclusive to a consumer, any following real time message will simply have to
-wait until the consumer has dealt with the sysex.
-
-\sa BMidiLocalConsumer::SystemRealTime()
-*/
-
-/*!
-\fn void BMidiLocalProducer::SprayTempoChange(
- int32 bpm, bigtime_t time = 0) const
-\brief Sends a Tempo Change event to the connected consumers.
-
-This kind of Tempo Change event is not really part of the MIDI spec, rather
-it is an extension from the SMF (Standard MIDI File) format.
-
-\sa BMidiLocalConsumer::TempoChange()
-*/
diff --git a/docs/user/midi2/midiproducer.dox b/docs/user/midi2/midiproducer.dox
index 967489d72f..11f60df989 100644
--- a/docs/user/midi2/midiproducer.dox
+++ b/docs/user/midi2/midiproducer.dox
@@ -75,3 +75,234 @@ list have their reference counts bumped, so you need to Release() them before
you delete the list or they will go all leaky on you.
*/
+
+/*!
+\class BMidiLocalProducer MidiProducer.h
+\ingroup midi2
+\ingroup libmidi2
+\brief A producer endpoint that is created by your own application
+
+You create a BMidiLocalProducer if you want your application to send MIDI
+events. You use the various spray functions to send events to all connected
+consumers. If no consumers are connected to the producer, any calls to the
+spray functions are ignored.
+
+Most spray functions accept a channel argument. Even though MIDI channels are
+really numbered 1 through 16, the spray functions work with channels 0 through
+15. You can also specify the performance time for the event using the time
+argument. Specify 0 (or any time in the past) to perform the event "now", i.e.
+as soon as possible. You can also schedule events to be performed in the
+future, by passing a time such as system_time() + 5000000, which means 5
+seconds from now.
+
+Unlike BMidiLocalConsumer, which should be subclassed almost always, you hardly
+ever need to derive a class from BMidiLocalProducer. The only reason for
+subclassing is when you need to know when the producer gets connected or
+disconnected.
+
+Also unlike consumers, local producers have no thread of control directly
+associated with them. If you want to send out the MIDI events from a different
+thread, you will have to create one yourself.
+
+*/
+
+/*!
+\fn BMidiLocalProducer::BMidiLocalProducer(const char *name = NULL)
+\brief Creates a new local producer endpoint
+
+The new endpoint is not visible to other applications until you Register() it.
+
+You can tell the constructor what the name of the new producer will be. If you
+pass NULL (or use the default argument), then the producer's name will be an
+empty string. It won't be NULL, since endpoint names cannot be NULL.
+
+There is no guarantee that the endpoint will be successfully created. For
+example, the Midi Server may not be running. Therefore, you should always call
+IsValid() after creating a new endpoint to make sure that everything went okay.
+If not, Release() the object to reclaim memory and abort gracefully.
+
+\code
+BMidiLocalProducer* prod = new BMidiLocalProducer(...);
+if (!prod->IsValid())
+{
+ prod->Release();
+ ...exit gracefully...
+}
+\endcode
+
+*/
+
+/*!
+\fn void BMidiLocalProducer::Connected(BMidiConsumer* cons)
+\brief Invoked when a new consumer is connected to this producer
+
+Although typical notifications (i.e. from BMidiRoster's "watching" facility)
+are only sent if it is some other app that is performing the operation,
+Connected() is also called if you are making the connection yourself.
+
+If you override this hook, you don't have to call the default implementation,
+because that does nothing.
+
+\param cons The newly connected consumer. The reference count of the consumer
+object is not increased, so you should not Release() it. However, if you want
+to keep track of the consumer beyond this function, you should first Acquire()
+it, and Release() it when you are done.
+
+\sa Disconnected()
+*/
+
+/*!
+\fn void BMidiLocalProducer::Disconnected(BMidiConsumer* cons)
+\brief Invoked when a consumer is disconnected from this producer
+\sa Connected()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayData(
+ void* data, size_t length, bool atomic = false, bigtime_t time = 0) const
+\brief Sends raw MIDI data downstream to all connected consumers
+
+Typically you won't have to call SprayData(); the other spray functions will do
+just fine. If you do call it, remember that you retain ownership of the data
+and that you are responsible for freeing it at some point. (Even though data is
+not declared const, the function does not change it.)
+
+With atomic set to false, you can send a MIDI message in segments (perhaps for
+a large sysex dump). However, when you do this, you are on your own. The Midi
+Kit only tags the data as being non-atomic, but offers no additional support.
+The default implementation of BMidiLocalConsumer completely ignores such
+events. To handle non-atomic MIDI data, you should override the
+BMidiLocalConsumer::Data() hook and process the MIDI event yourself. All of
+BMidiLocalProducer's other spray functions always send atomic data.
+
+\param data the MIDI event data
+\param length byte size of the data buffer
+\param atomic whether the data buffer contains a single complete MIDI event
+\param time the required performance time of the event
+
+\sa BMidiLocalConsumer::Data()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayNoteOff(
+ uchar channel, uchar note, uchar velocity, bigtime_t time = 0) const
+\brief Sends a Note Off event to all connected consumers
+\sa BMidiLocalConsumer::NoteOff()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayNoteOn(
+ uchar channel, uchar note, uchar velocity, bigtime_t time = 0) const
+\brief Sends a Note On event to all connected consumers
+\sa BMidiLocalConsumer::NoteOn()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayKeyPressure(
+ uchar channel, uchar note, uchar pressure, bigtime_t time = 0) const
+\brief Sends a Polyphonic Pressure (Aftertouch) event to all connected
+consumers
+\sa BMidiLocalConsumer::KeyPressure()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayControlChange(
+ uchar channel, uchar controlNumber, uchar controlValue,
+ bigtime_t time = 0) const
+\brief Sends a Controller Change event to all connected consumers
+
+\sa Midi2Defs.h
+\sa BMidiLocalConsumer::ControlChange()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayProgramChange(
+ uchar channel, uchar programNumber, bigtime_t time = 0) const
+\brief Sends a Program Change event to all connected consumers
+\sa BMidiLocalConsumer::ProgramChange()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayChannelPressure(
+ uchar channel, uchar pressure, bigtime_t time = 0) const
+\brief Sends a Channel Pressure event to all connected consumers
+\sa BMidiLocalConsumer::ChannelPressure()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayPitchBend(
+ uchar channel, uchar lsb, uchar msb, bigtime_t time = 0) const
+\brief Sends a Pitch Bend event to all connected consumers
+\sa BMidiLocalConsumer::PitchBend()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SpraySystemExclusive(
+ void* data, size_t length, bigtime_t time = 0) const
+\brief Sends a System Exclusive event to all connected consumers
+
+You retain ownership of the data and are responsible for freeing it. Even
+though data is not declared const, the function does not change it. Even though
+the amount of data may be quite large, this function always sends sysex
+messages as an atomic block of data.
+
+\sa BMidiLocalConsumer::SystemExclusive()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SpraySystemCommon(
+ uchar status, uchar data1, uchar data2, bigtime_t time = 0) const
+\brief Sends a System Common event to the connected consumers
+
+The status byte must be one of the following:
+
+
+| 0xF1 | B_MIDI_TIME_CODE | data1 only |
+| 0xF2 | B_SONG_POSITION | data1 and data2 |
+| 0xF3 | B_SONG_SELECT | data1 only |
+| 0xF5 | B_CABLE_MESSAGE | data1 only |
+| 0xF6 | B_TUNE_REQUEST | no data |
+| 0xF7 | B_SYS_EX_END | no data |
+
+
+\sa BMidiLocalConsumer::SystemCommon()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SpraySystemRealTime(
+ uchar status, bigtime_t time = 0) const
+\brief Sends a Real Time event to the connected consumers
+
+The status byte must be one of the following:
+
+
+| 0xF8 | B_TIMING_CLOCK |
+| 0xFA | B_START |
+| 0xFB | B_CONTINUE |
+| 0xFC | B_STOP |
+| 0xFE | B_ACTIVE_SENSING |
+| 0xFF | B_SYSTEM_RESET |
+
+
+Because of their high priority, the MIDI specification allows real time
+messages to "interleave" with other MIDI messages. A large sysex dump, for
+example, may be interrupted by a real time event. The Midi Kit, however,
+doesn't care. If you (or another producer) have just sent a big system
+exclusive to a consumer, any following real time message will simply have to
+wait until the consumer has dealt with the sysex.
+
+\sa BMidiLocalConsumer::SystemRealTime()
+*/
+
+/*!
+\fn void BMidiLocalProducer::SprayTempoChange(
+ int32 bpm, bigtime_t time = 0) const
+\brief Sends a Tempo Change event to the connected consumers.
+
+This kind of Tempo Change event is not really part of the MIDI spec, rather
+it is an extension from the SMF (Standard MIDI File) format.
+
+\sa BMidiLocalConsumer::TempoChange()
+*/
+
+
diff --git a/docs/user/midi2/midiroster.dox b/docs/user/midi2/midiroster.dox
index 8bb2424675..502ef46325 100644
--- a/docs/user/midi2/midiroster.dox
+++ b/docs/user/midi2/midiroster.dox
@@ -257,7 +257,7 @@ void MyView::MessageReceived(BMessage* msg)
}
\endcode
-\sa \ref bmidiop "The possible be:op codes (BMidiOp)"
+For the possible midi options, see #BMidiOp
*/
/*!
@@ -292,3 +292,12 @@ There is no real reason use this function, since all BMidiRoster's public
function are static.
*/
+
+/*!
+\enum BMidiOp
+\brief Defines the status codes for MIDI Server notification messages.
+
+These codes are used when you request notification as in BMidiRoster::StartWatching().
+Check against these codes to determine what is happening. See the StartWatching() method
+for a more complete description of the codes and their meaning.
+*/
diff --git a/docs/user/support/stopwatch.dox b/docs/user/support/stopwatch.dox
index 32e9b72a0b..39efb3b6d1 100644
--- a/docs/user/support/stopwatch.dox
+++ b/docs/user/support/stopwatch.dox
@@ -1,84 +1,84 @@
-/*!
-\file StopWatch.h
-\ingroup support
-\ingroup libbe
-\brief Provides the BStopWatch class.
-*/
-
-/*!
-\class BStopWatch
-\ingroup support
-\ingroup libbe
-\brief A timer class.
-
-This class provides method to time events. The interface is designed to behave like a physical stopwatch. It is especially useful for debugging certain parts of your code, since it can behave like a 'cheap' profiler.
-*/
-
-/*!
-\fn BStopWatch::BStopWatch(const char *name, bool silent)
-\brief Constructs a BStopWatch object and starts the timer.
-
-The constructor creates a clean BStopWatch object. This object
-can be given a name. As soon as the object is created, the time
-will start ticking away. This class is designed to be usuable as a primitive profiling tool.
-If you are profiling your code with this class, pass true as the
-silentparameter. Whenever the object is destroyed, information on
-the elapsed time will be streamed to standard output.
-
-\param name The name you want to give this object. You may pass NULL.
-\param silent Pass true if you want to use this object as a simple profiler.
-*/
-
-/*!
-\fn BStopWatch::~BStopWatch()
-Destroys the object. If the object was constructed with the parameter
-silent set t to false, this destructor will print
-information on the elapsed time to standard output.
-*/
-
-/*!
-\fn void BStopWatch::Resume()
-\brief Resumes the timer when it is in a suspended state.
-\sa Suspend()
-*/
-
-/*!
-\fn void BStopWatch::Suspend()
-\brief Suspends the timer.
-\sa Resume()
-*/
-
-/*!
-\fn bigtime_t BStopWatch::Lap()
-\brief Start a new lap.
-
-This method sets a lap. With the current implementation you are unable to actually
-retrieve the timings of the laps. This is only printed to the standard output when the
-object is destroyed. Thus making this tool only usuable for use when doing some
-profiling.
-
-\attention Please note that the current implementation is limited to 10 laps. The value returned
-is the time that has passed since the timer was started (and not the time that has
-passed since the last lap). Any lap call beyond the 10th lap will overwrite the last
-value. Note that if the timer is suspended, nothing happens and the method will return 0.
-*/
-
-/*!
-\fn bigtime_t BStopWatch::ElapsedTime() const
-\brief Get the elapsed time the object has counted.
-\return The elapsed time in microseconds.
-*/
-
-/*!
-\fn void BStopWatch::Reset()
-\brief Restart the timer
-
-Resets the object: it clears the start time, it clears the stored laps and it restarts
-the timer.
-*/
-
-/*!
-\fn const char *BStopWatch::Name() const
-\brief Get the name
-\return the name given to the object at creation time.
+/*!
+\file StopWatch.h
+\ingroup support
+\ingroup libbe
+\brief Provides the BStopWatch class.
+*/
+
+/*!
+\class BStopWatch
+\ingroup support
+\ingroup libbe
+\brief A timer class.
+
+This class provides method to time events. The interface is designed to behave like a physical stopwatch. It is especially useful for debugging certain parts of your code, since it can behave like a 'cheap' profiler.
+*/
+
+/*!
+\fn BStopWatch::BStopWatch(const char *name, bool silent)
+\brief Constructs a BStopWatch object and starts the timer.
+
+The constructor creates a clean BStopWatch object. This object
+can be given a name. As soon as the object is created, the time
+will start ticking away. This class is designed to be usuable as a primitive profiling tool.
+If you are profiling your code with this class, pass true as the
+silentparameter. Whenever the object is destroyed, information on
+the elapsed time will be streamed to standard output.
+
+\param name The name you want to give this object. You may pass NULL.
+\param silent Pass true if you want to use this object as a simple profiler.
+*/
+
+/*!
+\fn BStopWatch::~BStopWatch()
+Destroys the object. If the object was constructed with the parameter
+silent set t to false, this destructor will print
+information on the elapsed time to standard output.
+*/
+
+/*!
+\fn void BStopWatch::Resume()
+\brief Resumes the timer when it is in a suspended state.
+\sa Suspend()
+*/
+
+/*!
+\fn void BStopWatch::Suspend()
+\brief Suspends the timer.
+\sa Resume()
+*/
+
+/*!
+\fn bigtime_t BStopWatch::Lap()
+\brief Start a new lap.
+
+This method sets a lap. With the current implementation you are unable to actually
+retrieve the timings of the laps. This is only printed to the standard output when the
+object is destroyed. Thus making this tool only usuable for use when doing some
+profiling.
+
+\attention Please note that the current implementation is limited to 10 laps. The value returned
+is the time that has passed since the timer was started (and not the time that has
+passed since the last lap). Any lap call beyond the 10th lap will overwrite the last
+value. Note that if the timer is suspended, nothing happens and the method will return 0.
+*/
+
+/*!
+\fn bigtime_t BStopWatch::ElapsedTime() const
+\brief Get the elapsed time the object has counted.
+\return The elapsed time in microseconds.
+*/
+
+/*!
+\fn void BStopWatch::Reset()
+\brief Restart the timer
+
+Resets the object: it clears the start time, it clears the stored laps and it restarts
+the timer.
+*/
+
+/*!
+\fn const char *BStopWatch::Name() const
+\brief Get the name
+\return the name given to the object at creation time.
*/
\ No newline at end of file
diff --git a/docs/user/support/string.dox b/docs/user/support/string.dox
index 50eb2d6616..96fe84d05f 100644
--- a/docs/user/support/string.dox
+++ b/docs/user/support/string.dox
@@ -1,186 +1,995 @@
-/*!
-\file String.h
-\ingroup libbe
-\ingroup support
-\brief Implements the BString class.
-*/
-
-/*!
-\class BString
-\ingroup support
-\ingroup libbe
-\brief String class supporting common string operations.
-
-BString is a string allocation and manipulation class. The object
-takes care to allocate and free memory for you, so it will always be
-"big enough" to store your strings.
-
-\author Stefano Ceccherini
-\author
+\author Stefano Ceccherini \
+\author Oliver Tappe \
+*/
+
+/*!
+\var char* BString::_privateData
+\brief BString's storage for data
+*/
+
+/*!
+\fn BString::BString()
+\brief Creates an uninitialized BString.
+*/
+
+/*!
+\fn BString::BString(const char* str)
+\brief Creates a BString and initializes it to the given string.
+\param str Pointer to a NULL terminated string.
+*/
+
+/*!
+\fn BString::BString(const BString &string)
+\brief Creates a BString and makes it a copy of the supplied one.
+\param string the BString object to be copied.
+*/
+
+/*!
+\fn BString::BString(const char *str, int32 maxLength)
+\brief Creates a BString and initializes it to the given string.
+\param str Pointer to a NULL terminated string.
+\param maxLength The amount of characters you want to copy from the original
+string.
+*/
+
+/*!
+\fn BString::~BString()
+\brief Frees all resources associated with the object.
+
+Frees the memory allocated by the BString object.
+*/
+
+
+/*!
+\name Access Methods
+*/
+
+//! @{
+
+/*!
+\fn const char* BString::String() const
+\brief Returns a pointer to the object string, NULL terminated.
+
+Returns a pointer to the object string, guaranteed to be NULL
+terminated. You can't modify or free the pointer. Once the BString
+object is deleted, the pointer becomes invalid.
+
+\return A pointer to the object string.
+*/
+
+/*!
+\fn int32 BString::Length() const
+\brief Returns the length of the string, measured in bytes.
+\return The length of the string, measured in bytes.
+*/
+
+/*!
+\fn int32 BString::CountChars() const
+\brief Returns the length of the object measured in characters.
+
+Counts the number of UTF8 characters contained in the string.
+\return An integer which is the number of characters in the string.
+*/
+
+//! @}
+
+
+/*!
+\name Assignment Methods
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::operator=(const BString &string)
+\brief Makes a copy of the given BString object.
+\param string The string object to copy.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::operator=(const char *str)
+\brief Re-initializes the object to the given string.
+\param str Pointer to a string.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::operator=(char c)
+\brief Re-initializes the object to the given character.
+\param c The character which you want to initialize the string to.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::SetTo(const char *str, int32 maxLength)
+\brief Re-initializes the object to the given string.
+\param str Pointer to a string.
+\param maxLength Amount of characters to copy from the original string.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::SetTo(const BString &from)
+\brief Makes a copy of the given BString object.
+\param from The string object to copy.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::Adopt(BString &from)
+\brief Adopt's data of the given BString object, freeing the original object.
+\param from The string object to adopt.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::SetTo(const BString &string, int32 length)
+\brief Makes a copy of the given BString object.
+\param string The string object to copy.
+\param length Amount of characters to copy from the original BString.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::Adopt(BString &from, int32 length)
+\brief Adopt's data of the given BString object, freeing the original object.
+\param from The string object to adopt.
+\param length Amount of characters to get from the original BString.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString& BString::SetTo(char c, int32 count)
+\brief Initializes the object to a string composed by a character you specify.
+\param c The character you want to initialize the BString.
+\param count The number of characters you want the BString to be composed by.
+\return The function always returns \c *this .
+*/
+
+/*!
+\fn BString &BString::SetTo(const char *str)
+*/
+
+//! @}
+
+
+/*!
+\name Substring Copying
+*/
+
+//! @{
+
+/*!
+\fn BString &BString::CopyInto(BString &into, int32 fromOffset, int32 length) const
+\brief Copy the BString data (or part of it) into another BString.
+\param into The BString where to copy the object.
+\param fromOffset The offset (zero based) where to begin the copy
+\param length The amount of bytes to copy.
+\return This function always returns *this .
+*/
+
+/*!
+\fn void BString::CopyInto(char *into, int32 fromOffset, int32 length) const
+\brief Copy the BString data (or part of it) into the supplied buffer.
+\param into The buffer where to copy the object.
+\param fromOffset The offset (zero based) where to begin the copy
+\param length The amount of bytes to copy.
+*/
+
+//! @}
+
+/*!
+\name Appending Methods
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::operator+=(const char *str)
+\brief Appends the given string to the object.
+\param str A pointer to the string to append.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::operator+=(char c)
+\brief Appends the given character to the object.
+\param c The character to append.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString & BString::operator+=(const BString &string)
+*/
+
+/*!
+\fn BString &BString::Append(const BString &string)
+*/
+
+/*!
+\fn BString &BString::Append(const char *str)
+*/
+
+/*!
+\fn BString& BString::Append(const BString &string, int32 length)
+\brief Appends the given BString to the object.
+\param string The BString to append.
+\param length The maximum bytes to get from the original object.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Append(const char *str, int32 length)
+\brief Appends the given string to the object.
+\param str A pointer to the string to append.
+\param length The maximum bytes to get from the original string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Append(char c, int32 count)
+\brief Appends the given character to the object.
+\param c The character to append.
+\param count The number of characters to append.
+\return This function always returns *this .
+*/
+
+//! @}
+
+
+/*!
+\name Prepending Methods
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::Prepend(const char *str)
+\brief Prepends the given string to the object.
+\param str A pointer to the string to prepend.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Prepend(const BString &string)
+\brief Prepends the given BString to the object.
+\param string The BString object to prepend.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Prepend(const char *str, int32 length)
+\brief Prepends the given string to the object.
+\param str A pointer to the string to prepend.
+\param length The maximum amount of bytes to get from the string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Prepend(const BString &string, int32 len)
+\brief Prepends the given BString to the object.
+\param string The BString object to prepend.
+\param len The maximum amount of bytes to get from the BString.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Prepend(char c, int32 count)
+\brief Prepends the given character to the object.
+\param c The character to prepend.
+\param count The amount of characters to prepend.
+\return This function always returns *this .
+*/
+
+//! @}
+
+
+/*!
+\name Inserting Methods
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::Insert(const char *str, int32 pos)
+\brief Inserts the given string at the given position into the object's data.
+\param str A pointer to the string to insert.
+\param pos The offset into the BString's data where to insert the string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Insert(const char *str, int32 length, int32 pos)
+\brief Inserts the given string at the given position into the object's data.
+\param str A pointer to the string to insert.
+\param length The amount of bytes to insert.
+\param pos The offset into the BString's data where to insert the string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Insert(const char *str, int32 fromOffset, int32 length, int32 pos)
+\brief Inserts the given string at the given position into the object's data.
+\param str A pointer to the string to insert.
+\param fromOffset
+\param length The amount of bytes to insert.
+\param pos The offset into the BString's data where to insert the string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Insert(const BString &string, int32 pos)
+\brief Inserts the given BString at the given position into the object's data.
+\param string The BString object to insert.
+\param pos The offset into the BString's data where to insert the string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Insert(const BString &string, int32 length, int32 pos)
+\brief Inserts the given BString at the given position into the object's data.
+\param string The BString object to insert.
+\param length The amount of bytes to insert.
+\param pos The offset into the BString's data where to insert the string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Insert(const BString &string, int32 fromOffset, int32 length, int32 pos)
+\brief Inserts the given string at the given position into the object's data.
+\param string The BString object to insert.
+\param fromOffset
+\param length The amount of bytes to insert.
+\param pos The offset into the BString's data where to insert the string.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Insert(char c, int32 count, int32 pos)
+\brief Inserts the given character at the given position into the object's data.
+\param c The character to insert.
+\param count The amount of bytes to insert.
+\param pos The offset into the BString's data where to insert the string.
+\return This function always returns *this .
+*/
+
+//! @}
+
+
+/*!
+\name Removing Methods
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::Truncate(int32 newLength, bool lazy)
+\brief Truncate the string to the new length.
+\param newLength The new lenght of the string.
+\param lazy If true, the memory-optimisation is postponed to later
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Remove(int32 from, int32 length)
+\brief Removes some bytes, starting at the given offset
+\param from The offset from which you want to start removing
+\param length The number of bytes to remove
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::RemoveFirst(const BString &string)
+\brief Removes the first occurrence of the given BString.
+\param string The BString to remove.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::RemoveLast(const BString &string)
+\brief Removes the last occurrence of the given BString.
+\param string The BString to remove.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::RemoveAll(const BString &string)
+\brief Removes all occurrences of the given BString.
+\param string The BString to remove.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::RemoveFirst(const char *string)
+\brief Removes the first occurrence of the given string.
+\param string A pointer to the string to remove.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::RemoveLast(const char *string)
+\brief Removes the last occurrence of the given string.
+\param string A pointer to the string to remove.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::RemoveAll(const char *str)
+\brief Removes all occurrences of the given string.
+\param str A pointer to the string to remove.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::RemoveSet(const char *setOfCharsToRemove)
+\brief Removes all the characters specified.
+\param setOfCharsToRemove The set of characters to remove.
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::MoveInto(BString &into, int32 from, int32 length)
+\brief Move the BString data (or part of it) into another BString.
+\param into The BString where to move the object.
+\param from The offset (zero based) where to begin the move
+\param length The amount of bytes to move.
+\return This function always returns into.
+*/
+
+/*!
+\fn void BString::MoveInto(char *into, int32 from, int32 length)
+\brief Move the BString data (or part of it) into the given buffer.
+\param into The buffer where to move the object.
+\param from The offset (zero based) where to begin the move
+\param length The amount of bytes to move.
+*/
+
+//! @}
+
+
+/*!
+\name Comparison Methods
+*/
+
+//! @{
+
+/*!
+\fn bool BString::operator<(const char *string) const
+*/
+
+/*!
+\fn bool BString::operator<(const BString &string) const
+*/
+
+/*!
+\fn bool BString::operator<=(const char *string) const
+*/
+
+/*!
+\fn bool BString::operator<=(const BString &string) const
+*/
+
+/*!
+\fn bool BString::operator==(const char *string) const
+*/
+
+/*!
+\fn bool BString::operator==(const BString &string) const
+*/
+
+/*!
+\fn bool BString::operator>=(const char *string) const
+*/
+
+/*!
+\fn bool BString::operator>=(const BString &string) const
+*/
+
+/*!
+\fn bool BString::operator>(const char *string) const
+*/
+
+/*!
+\fn bool BString::operator>(const BString &string) const
+*/
+
+/*!
+\fn bool BString::operator!=(const BString &string) const
+*/
+
+/*!
+\fn bool BString::operator!=(const char *str) const
+*/
+
+/*!
+\fn int BString::Compare(const BString &string) const
+*/
+
+/*!
+\fn int BString::Compare(const char *string) const
+*/
+
+/*!
+\fn int BString::Compare(const BString &string, int32 n) const
+*/
+
+/*!
+\fn int BString::Compare(const char *string, int32 n) const
+*/
+
+/*!
+\fn int BString::ICompare(const BString &string) const
+*/
+
+/*!
+\fn int BString::ICompare(const char *str) const
+*/
+
+/*!
+\fn int BString::ICompare(const BString &string, int32 n) const
+*/
+
+/*!
+\fn int BString::ICompare(const char *str, int32 n) const
+*/
+
+//! @}
+
+
+/*!
+\name Searching Methods
+*/
+
+//! @{
+
+/*!
+\fn int32 BString::FindFirst(const BString &string) const
+\brief Find the first occurrence of the given BString.
+\param string The BString to search for.
+\return The offset(zero based) into the data
+ where the given BString has been found.
+*/
+
+/*!
+\fn int32 BString::FindFirst(const char *string) const
+\brief Find the first occurrence of the given string.
+\param string The string to search for.
+\return The offset(zero based) into the data
+ where the given string has been found.
+*/
+
+/*!
+\fn int32 BString::FindFirst(const BString &string, int32 fromOffset) const
+\brief Find the first occurrence of the given BString,
+ starting from the given offset.
+\param string The BString to search for.
+\param fromOffset The offset where to start the search.
+\return An integer which is the offset(zero based) into the data
+ where the given BString has been found.
+*/
+
+/*!
+\fn int32 BString::FindFirst(const char *string, int32 fromOffset) const
+\brief Find the first occurrence of the given string,
+ starting from the given offset.
+\param string The string to search for.
+\param fromOffset The offset where to start the search.
+\return The offset(zero based) into the data
+ where the given string has been found.
+*/
+
+/*!
+\fn int32 BString::FindFirst(char c) const
+\brief Find the first occurrence of the given character.
+\param c The character to search for.
+\return The offset(zero based) into the data
+ where the given character has been found.
+*/
+
+/*!
+\fn int32 BString::FindFirst(char c, int32 fromOffset) const
+\brief Find the first occurrence of the given character,
+ starting from the given offset.
+\param c The character to search for.
+\param fromOffset The offset where to start the search.
+\return The offset(zero based) into the data
+ where the given character has been found.
+*/
+
+/*!
+\fn int32 BString::FindLast(const BString &string) const
+\brief Find the last occurrence of the given BString.
+\param string The BString to search for.
+\return The offset(zero based) into the data
+ where the given BString has been found.
+*/
+
+/*!
+\fn int32 BString::FindLast(const char *string) const
+\brief Find the last occurrence of the given string.
+\param string The string to search for.
+\return The offset(zero based) into the data
+ where the given string has been found.
+*/
+
+/*!
+\fn int32 BString::FindLast(const BString &string, int32 beforeOffset) const
+\brief Find the last occurrence of the given BString,
+ starting from the given offset, and going backwards.
+\param string The BString to search for.
+\param beforeOffset The offset where to start the search.
+\return An integer which is the offset(zero based) into the data
+ where the given BString has been found.
+*/
+
+/*!
+\fn int32 BString::FindLast(const char *string, int32 beforeOffset) const
+\brief Find the last occurrence of the given string,
+ starting from the given offset, and going backwards.
+\param string The string to search for.
+\param beforeOffset The offset where to start the search.
+\return The offset(zero based) into the data
+ where the given string has been found.
+*/
+
+/*!
+\fn int32 BString::FindLast(char c) const
+\brief Find the last occurrence of the given character.
+\param c The character to search for.
+\return The offset(zero based) into the data
+ where the given character has been found.
+*/
+
+/*!
+\fn int32 BString::FindLast(char c, int32 beforeOffset) const
+\brief Find the last occurrence of the given character,
+ starting from the given offset and going backwards.
+\param c The character to search for.
+\param beforeOffset The offset where to start the search.
+\return The offset(zero based) into the data
+ where the given character has been found.
+*/
+
+/*!
+\fn int32 BString::IFindFirst(const BString &string) const
+*/
+
+/*!
+\fn int32 BString::IFindFirst(const char *string) const
+*/
+
+/*!
+\fn int32 BString::IFindFirst(const BString &string, int32 fromOffset) const
+*/
+
+/*!
+\fn int32 BString::IFindFirst(const char *string, int32 fromOffset) const
+*/
+
+/*!
+\fn int32 BString::IFindLast(const BString &string) const
+*/
+
+/*!
+\fn int32 BString::IFindLast(const char *string) const
+*/
+
+/*!
+\fn int32 BString::IFindLast(const BString &string, int32 beforeOffset) const
+*/
+
+/*!
+\fn int32 BString::IFindLast(const char *string, int32 beforeOffset) const
+*/
+
+//! @}
+
+
+/*!
+\name Replacing Methods
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::ReplaceFirst(char replaceThis, char withThis)
+*/
+
+/*!
+\fn BString& BString::ReplaceLast(char replaceThis, char withThis)
+*/
+
+/*!
+\fn BString& BString::ReplaceAll(char replaceThis, char withThis, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::Replace(char replaceThis, char withThis, int32 maxReplaceCount, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::ReplaceFirst(const char *replaceThis, const char *withThis)
+*/
+
+/*!
+\fn BString& BString::ReplaceLast(const char *replaceThis, const char *withThis)
+*/
+
+/*!
+\fn BString& BString::ReplaceAll(const char *replaceThis, const char *withThis, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::Replace(const char *replaceThis, const char *withThis, int32 maxReplaceCount, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::IReplaceFirst(char replaceThis, char withThis)
+*/
+
+/*!
+\fn BString& BString::IReplaceLast(char replaceThis, char withThis)
+*/
+
+/*!
+\fn BString& BString::IReplaceAll(char replaceThis, char withThis, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::IReplace(char replaceThis, char withThis, int32 maxReplaceCount, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::IReplaceFirst(const char *replaceThis, const char *withThis)
+*/
+
+/*!
+\fn BString& BString::IReplaceLast(const char *replaceThis, const char *withThis)
+*/
+
+/*!
+\fn BString& BString::IReplaceAll(const char *replaceThis, const char *withThis, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::IReplace(const char *replaceThis, const char *withThis, int32 maxReplaceCount, int32 fromOffset)
+*/
+
+/*!
+\fn BString& BString::ReplaceSet(const char *setOfChars, char with)
+*/
+
+/*!
+\fn BString& BString::ReplaceSet(const char *setOfChars, const char *with)
+*/
+
+// @}
+
+
+/*!
+\name Character Access
+*/
+
+//! @{
+
+/*!
+\fn char & BString::operator[](int32 index)
+\brief Returns a reference to the data at the given offset.
+
+This function can be used to read a byte or to change its value.
+There is no bounds checking though, so make sure the \c index
+you supply is valid.
+\param index The index (zero based) of the byte to get.
+\return Returns a reference to the specified byte.
+*/
+
+/*!
+\fn char BString::operator[](int32 index) const
+\brief Returns the character in the string at the given offset.
+
+This function can be used to read a byte. There is no bound checking
+though, use ByteAt() if you don't know if the \c index parameter is
+valid.
+\param index The index (zero based) of the byte to get.
+\return Returns a reference to the specified byte.
+*/
+
+/*!
+\fn char BString::ByteAt(int32 index) const
+\brief Returns the character in the string at the given offset.
+
+This function can be used to read a byte.
+\param index The index (zero based) of the byte to get.
+\return Returns a reference to the specified byte.
+*/
+
+//! @}
+
+
+/*!
+\name Low-Level Manipulation
+*/
+
+//! @{
+
+/*!
+\fn char* BString::LockBuffer(int32 maxLength)
+*/
+
+/*!
+\fn BString& BString::UnlockBuffer(int32 length)
+*/
+
+//! @}
+
+
+/*!
+\name Case Manipulation
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::ToLower()
+\brief Converts the BString to lowercase
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::ToUpper()
+\brief Converts the BString to uppercase
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::Capitalize()
+\brief Converts the first character to uppercase, rest to lowercase
+\return This function always returns *this .
+*/
+
+/*!
+\fn BString& BString::CapitalizeEachWord()
+\brief Converts the first character of every word to uppercase, rest to lowercase.
+
+Converts the first character of every "word" (series of alpabetical characters
+separated by non alphabetical characters) to uppercase, and the rest to lowercase.
+\return This function always returns *this .
+*/
+
+//! @}
+
+
+/*!
+\name Escaping and Deescaping Methods
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::CharacterEscape(const char *original, const char *setOfCharsToEscape, char escapeWith)
+*/
+
+/*!
+\fn BString& BString::CharacterEscape(const char *setOfCharsToEscape, char escapeWith)
+*/
+
+/*!
+\fn BString& BString::CharacterDeescape(const char *original, char escapeChar)
+*/
+
+/*!
+\fn BString& BString::CharacterDeescape(char escapeChar)
+*/
+
+//! @}
+
+
+/*!
+\name Simple sprintf Replacement Methods
+
+These methods may be slower than sprintf(), but they are overflow safe.
+*/
+
+//! @{
+
+/*!
+\fn BString& BString::operator<<(const char *str)
+*/
+
+/*!
+\fn BString& BString::operator<<(const BString &string)
+*/
+
+/*!
+\fn BString& BString::operator<<(char c)
+*/
+
+/*!
+\fn BString& BString::operator<<(int i)
+*/
+
+/*!
+\fn BString& BString::operator<<(unsigned int i)
+*/
+
+/*!
+\fn BString& BString::operator<<(uint32 i)
+*/
+
+/*!
+\fn BString& BString::operator<<(int32 i)
+*/
+
+/*!
+\fn BString& BString::operator<<(uint64 i)
+*/
+
+/*!
+\fn BString& BString::operator<<(int64 i)
+*/
+
+/*!
+\fn BString& BString::operator<<(float f)
+*/
+
+//! @}
+
+/************************ end of class BString, start of general operators ************/
+/*!
+\fn bool operator<(const char *str, const BString &string)
+*/
+
+/*!
+\fn bool operator<=(const char *str, const BString &string)
+*/
+
+/*!
+\fn bool operator==(const char *str, const BString &string)
+*/
+
+/*!
+\fn bool operator>(const char *str, const BString &string)
+*/
+
+/*!
+\fn bool operator>=(const char *str, const BString &string)
+*/
+
+/*!
+\fn bool operator!=(const char *str, const BString &string)
+*/
+
+/*!
+\fn int Compare(const BString &, const BString &)
+*/
+
+/*!
+\fn int ICompare(const BString &, const BString &)
+*/
+
+/*!
+\fn int Compare(const BString *, const BString *)
+*/
+
+/*!
+\fn int ICompare(const BString *, const BString *)
+*/
diff --git a/docs/user/support/typeconstants.dox b/docs/user/support/typeconstants.dox
index 4abed60952..44c8fbd146 100644
--- a/docs/user/support/typeconstants.dox
+++ b/docs/user/support/typeconstants.dox
@@ -1,129 +1,129 @@
-/*!
-\file TypeConstants.h
-\ingroup support
-*/
-
-/*!
-\var B_ANY_TYPE
-\brief General type when the exact contents is not yet known.
-*/
-
-/*!
-\var B_BOOL_TYPE
-\brief Boolean value
-*/
-
-/*!
-\var B_CHAR_TYPE
-\brief Represents the \c char type
-*/
-
-/*!
-\var B_COLOR_8_BIT_TYPE
-\brief Represents a one-byte colour
-*/
-
-/*!
-\var B_DOUBLE_TYPE
-\brief Represents the \c double type
-*/
-
-/*!
-\var B_FLOAT_TYPE
-\brief Represents the \c float type
-*/
-
-/*!
-\var B_GRAYSCALE_8_BIT_TYPE
-\brief Represents a byte-long grayscale value
-*/
-
-/*!
-\var B_INT16_TYPE
-\brief Represents a \c short type
-*/
-
-/*!
-\var B_INT32_TYPE
-\brief Represents a \c long type
-*/
-
-/*!
-\var B_INT64_TYPE
-\brief Represents a \c long \c long type
-*/
-
-/*!
-\var B_INT8_TYPE
-\brief Represents a \c char type used for integer storage
-*/
-
-
-
-// Todo: the rest of the types
-
-/*! @{
-\name System-wide MIME types for handling URLs
-*/
-
-/*!
-\var B_URL_HTTP
-\brief application/x-vnd.Be.URL.http
-*/
-
-/*!
-\var B_URL_HTTPS
-\brief application/x-vnd.Be.URL.https
-*/
-
-/*!
-\var B_URL_FTP
-\brief application/x-vnd.Be.URL.ftp
-*/
-
-/*!
-\var B_URL_GOPHER
-\brief application/x-vnd.Be.URL.gopher
-*/
-
-/*!
-\var B_URL_MAILTO
-\brief application/x-vnd.Be.URL.mailto
-*/
-
-/*!
-\var B_URL_NEWS
-\brief application/x-vnd.Be.URL.news
-*/
-
-/*!
-\var B_URL_NNTP
-\brief application/x-vnd.Be.URL.nntp
-*/
-
-/*!
-\var B_URL_TELNET
-\brief application/x-vnd.Be.URL.telnet
-*/
-
-/*!
-\var B_URL_RLOGIN
-\brief application/x-vnd.Be.URL.rlogin
-*/
-
-/*!
-\var B_URL_TN3270
-\brief application/x-vnd.Be.URL.tn3270
-*/
-
-/*!
-\var B_URL_WAIS
-\brief application/x-vnd.Be.URL.wais
-*/
-
-/*!
-\var B_URL_FILE
-\brief application/x-vnd.Be.URL.file
-*/
-
-//! @}
+/*!
+\file TypeConstants.h
+\ingroup support
+*/
+
+/*!
+\var B_ANY_TYPE
+\brief General type when the exact contents is not yet known.
+*/
+
+/*!
+\var B_BOOL_TYPE
+\brief Boolean value
+*/
+
+/*!
+\var B_CHAR_TYPE
+\brief Represents the \c char type
+*/
+
+/*!
+\var B_COLOR_8_BIT_TYPE
+\brief Represents a one-byte colour
+*/
+
+/*!
+\var B_DOUBLE_TYPE
+\brief Represents the \c double type
+*/
+
+/*!
+\var B_FLOAT_TYPE
+\brief Represents the \c float type
+*/
+
+/*!
+\var B_GRAYSCALE_8_BIT_TYPE
+\brief Represents a byte-long grayscale value
+*/
+
+/*!
+\var B_INT16_TYPE
+\brief Represents a \c short type
+*/
+
+/*!
+\var B_INT32_TYPE
+\brief Represents a \c long type
+*/
+
+/*!
+\var B_INT64_TYPE
+\brief Represents a \c long \c long type
+*/
+
+/*!
+\var B_INT8_TYPE
+\brief Represents a \c char type used for integer storage
+*/
+
+
+
+// Todo: the rest of the types
+
+/*! @{
+\name System-wide MIME types for handling URLs
+*/
+
+/*!
+\var B_URL_HTTP
+\brief application/x-vnd.Be.URL.http
+*/
+
+/*!
+\var B_URL_HTTPS
+\brief application/x-vnd.Be.URL.https
+*/
+
+/*!
+\var B_URL_FTP
+\brief application/x-vnd.Be.URL.ftp
+*/
+
+/*!
+\var B_URL_GOPHER
+\brief application/x-vnd.Be.URL.gopher
+*/
+
+/*!
+\var B_URL_MAILTO
+\brief application/x-vnd.Be.URL.mailto
+*/
+
+/*!
+\var B_URL_NEWS
+\brief application/x-vnd.Be.URL.news
+*/
+
+/*!
+\var B_URL_NNTP
+\brief application/x-vnd.Be.URL.nntp
+*/
+
+/*!
+\var B_URL_TELNET
+\brief application/x-vnd.Be.URL.telnet
+*/
+
+/*!
+\var B_URL_RLOGIN
+\brief application/x-vnd.Be.URL.rlogin
+*/
+
+/*!
+\var B_URL_TN3270
+\brief application/x-vnd.Be.URL.tn3270
+*/
+
+/*!
+\var B_URL_WAIS
+\brief application/x-vnd.Be.URL.wais
+*/
+
+/*!
+\var B_URL_FILE
+\brief application/x-vnd.Be.URL.file
+*/
+
+//! @}