summaryrefslogtreecommitdiffstats
path: root/intl/strres/nsStringBundle.h
diff options
context:
space:
mode:
Diffstat (limited to 'intl/strres/nsStringBundle.h')
-rw-r--r--intl/strres/nsStringBundle.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/intl/strres/nsStringBundle.h b/intl/strres/nsStringBundle.h
new file mode 100644
index 000000000..d52f04724
--- /dev/null
+++ b/intl/strres/nsStringBundle.h
@@ -0,0 +1,81 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsStringBundle_h__
+#define nsStringBundle_h__
+
+#include "mozilla/ReentrantMonitor.h"
+#include "nsIStringBundle.h"
+#include "nsCOMPtr.h"
+#include "nsString.h"
+#include "nsCOMArray.h"
+
+class nsIPersistentProperties;
+class nsIStringBundleOverride;
+
+class nsStringBundle : public nsIStringBundle
+{
+public:
+ // init version
+ nsStringBundle(const char* aURLSpec, nsIStringBundleOverride*);
+ nsresult LoadProperties();
+
+ NS_DECL_THREADSAFE_ISUPPORTS
+ NS_DECL_NSISTRINGBUNDLE
+
+ nsCOMPtr<nsIPersistentProperties> mProps;
+
+protected:
+ virtual ~nsStringBundle();
+
+ //
+ // functional decomposition of the funitions repeatively called
+ //
+ nsresult GetStringFromID(int32_t aID, nsAString& aResult);
+ nsresult GetStringFromName(const nsAString& aName, nsAString& aResult);
+
+ nsresult GetCombinedEnumeration(nsIStringBundleOverride* aOverrideString,
+ nsISimpleEnumerator** aResult);
+private:
+ nsCString mPropertiesURL;
+ nsCOMPtr<nsIStringBundleOverride> mOverrideStrings;
+ mozilla::ReentrantMonitor mReentrantMonitor;
+ bool mAttemptedLoad;
+ bool mLoaded;
+
+public:
+ static nsresult FormatString(const char16_t *formatStr,
+ const char16_t **aParams, uint32_t aLength,
+ char16_t **aResult);
+};
+
+class nsExtensibleStringBundle;
+
+/**
+ * An extensible implementation of the StringBundle interface.
+ *
+ * @created 28/Dec/1999
+ * @author Catalin Rotaru [CATA]
+ */
+class nsExtensibleStringBundle final : public nsIStringBundle
+{
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSISTRINGBUNDLE
+
+ nsresult Init(const char * aCategory, nsIStringBundleService *);
+
+public:
+ nsExtensibleStringBundle();
+
+private:
+ virtual ~nsExtensibleStringBundle();
+
+ nsCOMArray<nsIStringBundle> mBundles;
+ bool mLoaded;
+};
+
+
+
+#endif