blob: 9808213c0b67a05710e323e96d151c3075421fc4 [file] [log] [blame]
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla XPCOM Dictionary.
*
* The Initial Developer of the Original Code is
* Digital Creations 2, Inc.
* Portions created by the Initial Developer are Copyright (C) 2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Martijn Pieters <mj@digicool.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* nsDictionary XPCOM component
* Version: $Revision: 1.7 $
*
* $Id: nsDictionary.js,v 1.7 2004/04/18 22:14:12 gerv%gerv.net Exp $
*/
/*
* Constants
*/
const DICTIONARY_CONTRACTID = '@mozilla.org/dictionary;1';
const DICTIONARY_CID = Components.ID('{1dd0cb45-aea3-4a52-8b29-01429a542863}');
const DICTIONARY_IID = Components.interfaces.nsIDictionary;
/*
* Class definitions
*/
/* The nsDictionary class constructor. */
function nsDictionary() {
this.hash = {};
}
/* the nsDictionary class def */
nsDictionary.prototype= {
hasKey: function(key) { return this.hash.hasOwnProperty(key) },
getKeys: function(count) {
var asKeys = new Array();
for (var sKey in this.hash) asKeys.push(sKey);
count.value = asKeys.length;
return asKeys;
},
getValue: function(key) {
if (!this.hasKey(key))
throw Components.Exception("Key doesn't exist");
return this.hash[key];
},
setValue: function(key, value) { this.hash[key] = value; },
deleteValue: function(key) {
if (!this.hasKey(key))
throw Components.Exception("Key doesn't exist");
var oOld = this.getValue(key);
delete this.hash[key];
return oOld;
},
clear: function() { this.hash = {}; },
QueryInterface: function(iid) {
if (!iid.equals(Components.interfaces.nsISupports) &&
!iid.equals(DICTIONARY_IID))
throw Components.results.NS_ERROR_NO_INTERFACE;
return this;
}
};
/*
* Objects
*/
/* nsDictionary Module (for XPCOM registration) */
var nsDictionaryModule = {
registerSelf: function(compMgr, fileSpec, location, type) {
compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
compMgr.registerFactoryLocation(DICTIONARY_CID,
"nsDictionary JS component",
DICTIONARY_CONTRACTID,
fileSpec,
location,
type);
},
getClassObject: function(compMgr, cid, iid) {
if (!cid.equals(DICTIONARY_CID))
throw Components.results.NS_ERROR_NO_INTERFACE;
if (!iid.equals(Components.interfaces.nsIFactory))
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
return nsDictionaryFactory;
},
canUnload: function(compMgr) { return true; }
};
/* nsDictionary Class Factory */
var nsDictionaryFactory = {
createInstance: function(outer, iid) {
if (outer != null)
throw Components.results.NS_ERROR_NO_AGGREGATION;
if (!iid.equals(DICTIONARY_IID) &&
!iid.equals(Components.interfaces.nsISupports))
throw Components.results.NS_ERROR_INVALID_ARG;
return new nsDictionary();
}
}
/*
* Functions
*/
/* module initialisation */
function NSGetModule(comMgr, fileSpec) { return nsDictionaryModule; }
// vim:sw=4:sr:sta:et:sts: