diff --git a/headers/private/textencoding/CharacterSetRoster.h b/headers/private/textencoding/CharacterSetRoster.h new file mode 100644 index 0000000000..bfe100b89b --- /dev/null +++ b/headers/private/textencoding/CharacterSetRoster.h @@ -0,0 +1,91 @@ +#ifndef CHARACTER_SET_ROSTER_H +#define CHARACTER_SET_ROSTER_H + +#include +#include + +namespace BPrivate { + +/** + * @file BCharacterSetRoster.h + * @author Andrew Bachmann + * @brief Defines BCharacterSetRoster + * + * @see BCharacterSet.h + **/ + +class BCharacterSet; + +class BCharacterSetRoster { + /** + * @class BCharacterSetRoster + * @brief An object for finding or enumerating character sets + **/ +public: + /** + * @brief initialize the roster to the first character set + **/ + BCharacterSetRoster(); + virtual ~BCharacterSetRoster(); + + /** + * @brief get the next available character set + * @return B_NO_ERROR if it's valid, B_BAD_VALUE if it is not + **/ + status_t GetNextCharacterSet(BCharacterSet * charset); + /** + * @brief resets the iterator to the first character set + * @return B_NO_ERROR if it's valid, B_BAD_VALUE if it is not + **/ + status_t RewindCharacterSets(); + + /** + * @brief register BMessenger to receive notifications of character set events + * @return B_NO_ERROR if watching was okay, B_BAD_VALUE if poorly formed BMessenger + **/ + static status_t StartWatching(BMessenger target); + /** + * @brief stop sending notifications to BMessenger + * @return B_NO_ERROR if stopping went okay, B_BAD_VALUE if poorly formed BMessenger + **/ + static status_t StopWatching(BMessenger target); + + /** + * @brief return the character set with the given font id, or NULL if none exists + * This function executes in constant time. + * @return the character set with the given font id, or NULL if none exists + **/ + static const BCharacterSet * GetCharacterSetByFontID(uint32 id); + /** + * @brief return the character set with the given conversion id, or NULL if none exists + * This function executes in constant time. + * @return the character set with the given conversion id, or NULL if none exists + **/ + static const BCharacterSet * GetCharacterSetByConversionID(uint32 id); + /** + * @brief return the character set with the given MIB enum, or NULL if none exists + * This function executes in constant time. + * @return the character set with the given MIB enum, or NULL if none exists + **/ + static const BCharacterSet * GetCharacterSetByMIBenum(uint32 MIBenum); + + /** + * @brief return the character set with the given print name, or NULL if none exists + * This function executes in linear time. + * @return the character set with the given print name, or NULL if none exists + **/ + static const BCharacterSet * FindCharacterSetByPrintName(char * name); + /** + * @brief return the character set with the given name, or NULL if none exists + * This function will match aliases as well. + * This function executes in linear time. + * @return the character set with the given name, or NULL if none exists + **/ + static const BCharacterSet * FindCharacterSetByName(char * name); +private: + uint32 index; //! the state variable for iteration +}; + +} + +#endif CHARACTER_SET_ROSTER_H