home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February / PCWorld_2008-02_cd.bin / temacd / songbird / Songbird_0.4_windows-i686.exe / xulrunner / components / nsDictionary.js < prev    next >
Text File  |  2004-04-18  |  5KB  |  149 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is Mozilla XPCOM Dictionary.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Digital Creations 2, Inc.
  18.  * Portions created by the Initial Developer are Copyright (C) 2000
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *   Martijn Pieters <mj@digicool.com> (original author)
  23.  *
  24.  * Alternatively, the contents of this file may be used under the terms of
  25.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  26.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27.  * in which case the provisions of the GPL or the LGPL are applicable instead
  28.  * of those above. If you wish to allow use of your version of this file only
  29.  * under the terms of either the GPL or the LGPL, and not to allow others to
  30.  * use your version of this file under the terms of the MPL, indicate your
  31.  * decision by deleting the provisions above and replace them with the notice
  32.  * and other provisions required by the GPL or the LGPL. If you do not delete
  33.  * the provisions above, a recipient may use your version of this file under
  34.  * the terms of any one of the MPL, the GPL or the LGPL.
  35.  *
  36.  * ***** END LICENSE BLOCK ***** */
  37.  
  38. /*
  39.  *  nsDictionary XPCOM component
  40.  *  Version: $Revision: 1.7 $
  41.  *
  42.  *  $Id: nsDictionary.js,v 1.7 2004/04/18 22:14:12 gerv%gerv.net Exp $
  43.  */
  44.  
  45. /*
  46.  * Constants
  47.  */
  48. const DICTIONARY_CONTRACTID = '@mozilla.org/dictionary;1';
  49. const DICTIONARY_CID = Components.ID('{1dd0cb45-aea3-4a52-8b29-01429a542863}');
  50. const DICTIONARY_IID = Components.interfaces.nsIDictionary;
  51.  
  52. /*
  53.  * Class definitions
  54.  */
  55.  
  56. /* The nsDictionary class constructor. */
  57. function nsDictionary() {
  58.     this.hash = {};
  59. }
  60.  
  61. /* the nsDictionary class def */
  62. nsDictionary.prototype= {
  63.     hasKey: function(key) { return this.hash.hasOwnProperty(key) },
  64.  
  65.     getKeys: function(count) {
  66.         var asKeys = new Array();
  67.         for (var sKey in this.hash) asKeys.push(sKey);
  68.         count.value = asKeys.length;
  69.         return asKeys;
  70.     },
  71.  
  72.     getValue: function(key) { 
  73.         if (!this.hasKey(key))
  74.             throw Components.Exception("Key doesn't exist");
  75.         return this.hash[key]; 
  76.     },
  77.  
  78.     setValue: function(key, value) { this.hash[key] = value; },
  79.     
  80.     deleteValue: function(key) {
  81.         if (!this.hasKey(key))
  82.             throw Components.Exception("Key doesn't exist");
  83.         var oOld = this.getValue(key);
  84.         delete this.hash[key];
  85.         return oOld;
  86.     },
  87.  
  88.     clear: function() { this.hash = {}; },
  89.  
  90.     QueryInterface: function(iid) {
  91.         if (!iid.equals(Components.interfaces.nsISupports) &&
  92.             !iid.equals(DICTIONARY_IID))
  93.             throw Components.results.NS_ERROR_NO_INTERFACE;
  94.         return this;
  95.     }
  96. };
  97.  
  98. /*
  99.  * Objects
  100.  */
  101.  
  102. /* nsDictionary Module (for XPCOM registration) */
  103. var nsDictionaryModule = {
  104.     registerSelf: function(compMgr, fileSpec, location, type) {
  105.         compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
  106.         compMgr.registerFactoryLocation(DICTIONARY_CID, 
  107.                                         "nsDictionary JS component", 
  108.                                         DICTIONARY_CONTRACTID, 
  109.                                         fileSpec, 
  110.                                         location,
  111.                                         type);
  112.     },
  113.  
  114.     getClassObject: function(compMgr, cid, iid) {
  115.         if (!cid.equals(DICTIONARY_CID))
  116.             throw Components.results.NS_ERROR_NO_INTERFACE;
  117.  
  118.         if (!iid.equals(Components.interfaces.nsIFactory))
  119.             throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
  120.  
  121.         return nsDictionaryFactory;
  122.     },
  123.  
  124.     canUnload: function(compMgr) { return true; }
  125. };
  126.  
  127. /* nsDictionary Class Factory */
  128. var nsDictionaryFactory = {
  129.     createInstance: function(outer, iid) {
  130.         if (outer != null)
  131.             throw Components.results.NS_ERROR_NO_AGGREGATION;
  132.     
  133.         if (!iid.equals(DICTIONARY_IID) &&
  134.             !iid.equals(Components.interfaces.nsISupports))
  135.             throw Components.results.NS_ERROR_INVALID_ARG;
  136.  
  137.         return new nsDictionary();
  138.     }
  139. }
  140.  
  141. /*
  142.  * Functions
  143.  */
  144.  
  145. /* module initialisation */
  146. function NSGetModule(comMgr, fileSpec) { return nsDictionaryModule; }
  147.  
  148. // vim:sw=4:sr:sta:et:sts:
  149.