diff --git a/headers/os/locale/Catalog.h b/headers/os/locale/Catalog.h index 48c1440137..c147f0c7f0 100644 --- a/headers/os/locale/Catalog.h +++ b/headers/os/locale/Catalog.h @@ -48,6 +48,8 @@ public: status_t InitCheck() const; int32 CountItems() const; + // TODO: drop this, as the lifetime of the returned object + // is indeterminate BCatalogAddOn* CatalogAddOn(); protected: @@ -58,8 +60,8 @@ protected: BCatalogAddOn* fCatalog; private: - friend class BLocale; - friend status_t get_add_on_catalog(BCatalog*, const char*); + friend class BLocale; + friend status_t get_add_on_catalog(BCatalog*, const char*); }; @@ -129,21 +131,21 @@ private: /* example: #define B_TRANSLATE_CONTEXT "MyDecentApp-Menu" - static const char *choices[] = { + static const char* choices[] = { B_TRANSLATE_MARK("left"), B_TRANSLATE_MARK("right"), B_TRANSLATE_MARK("up"), B_TRANSLATE_MARK("down") }; - void MyClass::AddChoices(BMenu *menu) { - for (char **ch = choices; *ch; ch++) { + void MyClass::AddChoices(BMenu* menu) { + for (char** ch = choices; *ch != '\0'; ++ch) { menu->AddItem( new BMenuItem( B_TRANSLATE(*ch), new BMessage(...) ) - ) + ); } } */ @@ -331,8 +333,8 @@ protected: virtual void UpdateFingerprint(); protected: - friend class BCatalog; - friend status_t get_add_on_catalog(BCatalog*, const char*); + friend class BCatalog; + friend status_t get_add_on_catalog(BCatalog*, const char*); status_t fInitCheck; BString fSignature; @@ -344,12 +346,13 @@ protected: // every catalog-add-on should export these symbols... // ...the function that instantiates a catalog for this add-on-type... extern "C" -BCatalogAddOn *instantiate_catalog(const char *signature, - const char *language, uint32 fingerprint); +BCatalogAddOn* instantiate_catalog(const char* signature, const char* language, + uint32 fingerprint); + // ...the function that creates an empty catalog for this add-on-type... extern "C" -BCatalogAddOn *create_catalog(const char *signature, - const char *language); +BCatalogAddOn* create_catalog(const char* signature, const char* language); + // ...and the priority which will be used to order the catalog-add-ons: extern uint8 gCatalogAddOnPriority; @@ -357,76 +360,22 @@ extern uint8 gCatalogAddOnPriority; /* * BCatalog - inlines for trivial accessors: */ -inline status_t -BCatalog::GetSignature(BString *sig) -{ - if (!sig) - return B_BAD_VALUE; - if (!fCatalog) - return B_NO_INIT; - *sig = fCatalog->fSignature; - return B_OK; -} - - -inline status_t -BCatalog::GetLanguage(BString *lang) -{ - if (!lang) - return B_BAD_VALUE; - if (!fCatalog) - return B_NO_INIT; - *lang = fCatalog->fLanguageName; - return B_OK; -} - - -inline status_t -BCatalog::GetFingerprint(uint32 *fp) -{ - if (!fp) - return B_BAD_VALUE; - if (!fCatalog) - return B_NO_INIT; - *fp = fCatalog->fFingerprint; - return B_OK; -} - - -inline const char * -BCatalog::GetNoAutoCollectString(const char *string, const char *context, - const char *comment) +inline const char* +BCatalog::GetNoAutoCollectString(const char* string, const char* context, + const char* comment) { return GetString(string, context, comment); } -inline const char * +inline const char* BCatalog::GetNoAutoCollectString(uint32 id) { return GetString(id); } -inline status_t -BCatalog::InitCheck() const -{ - return fCatalog - ? fCatalog->InitCheck() - : B_NO_INIT; -} - - -inline int32 -BCatalog::CountItems() const -{ - if (!fCatalog) - return 0; - return fCatalog->CountItems(); -} - - -inline BCatalogAddOn * +inline BCatalogAddOn* BCatalog::CatalogAddOn() { return fCatalog; @@ -436,16 +385,15 @@ BCatalog::CatalogAddOn() /* * BCatalogAddOn - inlines for trivial accessors: */ -inline BCatalogAddOn * +inline BCatalogAddOn* BCatalogAddOn::Next() { return fNext; } -inline const char * -BCatalogAddOn::MarkForTranslation(const char *str, - const char * /*ctx __attribute__ ((unused))*/, - const char * /*cmt __attribute__ ((unused))*/) +inline const char* +BCatalogAddOn::MarkForTranslation(const char* str, const char* /* context */, + const char* /* comment */) { return str; } diff --git a/src/kits/locale/Catalog.cpp b/src/kits/locale/Catalog.cpp index d22f98697f..b7740d790a 100644 --- a/src/kits/locale/Catalog.cpp +++ b/src/kits/locale/Catalog.cpp @@ -26,11 +26,11 @@ BCatalog::BCatalog() } -BCatalog::BCatalog(const entry_ref &catalogOwner, const char *language, +BCatalog::BCatalog(const entry_ref& catalogOwner, const char* language, uint32 fingerprint) { - fCatalog = MutableLocaleRoster::Default()->LoadCatalog(catalogOwner, language, - fingerprint); + fCatalog = MutableLocaleRoster::Default()->LoadCatalog(catalogOwner, + language, fingerprint); } @@ -40,65 +40,116 @@ BCatalog::~BCatalog() } -const char * -BCatalog::GetString(const char *string, const char *context, - const char *comment) +const char* +BCatalog::GetString(const char* string, const char* context, + const char* comment) { - const char *translated; + const char* translated; for (BCatalogAddOn* cat = fCatalog; cat != NULL; cat = cat->fNext) { translated = cat->GetString(string, context, comment); - if (translated) + if (translated != NULL) return translated; } + return string; } -const char * +const char* BCatalog::GetString(uint32 id) { - const char *translated; + const char* translated; for (BCatalogAddOn* cat = fCatalog; cat != NULL; cat = cat->fNext) { translated = cat->GetString(id); - if (translated) + if (translated != NULL) return translated; } + return ""; } status_t -BCatalog::GetData(const char *name, BMessage *msg) +BCatalog::GetData(const char* name, BMessage* msg) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + status_t res; for (BCatalogAddOn* cat = fCatalog; cat != NULL; cat = cat->fNext) { res = cat->GetData(name, msg); if (res != B_NAME_NOT_FOUND && res != EOPNOTSUPP) return res; // return B_OK if found, or specific error-code } + return B_NAME_NOT_FOUND; } status_t -BCatalog::GetData(uint32 id, BMessage *msg) +BCatalog::GetData(uint32 id, BMessage* msg) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + status_t res; for (BCatalogAddOn* cat = fCatalog; cat != NULL; cat = cat->fNext) { res = cat->GetData(id, msg); if (res != B_NAME_NOT_FOUND && res != EOPNOTSUPP) return res; // return B_OK if found, or specific error-code } + return B_NAME_NOT_FOUND; } status_t -BCatalog::SetCatalog(const entry_ref &catalogOwner, uint32 fingerprint) +BCatalog::GetSignature(BString* sig) +{ + if (sig == NULL) + return B_BAD_VALUE; + + if (fCatalog == NULL) + return B_NO_INIT; + + *sig = fCatalog->fSignature; + + return B_OK; +} + + +status_t +BCatalog::GetLanguage(BString* lang) +{ + if (lang == NULL) + return B_BAD_VALUE; + + if (fCatalog == NULL) + return B_NO_INIT; + + *lang = fCatalog->fLanguageName; + + return B_OK; +} + + +status_t +BCatalog::GetFingerprint(uint32* fp) +{ + if (fp == NULL) + return B_BAD_VALUE; + + if (fCatalog == NULL) + return B_NO_INIT; + + *fp = fCatalog->fFingerprint; + + return B_OK; +} + + +status_t +BCatalog::SetCatalog(const entry_ref& catalogOwner, uint32 fingerprint) { // This is not thread safe. It is used only in ReadOnlyBootPrompt and should // not do harm there, but not sure what to do about it… @@ -110,8 +161,22 @@ BCatalog::SetCatalog(const entry_ref &catalogOwner, uint32 fingerprint) } +status_t +BCatalog::InitCheck() const +{ + return fCatalog != NULL ? fCatalog->InitCheck() : B_NO_INIT; +} + + +int32 +BCatalog::CountItems() const +{ + return fCatalog != NULL ? fCatalog->CountItems() : 0; +} + + //#pragma mark - BCatalogAddOn -BCatalogAddOn::BCatalogAddOn(const char *signature, const char *language, +BCatalogAddOn::BCatalogAddOn(const char* signature, const char* language, uint32 fingerprint) : fInitCheck(B_NO_INIT), @@ -154,29 +219,29 @@ BCatalogAddOn::CanHaveData() const status_t -BCatalogAddOn::GetData(const char *name, BMessage *msg) +BCatalogAddOn::GetData(const char* name, BMessage* msg) { return EOPNOTSUPP; } status_t -BCatalogAddOn::GetData(uint32 id, BMessage *msg) +BCatalogAddOn::GetData(uint32 id, BMessage* msg) { return EOPNOTSUPP; } status_t -BCatalogAddOn::SetString(const char *string, const char *translated, - const char *context, const char *comment) +BCatalogAddOn::SetString(const char* string, const char* translated, + const char* context, const char* comment) { return EOPNOTSUPP; } status_t -BCatalogAddOn::SetString(int32 id, const char *translated) +BCatalogAddOn::SetString(int32 id, const char* translated) { return EOPNOTSUPP; } @@ -190,56 +255,56 @@ BCatalogAddOn::CanWriteData() const status_t -BCatalogAddOn::SetData(const char *name, BMessage *msg) +BCatalogAddOn::SetData(const char* name, BMessage* msg) { return EOPNOTSUPP; } status_t -BCatalogAddOn::SetData(uint32 id, BMessage *msg) +BCatalogAddOn::SetData(uint32 id, BMessage* msg) { return EOPNOTSUPP; } status_t -BCatalogAddOn::ReadFromFile(const char *path) +BCatalogAddOn::ReadFromFile(const char* path) { return EOPNOTSUPP; } status_t -BCatalogAddOn::ReadFromAttribute(const entry_ref &appOrAddOnRef) +BCatalogAddOn::ReadFromAttribute(const entry_ref& appOrAddOnRef) { return EOPNOTSUPP; } status_t -BCatalogAddOn::ReadFromResource(const entry_ref &appOrAddOnRef) +BCatalogAddOn::ReadFromResource(const entry_ref& appOrAddOnRef) { return EOPNOTSUPP; } status_t -BCatalogAddOn::WriteToFile(const char *path) +BCatalogAddOn::WriteToFile(const char* path) { return EOPNOTSUPP; } status_t -BCatalogAddOn::WriteToAttribute(const entry_ref &appOrAddOnRef) +BCatalogAddOn::WriteToAttribute(const entry_ref& appOrAddOnRef) { return EOPNOTSUPP; } status_t -BCatalogAddOn::WriteToResource(const entry_ref &appOrAddOnRef) +BCatalogAddOn::WriteToResource(const entry_ref& appOrAddOnRef) { return EOPNOTSUPP; } @@ -258,7 +323,7 @@ BCatalogAddOn::CountItems() const void -BCatalogAddOn::SetNext(BCatalogAddOn *next) +BCatalogAddOn::SetNext(BCatalogAddOn* next) { fNext = next; } @@ -266,8 +331,8 @@ BCatalogAddOn::SetNext(BCatalogAddOn *next) //#pragma mark - EditableCatalog namespace BPrivate { -EditableCatalog::EditableCatalog(const char *type, const char *signature, - const char *language) +EditableCatalog::EditableCatalog(const char* type, const char* signature, + const char* language) { fCatalog = MutableLocaleRoster::Default()->CreateCatalog(type, signature, language); @@ -280,20 +345,22 @@ EditableCatalog::~EditableCatalog() status_t -EditableCatalog::SetString(const char *string, const char *translated, - const char *context, const char *comment) +EditableCatalog::SetString(const char* string, const char* translated, + const char* context, const char* comment) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->SetString(string, translated, context, comment); } status_t -EditableCatalog::SetString(int32 id, const char *translated) +EditableCatalog::SetString(int32 id, const char* translated) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->SetString(id, translated); } @@ -301,87 +368,96 @@ EditableCatalog::SetString(int32 id, const char *translated) bool EditableCatalog::CanWriteData() const { - if (!fCatalog) + if (fCatalog == NULL) return false; + return fCatalog->CanWriteData(); } status_t -EditableCatalog::SetData(const char *name, BMessage *msg) +EditableCatalog::SetData(const char* name, BMessage* msg) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->SetData(name, msg); } status_t -EditableCatalog::SetData(uint32 id, BMessage *msg) +EditableCatalog::SetData(uint32 id, BMessage* msg) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->SetData(id, msg); } status_t -EditableCatalog::ReadFromFile(const char *path) +EditableCatalog::ReadFromFile(const char* path) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->ReadFromFile(path); } status_t -EditableCatalog::ReadFromAttribute(const entry_ref &appOrAddOnRef) +EditableCatalog::ReadFromAttribute(const entry_ref& appOrAddOnRef) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->ReadFromAttribute(appOrAddOnRef); } status_t -EditableCatalog::ReadFromResource(const entry_ref &appOrAddOnRef) +EditableCatalog::ReadFromResource(const entry_ref& appOrAddOnRef) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->ReadFromResource(appOrAddOnRef); } status_t -EditableCatalog::WriteToFile(const char *path) +EditableCatalog::WriteToFile(const char* path) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->WriteToFile(path); } status_t -EditableCatalog::WriteToAttribute(const entry_ref &appOrAddOnRef) +EditableCatalog::WriteToAttribute(const entry_ref& appOrAddOnRef) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->WriteToAttribute(appOrAddOnRef); } status_t -EditableCatalog::WriteToResource(const entry_ref &appOrAddOnRef) +EditableCatalog::WriteToResource(const entry_ref& appOrAddOnRef) { - if (!fCatalog) + if (fCatalog == NULL) return B_NO_INIT; + return fCatalog->WriteToResource(appOrAddOnRef); } void EditableCatalog::MakeEmpty() { - if (fCatalog) + if (fCatalog == NULL) fCatalog->MakeEmpty(); }