diff --git a/headers/os/locale/Catalog.h b/headers/os/locale/Catalog.h index bdf178b019..0eef2859eb 100644 --- a/headers/os/locale/Catalog.h +++ b/headers/os/locale/Catalog.h @@ -50,10 +50,6 @@ public: status_t InitCheck() const; int32 CountItems() const; - // TODO: drop this, as the lifetime of the returned object - // is indeterminate - BCatalogAddOn* CatalogAddOn(); - protected: BCatalog(const BCatalog&); const BCatalog& operator= (const BCatalog&); @@ -378,13 +374,6 @@ BCatalog::GetNoAutoCollectString(uint32 id) } -inline BCatalogAddOn* -BCatalog::CatalogAddOn() -{ - return fCatalog; -} - - /* * BCatalogAddOn - inlines for trivial accessors: */ @@ -409,50 +398,4 @@ BCatalogAddOn::MarkForTranslation(int32 id) } -// TODO: does not belong here, either -namespace BPrivate { - - -class EditableCatalog : public BCatalog { -public: - EditableCatalog(const char* type, - const char* signature, - const char* language); - virtual ~EditableCatalog(); - - status_t SetString(const char* string, - const char* translated, - const char* context = NULL, - const char* comment = NULL); - status_t SetString(int32 id, const char* translated); - - bool CanWriteData() const; - status_t SetData(const char* name, BMessage* msg); - status_t SetData(uint32 id, BMessage* msg); - - status_t ReadFromFile(const char* path = NULL); - status_t ReadFromAttribute( - const entry_ref& appOrAddOnRef); - status_t ReadFromResource( - const entry_ref& appOrAddOnRef); - status_t WriteToFile(const char* path = NULL); - status_t WriteToAttribute( - const entry_ref& appOrAddOnRef); - status_t WriteToResource( - const entry_ref& appOrAddOnRef); - - void MakeEmpty(); - -private: - EditableCatalog(); - EditableCatalog(const EditableCatalog& other); - const EditableCatalog& operator=(const EditableCatalog& other); - // hide assignment, default-, and - // copy-constructor -}; - - -} // namespace BPrivate - - #endif /* _CATALOG_H_ */ diff --git a/headers/private/locale/EditableCatalog.h b/headers/private/locale/EditableCatalog.h new file mode 100644 index 0000000000..ad8bb31fae --- /dev/null +++ b/headers/private/locale/EditableCatalog.h @@ -0,0 +1,63 @@ +/* + * Copyright 2003-2012, Haiku, Inc. + * Distributed under the terms of the MIT License. + */ +#ifndef _EDITABLE_CATALOG_H_ +#define _EDITABLE_CATALOG_H_ + + +#include + + +class BMessage; +struct entry_ref; + + +namespace BPrivate { + + +class EditableCatalog : public BCatalog { +public: + EditableCatalog(const char* type, + const char* signature, + const char* language); + virtual ~EditableCatalog(); + + status_t SetString(const char* string, + const char* translated, + const char* context = NULL, + const char* comment = NULL); + status_t SetString(int32 id, const char* translated); + + bool CanWriteData() const; + status_t SetData(const char* name, BMessage* msg); + status_t SetData(uint32 id, BMessage* msg); + + status_t ReadFromFile(const char* path = NULL); + status_t ReadFromAttribute( + const entry_ref& appOrAddOnRef); + status_t ReadFromResource( + const entry_ref& appOrAddOnRef); + status_t WriteToFile(const char* path = NULL); + status_t WriteToAttribute( + const entry_ref& appOrAddOnRef); + status_t WriteToResource( + const entry_ref& appOrAddOnRef); + + void MakeEmpty(); + + BCatalogAddOn* CatalogAddOn(); + +private: + EditableCatalog(); + EditableCatalog(const EditableCatalog& other); + const EditableCatalog& operator=(const EditableCatalog& other); + // hide assignment, default-, and + // copy-constructor +}; + + +} // namespace BPrivate + + +#endif /* _EDITABLE_CATALOG_H_ */ diff --git a/headers/private/locale/HashMapCatalog.h b/headers/private/locale/HashMapCatalog.h index fd5b27fdee..9ddc8d5178 100644 --- a/headers/private/locale/HashMapCatalog.h +++ b/headers/private/locale/HashMapCatalog.h @@ -60,10 +60,6 @@ class CatKey { uint32 GetHashCode() const { return fHashVal; } }; -} // namespace BPrivate - - -namespace BPrivate { class BHashMapCatalog: public BCatalogAddOn { protected: @@ -200,6 +196,4 @@ BHashMapCatalog::GetWalker(CatWalker *walker) } // namespace BPrivate -using namespace BPrivate; - #endif // _HASH_MAP_CATALOG_H_ diff --git a/src/bin/locale/collectcatkeys.cpp b/src/bin/locale/collectcatkeys.cpp index 6fd00bce74..06156c8d6c 100644 --- a/src/bin/locale/collectcatkeys.cpp +++ b/src/bin/locale/collectcatkeys.cpp @@ -13,14 +13,16 @@ #include #include -#include -using namespace BPrivate; #include #include #include "RegExp.h" #include #include +#include + +using BPrivate::EditableCatalog; + bool showKeys = false; bool showSummary = false; @@ -31,8 +33,6 @@ const char *catalogSig = NULL; const char *catalogLang = "English"; BString rxString("B_CATKEY\\s*"); - - BString str, ctx, cmt; bool haveID; int32 id; diff --git a/src/bin/locale/dumpcatalog.cpp b/src/bin/locale/dumpcatalog.cpp index 36330fd8f5..6ba9bf8a8b 100644 --- a/src/bin/locale/dumpcatalog.cpp +++ b/src/bin/locale/dumpcatalog.cpp @@ -6,11 +6,15 @@ #include #include -#include -#include #include #include +#include +#include + +using BPrivate::EditableCatalog; + + void usage() { @@ -57,8 +61,8 @@ main(int argc, char **argv) while (!walker.AtEnd()) { const CatKey &key(walker.GetKey()); key.GetStringParts(&str, &ctx, &cmt); - printf("Hash:\t\t%lu\nKey:\t\t<%s:%s:%s>\nTranslation:\t%s\n-----\n", - key.fHashVal, str.String(), ctx.String(), cmt.String(), + printf("Hash:\t\t%lu\nKey:\t\t<%s:%s:%s>\nTranslation:\t%s\n-----\n", + key.fHashVal, str.String(), ctx.String(), cmt.String(), walker.GetValue()); walker.Next(); } diff --git a/src/bin/locale/linkcatkeys.cpp b/src/bin/locale/linkcatkeys.cpp index c762362888..2b222c2f25 100644 --- a/src/bin/locale/linkcatkeys.cpp +++ b/src/bin/locale/linkcatkeys.cpp @@ -7,17 +7,19 @@ #include #include -#include #include #include #include +#include #include #include #include +using BPrivate::EditableCatalog; using std::vector; + void usage() { diff --git a/src/kits/locale/Catalog.cpp b/src/kits/locale/Catalog.cpp index 2d51a5b55d..a80c85478b 100644 --- a/src/kits/locale/Catalog.cpp +++ b/src/kits/locale/Catalog.cpp @@ -370,139 +370,3 @@ BCatalogAddOn::SetNext(BCatalogAddOn* next) { fNext = next; } - - -//#pragma mark - EditableCatalog -namespace BPrivate { -EditableCatalog::EditableCatalog(const char* type, const char* signature, - const char* language) -{ - fCatalog = MutableLocaleRoster::Default()->CreateCatalog(type, signature, - language); -} - - -EditableCatalog::~EditableCatalog() -{ -} - - -status_t -EditableCatalog::SetString(const char* string, const char* translated, - const char* context, const char* comment) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->SetString(string, translated, context, comment); -} - - -status_t -EditableCatalog::SetString(int32 id, const char* translated) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->SetString(id, translated); -} - - -bool -EditableCatalog::CanWriteData() const -{ - if (fCatalog == NULL) - return false; - - return fCatalog->CanWriteData(); -} - - -status_t -EditableCatalog::SetData(const char* name, BMessage* msg) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->SetData(name, msg); -} - - -status_t -EditableCatalog::SetData(uint32 id, BMessage* msg) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->SetData(id, msg); -} - - -status_t -EditableCatalog::ReadFromFile(const char* path) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->ReadFromFile(path); -} - - -status_t -EditableCatalog::ReadFromAttribute(const entry_ref& appOrAddOnRef) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->ReadFromAttribute(appOrAddOnRef); -} - - -status_t -EditableCatalog::ReadFromResource(const entry_ref& appOrAddOnRef) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->ReadFromResource(appOrAddOnRef); -} - - -status_t -EditableCatalog::WriteToFile(const char* path) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->WriteToFile(path); -} - - -status_t -EditableCatalog::WriteToAttribute(const entry_ref& appOrAddOnRef) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->WriteToAttribute(appOrAddOnRef); -} - - -status_t -EditableCatalog::WriteToResource(const entry_ref& appOrAddOnRef) -{ - if (fCatalog == NULL) - return B_NO_INIT; - - return fCatalog->WriteToResource(appOrAddOnRef); -} - - -void EditableCatalog::MakeEmpty() -{ - if (fCatalog == NULL) - fCatalog->MakeEmpty(); -} - - -} // namespace BPrivate diff --git a/src/kits/locale/EditableCatalog.cpp b/src/kits/locale/EditableCatalog.cpp new file mode 100644 index 0000000000..79263bfee3 --- /dev/null +++ b/src/kits/locale/EditableCatalog.cpp @@ -0,0 +1,154 @@ +/* + * Copyright 2003-2004, Axel Dörfler, axeld@pinc-software.de + * Copyright 2003-2004,2012, Oliver Tappe, zooey@hirschkaefer.de + * Distributed under the terms of the MIT License. + */ + +#include + +#include + + +using BPrivate::MutableLocaleRoster; + + +namespace BPrivate { +EditableCatalog::EditableCatalog(const char* type, const char* signature, + const char* language) +{ + fCatalog = MutableLocaleRoster::Default()->CreateCatalog(type, signature, + language); +} + + +EditableCatalog::~EditableCatalog() +{ +} + + +status_t +EditableCatalog::SetString(const char* string, const char* translated, + const char* context, const char* comment) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->SetString(string, translated, context, comment); +} + + +status_t +EditableCatalog::SetString(int32 id, const char* translated) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->SetString(id, translated); +} + + +bool +EditableCatalog::CanWriteData() const +{ + if (fCatalog == NULL) + return false; + + return fCatalog->CanWriteData(); +} + + +status_t +EditableCatalog::SetData(const char* name, BMessage* msg) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->SetData(name, msg); +} + + +status_t +EditableCatalog::SetData(uint32 id, BMessage* msg) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->SetData(id, msg); +} + + +status_t +EditableCatalog::ReadFromFile(const char* path) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->ReadFromFile(path); +} + + +status_t +EditableCatalog::ReadFromAttribute(const entry_ref& appOrAddOnRef) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->ReadFromAttribute(appOrAddOnRef); +} + + +status_t +EditableCatalog::ReadFromResource(const entry_ref& appOrAddOnRef) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->ReadFromResource(appOrAddOnRef); +} + + +status_t +EditableCatalog::WriteToFile(const char* path) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->WriteToFile(path); +} + + +status_t +EditableCatalog::WriteToAttribute(const entry_ref& appOrAddOnRef) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->WriteToAttribute(appOrAddOnRef); +} + + +status_t +EditableCatalog::WriteToResource(const entry_ref& appOrAddOnRef) +{ + if (fCatalog == NULL) + return B_NO_INIT; + + return fCatalog->WriteToResource(appOrAddOnRef); +} + + +void EditableCatalog::MakeEmpty() +{ + if (fCatalog == NULL) + fCatalog->MakeEmpty(); +} + + +BCatalogAddOn* +EditableCatalog::CatalogAddOn() +{ + return fCatalog; +} + + +} // namespace BPrivate diff --git a/src/kits/locale/Jamfile b/src/kits/locale/Jamfile index 87430d962e..70b258c38c 100644 --- a/src/kits/locale/Jamfile +++ b/src/kits/locale/Jamfile @@ -11,6 +11,7 @@ local sources = Collator.cpp Country.cpp DefaultCatalog.cpp + EditableCatalog.cpp FormattingConventions.cpp HashMapCatalog.cpp InitLocaleKit.cpp