summaryrefslogtreecommitdiffstats
path: root/mailnews/base/public/nsIMsgKeyArray.idl
diff options
context:
space:
mode:
Diffstat (limited to 'mailnews/base/public/nsIMsgKeyArray.idl')
-rw-r--r--mailnews/base/public/nsIMsgKeyArray.idl54
1 files changed, 54 insertions, 0 deletions
diff --git a/mailnews/base/public/nsIMsgKeyArray.idl b/mailnews/base/public/nsIMsgKeyArray.idl
new file mode 100644
index 000000000..183195440
--- /dev/null
+++ b/mailnews/base/public/nsIMsgKeyArray.idl
@@ -0,0 +1,54 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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/. */
+
+
+/**
+ * This interface wraps an nsTArray<nsMsgKey> so that we can pass arrays
+ * back and forth between c++ and js (or via xpconnect generally).
+ */
+
+#include "nsISupports.idl"
+#include "MailNewsTypes2.idl"
+
+[scriptable, uuid(4aa3ed2e-5bb1-40b3-ad03-2f1cfef386c4)]
+interface nsIMsgKeyArray : nsISupports {
+ /**
+ * Get the key at the specified 0-based array index.
+ *
+ * @param aIndex 0-based index.
+ * @returns key at the specified index.
+ */
+ nsMsgKey getKeyAt(in long aIndex);
+
+ readonly attribute unsigned long length;
+
+ void setCapacity(in unsigned long aCapacity);
+ /**
+ * Adds a key to the end of the array
+ * @param key to append to the array.
+ */
+ void appendElement(in nsMsgKey aMsgKey);
+
+ /**
+ * Inserts a key into a previously sorted array
+ * @param key to insert into the array.
+ */
+ void insertElementSorted(in nsMsgKey aMsgKey);
+
+ /**
+ * Sort the array by key.
+ */
+ void sort();
+
+ /**
+ * Retrieves the entire array in such a way that xpconnect can easily
+ * create a js array of the keys.
+ *
+ * @returns array of the keys
+ */
+ void getArray(out unsigned long aCount,
+ [array, size_is(aCount)] out nsMsgKey aKeys);
+};
+