Back to index

lightning-sunbird  0.9+nobinonly
nsXMLExtrasModule.cpp
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1998
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either the GNU General Public License Version 2 or later (the "GPL"), or
00026  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 #include "nsIGenericFactory.h"
00039 #include "nsIServiceManager.h"
00040 #include "nsICategoryManager.h"
00041 #include "nsIScriptNameSpaceManager.h"
00042 #include "nsString.h"
00043 #include "nsXPIDLString.h"
00044 #include "prprf.h"
00045 #include "nsIDOMClassInfo.h"
00046 #include "nsCRT.h"
00047 #include "nsFIXptr.h"
00048 #include "nsXPointer.h"
00049 
00051 // Define the contructor function for the objects
00052 //
00053 // NOTE: This creates an instance of objects by using the default constructor
00054 //
00055 NS_GENERIC_FACTORY_CONSTRUCTOR(nsFIXptr)
00056 NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPointer)
00057 NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPointerResult)
00058 
00059 NS_DECL_DOM_CLASSINFO(XPointerResult)
00060 
00061 /* 6fb64081-1da6-11d6-a7f2-9babb25552bc */
00062 #define XMLEXTRAS_DOMCI_EXTENSION_CID   \
00063 { 0x6fb64081, 0x1da6, 0x11d6, {0xa7, 0xf2, 0x9b, 0xab, 0xb2, 0x55, 0x52, 0xbc} }
00064 
00065 #define XMLEXTRAS_DOMCI_EXTENSION_CONTRACTID \
00066 "@mozilla.org/xmlextras-domci-extender;1"
00067 
00068 NS_DOMCI_EXTENSION(XMLExtras)
00069     NS_DOMCI_EXTENSION_ENTRY_BEGIN(XPointerResult)
00070         NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIXPointerResult)
00071     NS_DOMCI_EXTENSION_ENTRY_END_NO_PRIMARY_IF(XPointerResult, PR_TRUE, nsnull)
00072 NS_DOMCI_EXTENSION_END
00073 
00074 #define NS_XPOINTER_RESULT_CID                       \
00075 { /* 31CC4700-FC53-41d2-90D4-8D608F67AD39 */         \
00076   0x31cc4700, 0xfc53, 0x41d2,                        \
00077 { 0x90, 0xd4, 0x8d, 0x60, 0x8f, 0x67, 0xad, 0x39 } }
00078 #define NS_XPOINTER_RESULT_CONTRACTID \
00079 "@mozilla.org/xmlextras/xpointerresult;1"
00080 
00081 // {CD6BD59C-75C8-451b-831B-B81B7C03DC53}
00082 #define NS_FIXPTR_EVALUATOR_CID \
00083   { 0xcd6bd59c, 0x75c8, 0x451b, \
00084     { 0x83, 0x1b, 0xb8, 0x1b, 0x7c, 0x3, 0xdc, 0x53 } }
00085 #define NS_FIXPTR_EVALUATOR_CONTRACTID \
00086 "@mozilla.org/xmlextras/fixptrevaluator;1"
00087 
00088 // {07AC4E3A-EE18-4e37-B29F-532BE4BE0609}
00089 #define NS_XPOINTER_EVALUATOR_CID \
00090   { 0x7ac4e3a, 0xee18, 0x4e37, \
00091     { 0xb2, 0x9f, 0x53, 0x2b, 0xe4, 0xbe, 0x6, 0x9 } }
00092 #define NS_XPOINTER_EVALUATOR_CONTRACTID \
00093 "@mozilla.org/xmlextras/xpointerevaluator;1"
00094 
00095 static NS_METHOD 
00096 RegisterXMLExtras(nsIComponentManager *aCompMgr,
00097                   nsIFile *aPath,
00098                   const char *registryLocation,
00099                   const char *componentType,
00100                   const nsModuleComponentInfo *info)
00101 {
00102   nsresult rv = NS_OK;
00103 
00104   nsCOMPtr<nsICategoryManager> catman =
00105     do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
00106 
00107   if (NS_FAILED(rv))
00108     return rv;
00109 
00110   nsXPIDLCString previous;
00111   rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_CLASS,
00112                                 "XPointerResult",
00113                                 XMLEXTRAS_DOMCI_EXTENSION_CONTRACTID,
00114                                 PR_TRUE, PR_TRUE, getter_Copies(previous));
00115 
00116   return rv;
00117 }
00118 
00120 // Define a table of CIDs implemented by this module along with other
00121 // information like the function to create an instance, contractid, and
00122 // class name.
00123 //
00124 static const nsModuleComponentInfo components[] = {
00125   { "FIXptr Evaluator", NS_FIXPTR_EVALUATOR_CID, NS_FIXPTR_EVALUATOR_CONTRACTID,
00126     nsFIXptrConstructor, RegisterXMLExtras },
00127   { "XPointer Evaluator", NS_XPOINTER_EVALUATOR_CID, NS_XPOINTER_EVALUATOR_CONTRACTID,
00128     nsXPointerConstructor },
00129   { "XPointer Result", NS_XPOINTER_RESULT_CID, NS_XPOINTER_RESULT_CONTRACTID,
00130     nsXPointerResultConstructor },
00131   { "XML Extras DOMCI Extender",
00132     XMLEXTRAS_DOMCI_EXTENSION_CID, XMLEXTRAS_DOMCI_EXTENSION_CONTRACTID,
00133     NS_DOMCI_EXTENSION_CONSTRUCTOR(XMLExtras) }
00134 };
00135 
00136 void PR_CALLBACK
00137 XMLExtrasModuleDestructor(nsIModule* self)
00138 {
00139   NS_IF_RELEASE(NS_CLASSINFO_NAME(XPointerResult));
00140 }
00141 
00142 NS_IMPL_NSGETMODULE_WITH_DTOR(nsXMLExtrasModule, components, 
00143                               XMLExtrasModuleDestructor)