From 089b7ad4c6c63409b1751d0cb77d00c30851daec Mon Sep 17 00:00:00 2001 From: Niels Sascha Reedijk Date: Fri, 29 Dec 2006 00:26:34 +0000 Subject: [PATCH] Some more work on the Doxygen version of the haiku_book. I will keep working on the Docbook version, but as I'm still not completely comfortable with that as final choice, I'm playing around with this as well. The String.cpp file contained doxygen documentation for almost all methods, I copied those to a new file (string.dox) and grouped them accordingly. (Done because Axel is absolutely against in-header or in-source docs) Integrated the BMidiConsumer and BMidiLocalConsumer class into the same file (like I did now to the producers), since I think it's better to keep a 1:1 relation with the headers. Removed the mididefs.dox file and replaced it with the midi2/Midi2Defs.dox file which actually documents the Midi2Defs.h file, rather than contain a custom page that was somewhat hard to find. Please see http://www.myhouserules.nl/haiku_book/index.html for a generated book from the current source. I actually quite like the output so far, though I'm aware of the fact that I needed to perform some tricks to let Doxygen get to this point. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19651 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- docs/user/Doxyfile | 16 +- docs/user/midi2/Midi2Defs.dox | 279 +++++++ docs/user/midi2/midi2intro.dox | 2 +- docs/user/midi2/midiconsumer.dox | 235 ++++++ docs/user/midi2/mididefs.dox | 89 -- docs/user/midi2/midilocalcons.dox | 232 ------ docs/user/midi2/midilocalprod.dox | 228 ------ docs/user/midi2/midiproducer.dox | 231 ++++++ docs/user/midi2/midiroster.dox | 11 +- docs/user/support/stopwatch.dox | 166 ++-- docs/user/support/string.dox | 1181 ++++++++++++++++++++++----- docs/user/support/typeconstants.dox | 258 +++--- 12 files changed, 1971 insertions(+), 957 deletions(-) create mode 100644 docs/user/midi2/Midi2Defs.dox delete mode 100644 docs/user/midi2/mididefs.dox delete mode 100644 docs/user/midi2/midilocalcons.dox delete mode 100644 docs/user/midi2/midilocalprod.dox 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_OFF0x80
B_NOTE_ON0x90
B_KEY_PRESSURE0xa0
B_CONTROL_CHANGE0xb0
B_PROGRAM_CHANGE0xc0
B_CHANNEL_PRESSURE0xd0
B_PITCH_BEND0xe0
- -\section systemmessages System messages - - - - - - - - - - - - - - - -
B_SYS_EX_START0xf0
B_MIDI_TIME_CODE0xf1
B_SONG_POSITION0xf2
B_SONG_SELECT0xf3
B_CABLE_MESSAGE0xf5
B_TUNE_REQUEST0xf6
B_SYS_EX_END0xf7
B_TIMING_CLOCK0xf8
B_START0xfa
B_CONTINUE0xfb
B_STOP0xfc
B_ACTIVE_SENSING0xfe
B_SYSTEM_RESET0xff
- -\section controllernumbers Controller numbers - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
B_MODULATION0x01
B_BREATH_CONTROLLER0x02
B_FOOT_CONTROLLER0x04
B_PORTAMENTO_TIME0x05
B_DATA_ENTRY0x06
B_MAIN_VOLUME0x07
B_MIDI_BALANCE0x08
B_PAN0x0a
B_EXPRESSION_CTRL0x0b
B_GENERAL_CTRL_10x10
B_GENERAL_CTRL_20x11
B_GENERAL_CTRL_30x12
B_GENERAL_CTRL_40x13
B_SUSTAIN_PEDAL0x40
B_PORTAMENTO0x41
B_SOSTENUTO0x42
B_SOFT_PEDAL0x43
B_HOLD_20x45
B_GENERAL_CTRL_50x50
B_GENERAL_CTRL_60x51
B_TEMPO_CHANGE0x51
B_GENERAL_CTRL_70x52
B_GENERAL_CTRL_80x53
B_EFFECTS_DEPTH0x5b
B_TREMOLO_DEPTH0x5c
B_CHORUS_DEPTH0x5d
B_CELESTE_DEPTH0x5e
B_PHASER_DEPTH0x5f
B_DATA_INCREMENT0x60
B_DATA_DECREMENT0x61
B_RESET_ALL_CONTROLLERS0x79
B_LOCAL_CONTROL0x7a
B_ALL_NOTES_OFF0x7b
B_OMNI_MODE_OFF0x7c
B_OMNI_MODE_ON0x7d
B_MONO_MODE_ON0x7e
B_POLY_MODE_ON0x7f
- -\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: - - - - - - - - -
0xF1B_MIDI_TIME_CODEdata1 only
0xF2B_SONG_POSITIONdata1 and data2
0xF3B_SONG_SELECTdata1 only
0xF5B_CABLE_MESSAGEdata1 only
0xF6B_TUNE_REQUESTno data
0xF7B_SYS_EX_ENDno 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: - - - - - - - - -
0xF8B_TIMING_CLOCK
0xFAB_START
0xFBB_CONTINUE
0xFCB_STOP
0xFEB_ACTIVE_SENSING
0xFFB_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: + + + + + + + + +
0xF1B_MIDI_TIME_CODEdata1 only
0xF2B_SONG_POSITIONdata1 and data2
0xF3B_SONG_SELECTdata1 only
0xF5B_CABLE_MESSAGEdata1 only
0xF6B_TUNE_REQUESTno data
0xF7B_SYS_EX_ENDno 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: + + + + + + + + +
0xF8B_TIMING_CLOCK
0xFAB_START
0xFBB_CONTINUE
0xFCB_STOP
0xFEB_ACTIVE_SENSING
0xFFB_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 +*/ + +//! @}