Compare commits

..

38 Commits

Author SHA1 Message Date
dkl%redhat.com
8c591d53e2 Removed some remaining SelectVisible calls in favor of CanSeeBug
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121533 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-15 18:36:31 +00:00
dkl%redhat.com
c1aa983fd5 Update to HEAD 2002/05/13
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121401 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 21:56:49 +00:00
dkl%redhat.com
3551227412 forgot one
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121393 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 20:49:00 +00:00
dkl%redhat.com
d0cc91f285 Fixed some template inconsistencies with current 2.16 Stable Branch
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121392 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 20:46:50 +00:00
(no author)
65ff7d56b3 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121370 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 06:24:51 +00:00
dkl%redhat.com
800eccde9a Merge with HEAD 2002/04/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@119979 18797224-902f-48f8-a5cc-f745e15eee43
2002-04-26 18:59:37 +00:00
(no author)
5360e5b008 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@119975 18797224-902f-48f8-a5cc-f745e15eee43
2002-04-26 18:12:55 +00:00
dkl%redhat.com
da759055dd Sync to HEAD 2002/03/21
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@117156 18797224-902f-48f8-a5cc-f745e15eee43
2002-03-22 05:16:48 +00:00
(no author)
1f960bb1bd This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@116669 18797224-902f-48f8-a5cc-f745e15eee43
2002-03-15 23:23:14 +00:00
dkl%redhat.com
e0f4b89db1 Update to HEAD 2002/02/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@115395 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-27 01:11:14 +00:00
(no author)
025b6e8e46 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@115298 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-24 09:28:23 +00:00
dkl%redhat.com
704f46aa53 Update to HEAD 2002/02/04
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113607 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-04 15:56:15 +00:00
(no author)
f26338df7e This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113575 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-03 09:28:50 +00:00
dkl%redhat.com
58548c3f0d Update to HEAD 2002/01/30
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113247 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-30 23:00:13 +00:00
(no author)
9a6b4393ad This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113166 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-29 23:26:38 +00:00
dkl%redhat.com
4316819604 Fix runtests.sh error on processmail
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@112507 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-21 23:27:24 +00:00
dkl%redhat.com
9d93dfabb8 Fix botched earlier sync with HEAD
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@112499 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-21 20:42:30 +00:00
dkl%redhat.com
d2ddb07675 Update to HEAD 01/18/2002
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@112473 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-18 23:06:43 +00:00
dkl%redhat.com
66d426dc97 Lost the pgsetup.pl file somewhere along the line. Adding back properly.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111575 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-08 16:13:05 +00:00
dkl%redhat.com
b7e91cb3b6 Changes to CanSeeBug to allow multiple checks in one call for buglist.cgi
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111509 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-07 23:20:15 +00:00
dkl%redhat.com
5ac0899827 Update to HEAD 2002-01-07
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111508 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-07 23:14:41 +00:00
dkl%redhat.com
4f49e57a3b Merge 3 with HEAD: 2001/12/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111103 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 07:26:12 +00:00
dkl%redhat.com
38c27be28f Merge 2 with HEAD: 2001/12/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111102 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 06:02:04 +00:00
dkl%redhat.com
d60d3d6121 Merge fix. This is frustrating.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111101 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 05:29:04 +00:00
dkl%redhat.com
db0b87fb6c Merge with HEAD on 2001/12/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111100 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 05:09:43 +00:00
(no author)
6e2791a4b7 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@110404 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-12 22:41:21 +00:00
dkl%redhat.com
14542c62c7 Update to HEAD 2001-12-03
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@109510 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-03 04:06:19 +00:00
dkl%redhat.com
38ebcba576 Fixed error in AddFDef
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@108598 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 18:40:38 +00:00
dkl%redhat.com
a5502157a9 Update to HEAD - November 18, 2001
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@108470 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-19 05:57:30 +00:00
(no author)
ba69b37618 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@108456 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-18 22:20:21 +00:00
dkl%redhat.com
22b863a5e9 Synced up with CVS HEAD and created Bugzilla_PgSQL_branch_sync tag
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107700 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-08 23:03:10 +00:00
dkl%redhat.com
3e54979994 Fixed conflict in Bug.pm, removal of tabs from lots of files.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107385 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-06 01:21:11 +00:00
dkl%redhat.com
d73ca44c76 Add new cpan module dependencies
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107356 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-05 21:43:11 +00:00
dkl%redhat.com
a4fc52b12e Updates and bug fixes
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107354 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-05 21:10:15 +00:00
dkl%redhat.com
353baca797 New SQL utility functions. Changes in buglist.cgi to improve queries.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106967 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-01 15:35:03 +00:00
dkl%redhat.com
4618ab6c36 Initial checkin of pgsetup.pl. Utility for setting up Bugzilla database in PostgreSQL.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106569 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-29 20:15:50 +00:00
justdave%syndicomm.com
faaed9c15f initial commit of PgSQL megapatch v0.2
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106532 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-29 07:49:05 +00:00
(no author)
675f64d0ae This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106501 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-28 03:41:01 +00:00
578 changed files with 106012 additions and 63956 deletions

View File

@@ -1,353 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape 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/NPL/
*
* 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.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken <peterv@netscape.com>
*
*
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsSyncLoader.h"
#include "nsIDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDOMElement.h"
#include "nsIDOMDOMImplementation.h"
#include "nsIDOMEventReceiver.h"
#include "nsIEventQueueService.h"
#include "nsIPrivateDOMImplementation.h"
#include "nsIScriptSecurityManager.h"
#include "nsLayoutCID.h"
#include "nsNetUtil.h"
static const char* kLoadAsData = "loadAsData";
static NS_DEFINE_CID(kIDOMDOMImplementationCID, NS_DOM_IMPLEMENTATION_CID);
static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
/*
* This class exists to prevent a circular reference between
* the loaded document and the nsSyncloader instance. The
* request owns the document. While the document is loading,
* the request is a load listener, held onto by the document.
* The proxy class breaks the circularity by filling in as the
* load listener and holding a weak reference to the request
* object.
*/
class txLoadListenerProxy : public nsIDOMLoadListener {
public:
txLoadListenerProxy(nsWeakPtr aParent);
virtual ~txLoadListenerProxy();
NS_DECL_ISUPPORTS
// nsIDOMEventListener
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
// nsIDOMLoadListener
NS_IMETHOD Load(nsIDOMEvent* aEvent);
NS_IMETHOD Unload(nsIDOMEvent* aEvent);
NS_IMETHOD Abort(nsIDOMEvent* aEvent);
NS_IMETHOD Error(nsIDOMEvent* aEvent);
protected:
nsWeakPtr mParent;
};
txLoadListenerProxy::txLoadListenerProxy(nsWeakPtr aParent)
{
NS_INIT_ISUPPORTS();
mParent = aParent;
}
txLoadListenerProxy::~txLoadListenerProxy()
{
}
NS_IMPL_ISUPPORTS1(txLoadListenerProxy, nsIDOMLoadListener)
NS_IMETHODIMP
txLoadListenerProxy::HandleEvent(nsIDOMEvent* aEvent)
{
nsCOMPtr<nsIDOMLoadListener> listener = do_QueryReferent(mParent);
if (listener) {
return listener->HandleEvent(aEvent);
}
return NS_OK;
}
NS_IMETHODIMP
txLoadListenerProxy::Load(nsIDOMEvent* aEvent)
{
nsCOMPtr<nsIDOMLoadListener> listener = do_QueryReferent(mParent);
if (listener) {
return listener->Load(aEvent);
}
return NS_OK;
}
NS_IMETHODIMP
txLoadListenerProxy::Unload(nsIDOMEvent* aEvent)
{
nsCOMPtr<nsIDOMLoadListener> listener = do_QueryReferent(mParent);
if (listener) {
return listener->Unload(aEvent);
}
return NS_OK;
}
NS_IMETHODIMP
txLoadListenerProxy::Abort(nsIDOMEvent* aEvent)
{
nsCOMPtr<nsIDOMLoadListener> listener = do_QueryReferent(mParent);
if (listener) {
return listener->Abort(aEvent);
}
return NS_OK;
}
NS_IMETHODIMP
txLoadListenerProxy::Error(nsIDOMEvent* aEvent)
{
nsCOMPtr<nsIDOMLoadListener> listener = do_QueryReferent(mParent);
if (listener) {
return listener->Error(aEvent);
}
return NS_OK;
}
nsSyncLoader::nsSyncLoader()
{
NS_INIT_ISUPPORTS();
}
nsSyncLoader::~nsSyncLoader()
{
if (mLoading && mChannel) {
mChannel->Cancel(NS_BINDING_ABORTED);
}
}
NS_IMPL_ISUPPORTS3(nsSyncLoader, nsISyncLoader, nsIDOMLoadListener, nsISupportsWeakReference)
NS_IMETHODIMP
nsSyncLoader::LoadDocument(nsIURI* documentURI, nsIDocument *aLoader, nsIDOMDocument **_retval)
{
nsresult rv = NS_OK;
nsCOMPtr<nsIURI> loaderURI;
aLoader->GetDocumentURL(getter_AddRefs(loaderURI));
nsCOMPtr<nsIScriptSecurityManager> securityManager =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = securityManager->CheckLoadURI(loaderURI, documentURI,
nsIScriptSecurityManager::STANDARD);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsILoadGroup> loadGroup;
rv = aLoader->GetDocumentLoadGroup(getter_AddRefs(loadGroup));
NS_ENSURE_SUCCESS(rv, rv);
// Get and initialize a DOMImplementation
nsCOMPtr<nsIDOMDOMImplementation> implementation =
do_CreateInstance(kIDOMDOMImplementationCID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrivateDOMImplementation> privImplementation(do_QueryInterface(implementation, &rv));
NS_ENSURE_SUCCESS(rv, rv);
privImplementation->Init(documentURI);
// Create an empty document from it
nsString emptyStr;
nsCOMPtr<nsIDOMDocument> DOMDocument;
rv = implementation->CreateDocument(emptyStr,
emptyStr,
nsnull,
getter_AddRefs(DOMDocument));
NS_ENSURE_SUCCESS(rv, rv);
rv = NS_NewChannel(getter_AddRefs(mChannel), documentURI, nsnull, loadGroup);
NS_ENSURE_SUCCESS(rv, rv);
// Make sure we've been opened
if (!mChannel) {
return NS_ERROR_NOT_INITIALIZED;
}
// Tell the document to start loading
nsCOMPtr<nsIDocument> document = do_QueryInterface(DOMDocument, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIEventQueueService> service =
do_GetService(NS_EVENTQUEUESERVICE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIEventQueue> currentThreadQ;
rv = service->PushThreadEventQueue(getter_AddRefs(currentThreadQ));
NS_ENSURE_SUCCESS(rv, rv);
// Register as a load listener on the document
nsCOMPtr<nsIDOMEventReceiver> target = do_QueryInterface(DOMDocument);
NS_ENSURE_TRUE(target, NS_ERROR_FAILURE);
nsWeakPtr requestWeak = getter_AddRefs(NS_GetWeakReference(NS_STATIC_CAST(nsIDOMLoadListener*, this)));
txLoadListenerProxy* proxy = new txLoadListenerProxy(requestWeak);
if (!proxy) {
service->PopThreadEventQueue(currentThreadQ);
return NS_ERROR_OUT_OF_MEMORY;
}
// This will addref the proxy
rv = target->AddEventListenerByIID(NS_STATIC_CAST(nsIDOMEventListener*,
proxy),
NS_GET_IID(nsIDOMLoadListener));
if (NS_FAILED(rv)) {
service->PopThreadEventQueue(currentThreadQ);
return rv;
}
mLoadSuccess = PR_FALSE;
nsCOMPtr<nsIStreamListener> listener;
rv = document->StartDocumentLoad(kLoadAsData, mChannel,
loadGroup, nsnull,
getter_AddRefs(listener),
PR_FALSE);
if (NS_SUCCEEDED(rv)) {
// Start reading from the channel
rv = mChannel->AsyncOpen(listener, nsnull);
if (NS_SUCCEEDED(rv)) {
mLoading = PR_TRUE;
// process events until we're finished.
PLEvent *event;
while (mLoading && NS_SUCCEEDED(rv)) {
rv = currentThreadQ->WaitForEvent(&event);
NS_ASSERTION(NS_SUCCEEDED(rv), ": currentThreadQ->WaitForEvent failed...\n");
if (NS_SUCCEEDED(rv)) {
rv = currentThreadQ->HandleEvent(event);
NS_ASSERTION(NS_SUCCEEDED(rv), ": currentThreadQ->HandleEvent failed...\n");
}
}
}
}
mChannel = 0;
if (NS_FAILED(rv)) {
service->PopThreadEventQueue(currentThreadQ);
// This will release the proxy
target->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMEventListener*,
proxy),
NS_GET_IID(nsIDOMLoadListener));
return rv;
}
// This will release the proxy
rv = target->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMEventListener*,
proxy),
NS_GET_IID(nsIDOMLoadListener));
if (NS_FAILED(rv)) {
return rv;
}
nsCOMPtr<nsIDOMElement> documentElement;
DOMDocument->GetDocumentElement(getter_AddRefs(documentElement));
if (mLoadSuccess && documentElement) {
*_retval = DOMDocument;
NS_ADDREF(*_retval);
}
rv = service->PopThreadEventQueue(currentThreadQ);
return rv;
}
// nsIDOMEventListener
nsresult
nsSyncLoader::HandleEvent(nsIDOMEvent* aEvent)
{
return NS_OK;
}
// nsIDOMLoadListener
nsresult
nsSyncLoader::Load(nsIDOMEvent* aEvent)
{
if (mLoading) {
mLoading = PR_FALSE;
mLoadSuccess = PR_TRUE;
}
return NS_OK;
}
nsresult
nsSyncLoader::Unload(nsIDOMEvent* aEvent)
{
return NS_OK;
}
nsresult
nsSyncLoader::Abort(nsIDOMEvent* aEvent)
{
if (mLoading) {
mLoading = PR_FALSE;
}
return NS_OK;
}
nsresult
nsSyncLoader::Error(nsIDOMEvent* aEvent)
{
if (mLoading) {
mLoading = PR_FALSE;
}
return NS_OK;
}

View File

@@ -1,34 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = source
ifndef TX_EXE
DIRS += build public
endif
include $(topsrcdir)/config/rules.mk

View File

@@ -1,178 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = transformiix
LIBRARY_NAME = transformiix
EXPORT_LIBRARY = 1
ifneq ($(OS_ARCH),WINNT)
SHORT_LIBNAME = t8iix
endif
REQUIRES = xpcom \
string \
dom \
layout \
content \
content_xsl \
widget \
necko \
js \
appshell \
xpconnect \
caps \
locale \
unicharutil \
htmlparser \
webshell \
docshell \
$(NULL)
IS_COMPONENT = 1
MODULE_NAME = TransformiixModule
CPPSRCS = XSLTProcessorModule.cpp
LOBJS =../source/base/ArrayList.$(OBJ_SUFFIX) \
../source/base/Double.$(OBJ_SUFFIX) \
../source/base/List.$(OBJ_SUFFIX) \
../source/base/TxObjectWrapper.$(OBJ_SUFFIX) \
../source/base/Map.$(OBJ_SUFFIX) \
../source/base/NamedMap.$(OBJ_SUFFIX) \
../source/base/SimpleErrorObserver.$(OBJ_SUFFIX) \
../source/base/Stack.$(OBJ_SUFFIX) \
../source/base/StringList.$(OBJ_SUFFIX) \
../source/base/Tokenizer.$(OBJ_SUFFIX) \
../source/base/txAtoms.$(OBJ_SUFFIX) \
../source/base/txExpandedNameMap.$(OBJ_SUFFIX) \
../source/net/URIUtils.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaObjectWrapper.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaAttr.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaCDATASection.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaCharacterData.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaComment.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaDOMImplementation.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaDocument.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaDocumentFragment.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaDocumentType.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaElement.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaEntity.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaEntityReference.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaNamedNodeMap.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaNode.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaNodeList.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaNotation.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaProcInstruction.$(OBJ_SUFFIX) \
../source/xml/dom/mozImpl/MozillaText.$(OBJ_SUFFIX) \
../source/xpath/AdditiveExpr.$(OBJ_SUFFIX) \
../source/xpath/AttributeExpr.$(OBJ_SUFFIX) \
../source/xpath/AttributeValueTemplate.$(OBJ_SUFFIX) \
../source/xpath/BasicNodeExpr.$(OBJ_SUFFIX) \
../source/xpath/BooleanExpr.$(OBJ_SUFFIX) \
../source/xpath/BooleanFunctionCall.$(OBJ_SUFFIX) \
../source/xpath/BooleanResult.$(OBJ_SUFFIX) \
../source/xpath/ElementExpr.$(OBJ_SUFFIX) \
../source/xpath/ErrorFunctionCall.$(OBJ_SUFFIX) \
../source/xpath/Expr.$(OBJ_SUFFIX) \
../source/xpath/ExprLexer.$(OBJ_SUFFIX) \
../source/xpath/ExprLexerChars.$(OBJ_SUFFIX) \
../source/xpath/ExprParser.$(OBJ_SUFFIX) \
../source/xpath/ExtensionFunctionCall.$(OBJ_SUFFIX) \
../source/xpath/FilterExpr.$(OBJ_SUFFIX) \
../source/xpath/FunctionCall.$(OBJ_SUFFIX) \
../source/xpath/LocationStep.$(OBJ_SUFFIX) \
../source/xpath/MultiplicativeExpr.$(OBJ_SUFFIX) \
../source/xpath/NodeSet.$(OBJ_SUFFIX) \
../source/xpath/NodeSetFunctionCall.$(OBJ_SUFFIX) \
../source/xpath/nsXPathEvaluator.$(OBJ_SUFFIX) \
../source/xpath/nsXPathException.$(OBJ_SUFFIX) \
../source/xpath/nsXPathExpression.$(OBJ_SUFFIX) \
../source/xpath/nsXPathNSResolver.$(OBJ_SUFFIX) \
../source/xpath/nsXPathResult.$(OBJ_SUFFIX) \
../source/xpath/NumberExpr.$(OBJ_SUFFIX) \
../source/xpath/NumberFunctionCall.$(OBJ_SUFFIX) \
../source/xpath/NumberResult.$(OBJ_SUFFIX) \
../source/xpath/PathExpr.$(OBJ_SUFFIX) \
../source/xpath/PredicateList.$(OBJ_SUFFIX) \
../source/xpath/RelationalExpr.$(OBJ_SUFFIX) \
../source/xpath/RootExpr.$(OBJ_SUFFIX) \
../source/xpath/StringExpr.$(OBJ_SUFFIX) \
../source/xpath/StringFunctionCall.$(OBJ_SUFFIX) \
../source/xpath/StringResult.$(OBJ_SUFFIX) \
../source/xpath/TextExpr.$(OBJ_SUFFIX) \
../source/xpath/UnionExpr.$(OBJ_SUFFIX) \
../source/xpath/UnaryExpr.$(OBJ_SUFFIX) \
../source/xpath/VariableRefExpr.$(OBJ_SUFFIX) \
../source/xpath/XPathNames.$(OBJ_SUFFIX) \
../source/xml/XMLUtils.$(OBJ_SUFFIX) \
../source/xml/XMLDOMUtils.$(OBJ_SUFFIX) \
../source/xml/parser/XMLParser.$(OBJ_SUFFIX) \
../source/xml/parser/nsSyncLoader.$(OBJ_SUFFIX) \
../source/xslt/txOutputFormat.$(OBJ_SUFFIX) \
../source/xslt/Names.$(OBJ_SUFFIX) \
../source/xslt/Numbering.$(OBJ_SUFFIX) \
../source/xslt/ProcessorState.$(OBJ_SUFFIX) \
../source/xslt/txMozillaTextOutput.$(OBJ_SUFFIX) \
../source/xslt/txMozillaXMLOutput.$(OBJ_SUFFIX) \
../source/xslt/txRtfHandler.$(OBJ_SUFFIX) \
../source/xslt/txTextHandler.$(OBJ_SUFFIX) \
../source/xslt/VariableBinding.$(OBJ_SUFFIX) \
../source/xslt/XSLTProcessor.$(OBJ_SUFFIX) \
../source/xslt/functions/CurrentFunctionCall.$(OBJ_SUFFIX) \
../source/xslt/functions/DocumentFunctionCall.$(OBJ_SUFFIX) \
../source/xslt/functions/ElementAvailableFnCall.$(OBJ_SUFFIX) \
../source/xslt/functions/FunctionAvailableFnCall.$(OBJ_SUFFIX) \
../source/xslt/functions/GenerateIdFunctionCall.$(OBJ_SUFFIX) \
../source/xslt/functions/SystemPropertyFunctionCall.$(OBJ_SUFFIX) \
../source/xslt/functions/txFormatNumberFunctionCall.$(OBJ_SUFFIX) \
../source/xslt/functions/txKeyFunctionCall.$(OBJ_SUFFIX) \
../source/xslt/util/NodeStack.$(OBJ_SUFFIX) \
../source/xslt/util/txNodeSorter.$(OBJ_SUFFIX) \
../source/xslt/util/txXPathResultComparator.$(OBJ_SUFFIX) \
$(NULL)
EXTRA_DSO_LDOPTS += \
$(MOZ_UNICHARUTIL_LIBS) \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_UNICHARUTIL_LIBS) \
$(MOZ_JS_LIBS) \
$(NULL)
include $(topsrcdir)/config/rules.mk
INCLUDES += -I$(srcdir)/../source/xslt -I$(srcdir)/../source/base \
-I$(srcdir)/../source/net \
-I$(srcdir)/../source/xml -I$(srcdir)/../source/xml/dom \
-I$(srcdir)/../source/xml/parser -I$(srcdir)/../source/xpath \
-I$(srcdir)/../source/xslt/util -I$(srcdir)/../source/xslt/functions
_T_VERSION = $(shell date +%Y%m%d%H)
GARBAGE += install.js $(wildcard transformiix*.xpi)
xpi:
$(PERL) $(topsrcdir)/xpinstall/packager/unix/makejs.pl $(srcdir)/transformiix.jst $(_T_VERSION) . install.js
zip transformiix$(_T_VERSION).xpi install.js
cd $(DIST); zip -u ../extensions/transformiix/build/transformiix$(_T_VERSION).xpi bin/components/$(LIB_PREFIX)transformiix.$(LIB_SUFFIX)

View File

@@ -1,253 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Peter Van der Beken are Copyright (C) 2000
* Peter Van der Beken. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken, peter.vanderbeken@pandora.be
* -- original author.
*
*/
#include "nsICategoryManager.h"
#include "nsIDOMClassInfo.h"
#include "nsIExceptionService.h"
#include "nsIGenericFactory.h"
#include "nsIScriptNameSpaceManager.h"
#include "nsIServiceManager.h"
#include "nsSyncLoader.h"
#include "nsXPathEvaluator.h"
#include "nsXPathException.h"
#include "nsXPathExpression.h"
#include "nsXPathNSResolver.h"
#include "nsXPathResult.h"
#include "nsXPIDLString.h"
#include "txAtoms.h"
#include "XSLTProcessor.h"
#include "TxLog.h"
#include "nsCRT.h"
/* 1c1a3c01-14f6-11d6-a7f2-ea502af815dc */
#define TRANSFORMIIX_DOMCI_EXTENSION_CID \
{ 0x1c1a3c01, 0x14f6, 0x11d6, {0xa7, 0xf2, 0xea, 0x50, 0x2a, 0xf8, 0x15, 0xdc} }
#define TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID \
"@mozilla.org/transformiix-domci-extender;1"
NS_DOMCI_EXTENSION(Transformiix)
static NS_DEFINE_CID(kXSLTProcessorCID, TRANSFORMIIX_XSLT_PROCESSOR_CID);
NS_DOMCI_EXTENSION_ENTRY_BEGIN(XSLTProcessor)
NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIDocumentTransformer)
NS_DOMCI_EXTENSION_ENTRY_END(XSLTProcessor, nsIDocumentTransformer,
PR_FALSE, &kXSLTProcessorCID)
static NS_DEFINE_CID(kXPathEvaluatorCID, TRANSFORMIIX_XPATH_EVALUATOR_CID);
NS_DOMCI_EXTENSION_ENTRY_BEGIN(XPathEvaluator)
NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIDOMXPathEvaluator)
NS_DOMCI_EXTENSION_ENTRY_END(XPathEvaluator, nsIDOMXPathEvaluator, PR_TRUE,
&kXPathEvaluatorCID)
NS_DOMCI_EXTENSION_ENTRY_BEGIN(XPathException)
NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIDOMXPathException)
NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIException)
NS_DOMCI_EXTENSION_ENTRY_END(XPathException, nsIDOMXPathException, PR_TRUE,
nsnull)
NS_DOMCI_EXTENSION_ENTRY_BEGIN(XPathExpression)
NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIDOMXPathExpression)
NS_DOMCI_EXTENSION_ENTRY_END(XPathExpression, nsIDOMXPathExpression,
PR_TRUE, nsnull)
NS_DOMCI_EXTENSION_ENTRY_BEGIN(XPathNSResolver)
NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIDOMXPathNSResolver)
NS_DOMCI_EXTENSION_ENTRY_END(XPathNSResolver, nsIDOMXPathNSResolver,
PR_TRUE, nsnull)
NS_DOMCI_EXTENSION_ENTRY_BEGIN(XPathResult)
NS_DOMCI_EXTENSION_ENTRY_INTERFACE(nsIDOMXPathResult)
NS_DOMCI_EXTENSION_ENTRY_END(XPathResult, nsIDOMXPathResult, PR_TRUE,
nsnull)
NS_DOMCI_EXTENSION_END
// Factory Constructor
NS_GENERIC_FACTORY_CONSTRUCTOR(XSLTProcessor)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPathEvaluator)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSyncLoader)
NS_DECL_DOM_CLASSINFO(XSLTProcessor)
NS_DECL_DOM_CLASSINFO(XPathEvaluator)
NS_DECL_DOM_CLASSINFO(XPathException)
NS_DECL_DOM_CLASSINFO(XPathExpression)
NS_DECL_DOM_CLASSINFO(XPathNSResolver)
NS_DECL_DOM_CLASSINFO(XPathResult)
static NS_METHOD
RegisterTransformiix(nsIComponentManager *aCompMgr,
nsIFile *aPath,
const char *registryLocation,
const char *componentType,
const nsModuleComponentInfo *info)
{
nsresult rv = NS_OK;
nsCOMPtr<nsICategoryManager> catman =
do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv))
return rv;
nsXPIDLCString previous;
rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_CLASS,
"XSLTProcessor",
TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID,
PR_TRUE, PR_TRUE, getter_Copies(previous));
NS_ENSURE_SUCCESS(rv, rv);
rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_CLASS,
"XPathEvaluator",
TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID,
PR_TRUE, PR_TRUE, getter_Copies(previous));
NS_ENSURE_SUCCESS(rv, rv);
rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_CLASS,
"XPathException",
TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID,
PR_TRUE, PR_TRUE, getter_Copies(previous));
NS_ENSURE_SUCCESS(rv, rv);
rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_CLASS,
"XPathExpression",
TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID,
PR_TRUE, PR_TRUE, getter_Copies(previous));
NS_ENSURE_SUCCESS(rv, rv);
rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_CLASS,
"XPathNSResolver",
TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID,
PR_TRUE, PR_TRUE, getter_Copies(previous));
NS_ENSURE_SUCCESS(rv, rv);
rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_CLASS,
"XPathResult",
TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID,
PR_TRUE, PR_TRUE, getter_Copies(previous));
NS_ENSURE_SUCCESS(rv, rv);
char* iidString = NS_GET_IID(nsIDocumentTransformer).ToString();
if (!iidString)
return NS_ERROR_OUT_OF_MEMORY;
rv = catman->AddCategoryEntry(JAVASCRIPT_DOM_INTERFACE,
"nsIDocumentTransformer",
iidString,
PR_TRUE, PR_TRUE, getter_Copies(previous));
nsCRT::free(iidString);
return rv;
}
TX_LG_IMPL;
static PRBool gInitialized = PR_FALSE;
static nsIExceptionProvider *sXPathExceptionProvider = 0;
// Perform our one-time intialization for this module
PR_STATIC_CALLBACK(nsresult)
Initialize(nsIModule* aSelf)
{
NS_PRECONDITION(!gInitialized, "module already initialized");
if (gInitialized)
return NS_OK;
gInitialized = PR_TRUE;
sXPathExceptionProvider = new nsXPathExceptionProvider();
if (!sXPathExceptionProvider)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(sXPathExceptionProvider);
nsCOMPtr<nsIExceptionService> xs =
do_GetService(NS_EXCEPTIONSERVICE_CONTRACTID);
if (xs)
xs->RegisterExceptionProvider(sXPathExceptionProvider,
NS_ERROR_MODULE_DOM_XPATH);
if (!txXMLAtoms::init())
return NS_ERROR_OUT_OF_MEMORY;
if (!txXPathAtoms::init())
return NS_ERROR_OUT_OF_MEMORY;
if (!txXSLTAtoms::init())
return NS_ERROR_OUT_OF_MEMORY;
if (!txHTMLAtoms::init())
return NS_ERROR_OUT_OF_MEMORY;
TX_LG_CREATE;
return NS_OK;
}
// Shutdown this module, releasing all of the module resources
PR_STATIC_CALLBACK(void)
Shutdown(nsIModule* aSelf)
{
NS_PRECONDITION(gInitialized, "module not initialized");
if (!gInitialized)
return;
gInitialized = PR_FALSE;
if (sXPathExceptionProvider) {
nsCOMPtr<nsIExceptionService> xs =
do_GetService(NS_EXCEPTIONSERVICE_CONTRACTID);
if (xs)
xs->UnregisterExceptionProvider(sXPathExceptionProvider,
NS_ERROR_MODULE_DOM_XPATH);
NS_RELEASE(sXPathExceptionProvider);
}
NS_IF_RELEASE(NS_CLASSINFO_NAME(XSLTProcessor));
NS_IF_RELEASE(NS_CLASSINFO_NAME(XPathEvaluator));
NS_IF_RELEASE(NS_CLASSINFO_NAME(XPathException));
NS_IF_RELEASE(NS_CLASSINFO_NAME(XPathExpression));
NS_IF_RELEASE(NS_CLASSINFO_NAME(XPathNSResolver));
NS_IF_RELEASE(NS_CLASSINFO_NAME(XPathResult));
txXMLAtoms::shutdown();
txXPathAtoms::shutdown();
txXSLTAtoms::shutdown();
txHTMLAtoms::shutdown();
TX_LG_DELETE;
}
// Component Table
static const nsModuleComponentInfo gComponents[] = {
{ "XSLTProcessor",
TRANSFORMIIX_XSLT_PROCESSOR_CID,
TRANSFORMIIX_XSLT_PROCESSOR_CONTRACTID,
XSLTProcessorConstructor,
RegisterTransformiix },
{ "XPathEvaluator",
TRANSFORMIIX_XPATH_EVALUATOR_CID,
NS_XPATH_EVALUATOR_CONTRACTID,
nsXPathEvaluatorConstructor },
{ "Transformiix Synchronous Loader",
TRANSFORMIIX_SYNCLOADER_CID,
TRANSFORMIIX_SYNCLOADER_CONTRACTID,
nsSyncLoaderConstructor },
{ "Transformiix DOMCI Extender",
TRANSFORMIIX_DOMCI_EXTENSION_CID,
TRANSFORMIIX_DOMCI_EXTENSION_CONTRACTID,
NS_DOMCI_EXTENSION_CONSTRUCTOR(Transformiix) }
};
NS_IMPL_NSGETMODULE_WITH_CTOR_DTOR(TransformiixModule, gComponents,
Initialize, Shutdown)

View File

@@ -1,160 +0,0 @@
#!nmake
#
# The contents of this file are subject to the Netscape 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/NPL/
#
# 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.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
DEPTH=..\..\..
MODULE=transformiix
REQUIRES = xpcom \
string \
dom \
widget \
content_xsl \
necko \
content \
xpconnect \
js \
htmlparser \
webshell \
docshell \
$(NULL)
include <$(DEPTH)/config/config.mak>
LIBRARY_NAME=transformiix
MODULE_NAME=TransformiixModule
CPP_OBJS= \
..\source\base\$(OBJDIR)\ArrayList.obj \
..\source\base\$(OBJDIR)\Double.obj \
..\source\base\$(OBJDIR)\List.obj \
..\source\base\$(OBJDIR)\TxObjectWrapper.obj \
..\source\base\$(OBJDIR)\Map.obj \
..\source\base\$(OBJDIR)\NamedMap.obj \
..\source\base\$(OBJDIR)\SimpleErrorObserver.obj \
..\source\base\$(OBJDIR)\Stack.obj \
..\source\base\$(OBJDIR)\StringList.obj \
..\source\base\$(OBJDIR)\Tokenizer.obj \
..\source\base\$(OBJDIR)\txAtoms.obj \
..\source\base\$(OBJDIR)\txExpandedNameMap.obj \
..\source\net\$(OBJDIR)\URIUtils.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaObjectWrapper.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaAttr.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaCDATASection.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaCharacterData.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaComment.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaDOMImplementation.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaDocument.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaDocumentFragment.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaDocumentType.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaElement.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaEntity.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaEntityReference.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaNamedNodeMap.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaNode.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaNodeList.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaNotation.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaProcInstruction.obj \
..\source\xml\dom\mozImpl\$(OBJDIR)\MozillaText.obj \
..\source\xpath\$(OBJDIR)\AdditiveExpr.obj \
..\source\xpath\$(OBJDIR)\AttributeExpr.obj \
..\source\xpath\$(OBJDIR)\AttributeValueTemplate.obj \
..\source\xpath\$(OBJDIR)\BasicNodeExpr.obj \
..\source\xpath\$(OBJDIR)\BooleanExpr.obj \
..\source\xpath\$(OBJDIR)\BooleanFunctionCall.obj \
..\source\xpath\$(OBJDIR)\BooleanResult.obj \
..\source\xpath\$(OBJDIR)\ElementExpr.obj \
..\source\xpath\$(OBJDIR)\ErrorFunctionCall.obj \
..\source\xpath\$(OBJDIR)\Expr.obj \
..\source\xpath\$(OBJDIR)\ExprLexer.obj \
..\source\xpath\$(OBJDIR)\ExprLexerChars.obj \
..\source\xpath\$(OBJDIR)\ExprParser.obj \
..\source\xpath\$(OBJDIR)\ExtensionFunctionCall.obj \
..\source\xpath\$(OBJDIR)\FilterExpr.obj \
..\source\xpath\$(OBJDIR)\FunctionCall.obj \
..\source\xpath\$(OBJDIR)\LocationStep.obj \
..\source\xpath\$(OBJDIR)\MultiplicativeExpr.obj \
..\source\xpath\$(OBJDIR)\NodeSet.obj \
..\source\xpath\$(OBJDIR)\NodeSetFunctionCall.obj \
..\source\xpath\$(OBJDIR)\nsXPathEvaluator.obj \
..\source\xpath\$(OBJDIR)\nsXPathException.obj \
..\source\xpath\$(OBJDIR)\nsXPathExpression.obj \
..\source\xpath\$(OBJDIR)\nsXPathNSResolver.obj \
..\source\xpath\$(OBJDIR)\nsXPathResult.obj \
..\source\xpath\$(OBJDIR)\NumberExpr.obj \
..\source\xpath\$(OBJDIR)\NumberFunctionCall.obj \
..\source\xpath\$(OBJDIR)\NumberResult.obj \
..\source\xpath\$(OBJDIR)\PathExpr.obj \
..\source\xpath\$(OBJDIR)\PredicateList.obj \
..\source\xpath\$(OBJDIR)\RelationalExpr.obj \
..\source\xpath\$(OBJDIR)\RootExpr.obj \
..\source\xpath\$(OBJDIR)\StringExpr.obj \
..\source\xpath\$(OBJDIR)\StringFunctionCall.obj \
..\source\xpath\$(OBJDIR)\StringResult.obj \
..\source\xpath\$(OBJDIR)\TextExpr.obj \
..\source\xpath\$(OBJDIR)\UnionExpr.obj \
..\source\xpath\$(OBJDIR)\UnaryExpr.obj \
..\source\xpath\$(OBJDIR)\VariableRefExpr.obj \
..\source\xpath\$(OBJDIR)\XPathNames.obj \
..\source\xml\$(OBJDIR)\XMLUtils.obj \
..\source\xml\$(OBJDIR)\XMLDOMUtils.obj \
..\source\xml\parser\$(OBJDIR)\nsSyncLoader.obj \
..\source\xml\parser\$(OBJDIR)\XMLParser.obj \
..\source\xslt\$(OBJDIR)\txOutputFormat.obj \
..\source\xslt\$(OBJDIR)\Names.obj \
..\source\xslt\$(OBJDIR)\Numbering.obj \
..\source\xslt\$(OBJDIR)\ProcessorState.obj \
..\source\xslt\$(OBJDIR)\txMozillaTextOutput.obj \
..\source\xslt\$(OBJDIR)\txMozillaXMLOutput.obj \
..\source\xslt\$(OBJDIR)\txRtfHandler.obj \
..\source\xslt\$(OBJDIR)\txTextHandler.obj \
..\source\xslt\$(OBJDIR)\VariableBinding.obj \
..\source\xslt\$(OBJDIR)\XSLTProcessor.obj \
..\source\xslt\functions\$(OBJDIR)\CurrentFunctionCall.obj \
..\source\xslt\functions\$(OBJDIR)\DocumentFunctionCall.obj \
..\source\xslt\functions\$(OBJDIR)\ElementAvailableFnCall.obj \
..\source\xslt\functions\$(OBJDIR)\FunctionAvailableFnCall.obj \
..\source\xslt\functions\$(OBJDIR)\GenerateIdFunctionCall.obj \
..\source\xslt\functions\$(OBJDIR)\SystemPropertyFunctionCall.obj \
..\source\xslt\functions\$(OBJDIR)\txFormatNumberFunctionCall.obj \
..\source\xslt\functions\$(OBJDIR)\txKeyFunctionCall.obj \
..\source\xslt\util\$(OBJDIR)\NodeStack.obj \
..\source\xslt\util\$(OBJDIR)\txNodeSorter.obj \
..\source\xslt\util\$(OBJDIR)\txXPathResultComparator.obj \
.\$(OBJDIR)\XSLTProcessorModule.obj \
$(NULL)
LCFLAGS = \
$(LCFLAGS) \
$(DEFINES) \
$(NULL)
LINCS= -I$(PUBLIC)\xpcom -I..\source\xslt\functions \
-I..\source\xml\dom -I..\source\xml\dom\mozImpl \
-I..\source\xpath -I..\source\xslt\util -I..\source\xml -I..\source\xslt \
-I..\source\base -I..\source\net -I..\source\xml\parser
# These are the libraries we need to link with to create the dll
LLIBS=$(LLIBS) $(LIBNSPR) \
$(DIST)\lib\unicharutil_s.lib \
$(DIST)\lib\xpcom.lib \
$(DIST)\lib\js3250.lib \
$(DIST)\lib\expat.lib
include <$(DEPTH)\config\rules.mak>

View File

@@ -1,30 +0,0 @@
var err = initInstall("Transformiix", "Transformiix", $Version$);
logComment("initInstall: " + err);
var fProgram = getFolder("Program");
logComment("fProgram: " + fProgram);
if (verifyDiskSpace(fProgram, $SpaceRequired$))
{
err = addDirectory("Transformiix",
$Version$,
"bin",
fProgram,
"",
true );
logComment("addDirectory() returned: " + err);
if (err==SUCCESS)
{
err = performInstall();
logComment("performInstall() returned: " + err);
}
else
{
cancelInstall(err);
logComment("cancelInstall() due to error: " + err);
}
}
else
cancelInstall(INSUFFICIENT_DISK_SPACE);

View File

@@ -1,227 +0,0 @@
TransforMiiX (TM)
(C) Copyright 1999, 2000, The MITRE Corporation, Keith Visco, et al. All rights reserved.
Note: The changes listed here mainly reflect the core XSLT processor and
the standalone version.
Build 20000906
-- Fixed UTF8 bug
- reported by Steve Tinney (stinney@sas.upenn.edu)
-- Updated Expat for standalone version
Build 20000725
-- Windows Makefiles are up to date to create Mozilla module
- thanx to Arthur Barrett and Justin Smith
Build 20000722
-- Fixed leading + trailing whitspace when printing comments
- reported by Jeff Bailey
-- Fixed bug in ExprLexer caused by a previous patch
- The prevToken was being set to NULL, in cases when
it shouldn't have been
- discovered when looking for an error reported by
Bernhard Zwischenbrugger
Build 20000618
-- Added changes from Olivier Gerardin for improved
handling of template parameters
Build 20000523
-- Added fix from Marc Schefer regarding OR expressions
- If the left hand expression was false...the right
hand expression was not evaluated (which should
only happen if the expression is an AND expr).
-- Added support for document() function
- implemented by Olivier Gerardin
- The second argument to the function is not yet supported
-- Added support for lang() function
- implemented by Marina Mechtcherikova
-- Fixed bug with doing xsl:copy-of on a document node.
- reported by Olivier Gerardin
Build 20000420
-- Fixed document base issue with transfromiix.cpp (Nathan)
- When an XSLT stylesheet is specified on the command line
the document base was still defaulting to the XML document,
instead of the stylesheet
-- Fixed bug in namespace-uri() function [NodeSetFunctionCall.cpp] - Marina
- If an expression was passed as an argument to the function,
which evaluated to an empty NodeSet, the context node was being
used, which is incorrect. We now just return an empty string.
-- Fixed bug in PathExpr::matches (Marina)
- expressions such as "foo//bar" would not always match
properly if more than one node existed in the final
set of "matching context nodes" (so basically if foo
was not the root element).
Build 20000419
-- Added the generate-id function
-- Added XPath Extension Function support
Build 20000413
-- Added some bug fixes from Marina
-- fixed parsing of multiple predicates
-- added support to handle attribute-set recursion
-- added appropriate calls to handle use-attribute-sets on xsl:copy
Build 20000412
-- Fixed the following Axes names in Names.cpp so that
the are compatible with the XSLT 1.0 recommendation (Marina)
-- FOLLOWING_SIBLING_AXIS - removed the trailing s
-- PRECEDING_SIBLING_AXIS - removed the trailing s
-- Added support for xsl:sort (kvisco)
-- simple sorting is working...documentation to follow
-- Added StringComparator and DefaultStringComparator
-- we need some more comparators for I18N support
-- Did some directory structure changes
- source/xsl is now source/xslt
- source/xsl/expr is now source/xpath
-- Changed xslt/XSLProcessor.* to XSLTProcessor.*
-- Incorporated some changes from Olivier Gerardin for the Expat parser
Build 20000331
-- Fixed a memory leak with translate() function (kvisco)
-- StringFunctionCall.cpp
-- Updated the necessary source files to support the changes to
the String class (kvisco)
-- Overloaded String::toCharArray to automatically create the
character array (tomk)
-- Changed String::toChar to String::toCharArray (tomk)
Build 20000327
-- Fixed "dot" bug in CNAME parsing (ExprLexer.cpp) reported by Nathan Pride
Build 20000326
-- Added Peter Van der Beken's changes to net/URIUtils for integration
within Mozilla
-- Added Marina Mechtcheriakova's changes to xml/parser/XMLParser.cpp to fix
a Unicode bug in ::startElement. Instead of improperly casting char*
as DOM_CHAR*, the proper String constructor, String(char*) is used
Build 20000322
-- Added Unicode bug fix from Lidong
Build 20000318
-- Added Olivier's implementation of the XPath Number functions
-- Added missing prototype to TxString.h (Peter Van der Beken)
Build 20000222
-- Added Attribute parent mapping since DOM 1.0 doesn't support it
-- Added default sorting of NodeSet by DocumentOrder
-- yes this is a hint that xsl:sort is will be available soon
Build 20000218
-- Fixed bug reported by Thiery Le Bouil, xsl:param was getting
processed, and then treated as a literal element
Build 20000217
-- Changed StringList#iterator to return a pointer instead of a reference
-- Added patches from Eric Du for FreeBSD, sorry for the delay in committing these
Build 20000216
-- Fixed bug with using wildcards directly after the parent operator, such as "/*"
-- Fixed bug with PredicateList#isEmpty which was returning the opposite of the
expected value.
-- this also caused default priorities to be incorrectly calculated.
Build 19991110
-- fixed bug with PathExpr and LocationStep with respect
to the ::match method
-- problem reported by Oblix
-- Added support for xsl:include (only file URLs will work)
-- fixed the built-in xsl:apply-templates rule to handle text nodes
-- moved code base to Linux platform for default development environment
Build 19990818
-- Added very simple support for xsl:number
-- Added support for xsl:with-param
-- Added more XPath support
-- added operator precedence
-- added and, or, <,<=,>=,>
Build 19990816
-- Changed focus from 19990709 to 19990813 XSLT Working Draft
-- Made some changes for Borland C compatibility
-- submitted by Stefan Heesch
-- added xsl:copy-of
-- fixed a bug with DOM Element, to allow DocumentFragments as children
Build 19990813
-- added new example: identity.xml/xsl which tests:
-- xsl:copy, node()
-- added comment(), pi(), and node()
-- XMLParser still needs to handle reading in XML comments
-- added xsl:copy
-- added xsl:processing-instruction
-- added xsl:comment
Build 19990812
-- Created base/Double.cpp (primitives.h)
-- Based off some code submitted by Larry Fitzpatrick, changed Name from
FloatPort to Double, I wanted to add more Double related methods
-- changed the NaN() method to just a static double
-- All expr classes now use Double::isNaN() and Double::NaN
-- I added Double::isInfinite, Double::POSITIVE_INFINITY and
Double::NEGATIVE_INFINITY
-- Added base/Integer.cpp back into Makefile
-- added Integer::toString(int,String);
-- changed implementation
-- Moved code to convert from Strings to doubles and from doubles to Strings
into the Double class
-- removed testdom.cpp from xml/dom
-- Added more changes from Larry Fitzpatrick and Michele Lee for
porting issues
-- added appropriate return values for:
-- xml/dom/Element.cpp
-- xml/dom/NodeDefinition.cpp
-- base/StringList.cpp
-- xsl/expr/PredicateList.cpp
-- Added remaining String Function Calls
-- substring(), substring-after(), substring-before(), translate(),
string-length()
Build 19990810
-- Added most of the Whitespace handling
-- Added ErrorObserver interface
-- ErrorObserver is now used throughout most of the code
-- Added SimpleErrorObserver implementation of ErrorObserver
-- Moved main() method from XSLProcessor.cpp to tranformiix.cpp
-- Added the following XPath functions:
-- local-part(), name(), namespace()
-- see functions.xml/functions.xsl for available functions
Build 19990806
-- Incoporated Changes From Larry Fitzpatrick
-- Added more XPath functions
-- last(), count(), string(), contains(), starts-with(), concat()
-- see functions.xml/functions.xsl for available functions
-- Added xsl:text support

View File

@@ -1,376 +0,0 @@
<HTML>
<HEAD>
<TITLE>Transformiix (TM) Contributors</TITLE>
<META name="author" content="Keith Visco">
</HEAD>
<BODY Text="#000000" BGColor="#FFFFFF">
<!-- OUTER TABLE -->
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="640">
<TR>
<TD WIDTH="80"></TD>
<TD WIDTH="560" COLSPAN="2" ALIGN="RIGHT">
<B><FONT SIZE="+2">Transfor<FONT Color="blue">Mii</FONT>X</FONT></B>
<SUP>TM</SUP>
</TD>
</TR>
<TD WIDTH="80"><BR></TD>
<TD WIDTH="560" COLSPAN="2">
<!-- Contents -->
<HR SIZE="1" />
<BR/>
<P>
Much of the original <B>Transfor<FONT Color="blue">Mii</FONT>X</B> code was ported
from <A HREF="http://www.clc-marketing.com/xslp">XSL:P</A>,
an open source XSLT processor. Thanks to all the contributors of
that project. TransforMiiX is now a whole new beast...thanks to all
of the hard work of those listed below.
<P>
<P>
<B>Core Developers</B><P>
The following people have contributed substantial time and
effort to the development.
<TABLE WIDTH="100%" CELLSPACING="1">
<TR BGColor="#EEEEEE"><TH>Name</TH><TH>Contribution</TH><TH>Company</TH></TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A href="mailto:kvisco@ziplink.net">Visco, Keith</a>
</TD>
<TD VALIGN="TOP" WIDTH="300">
Software design, and most of the XSLT implementation and
base classes implementation.
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.exoffice.com">Exoffice Technologies</A>
<P>
<FONT SIZE="-1">Formerly with The MITRE Corporation</FONT>.
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A href="mailto:tomk@mitre.org">Kneeland, Tom</a>
</TD>
<TD>
Software design, DOM Implementation. Handled the initial
Mozilla integration and wrapper classes,
String and String wrapper classes.
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.mitre.org">The MITRE Corporation</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:peter.vanderbeken@pandora.be">Van der Beken, Peter</A>
</TD>
<TD VALING="TOP" WIDTH="300">
Leading the Transformiix/Mozilla integration,
and Macintosh porting issues. Without Peter...we'd be doomed! :-)
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:axel@pike.org">Hecht, Axel</A> (AKA - Pike)
</TD>
<TD WIDTH="300">
Build issues...configure, Make, etc. Solaris porting issues.
All nasty comments on regarding make files should now be directed to Pike!
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
</TABLE>
</P>
<P>
<P>
<B>Additional Developers</B><P>
The following people have contributed to the development.
<BR>(appearing in alphabetical order)
<TABLE WIDTH="100%" CELLSPACING="1">
<TR BGColor="#EEEEEE"><TH>Name</TH><TH>Contribution</TH><TH>Company</TH></TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:arthur.barrett@march-hare.com">Barrett, Arthur</A>
</TD>
<TD WIDTH="300">
Working on Windows makefiles.
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:bbrown@solana.com">Brown, William Lewis</A>
</TD>
<TD WIDTH="300">
Working with Marina on XSLT 1.0 conformity issues.
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:duxy@leyou.com.cn">Du, Eric</A>
</TD>
<TD WIDTH="300">
FreeBSD floating point porting issues
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:lef@opentext.com">Fitzpatrick, Larry</A>
</TD>
<TD WIDTH="300">
Larry was the first contributor to the project. He sent
a number of C++ porting issues with Visual C++,
and has influenced some of the early design.
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.opentext.com">OpenText</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:ogerardin@vo.lu">Gerardin, Olivier</A>
</TD>
<TD WIDTH="300">
Implemented the XPath Number functions, the document()
function, as well as some other changes/improvements.
<FONT SIZE="-1">
(see <A HREF="changes.txt">changes.txt</A> for more info)
</FONT>
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.digitalwave.lu">DigitalWave</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:rguarino@wavo.com">Guarino, Bobbi</A>
</TD>
<TD WIDTH="300">
Solaris porting issues
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.wavo.com">Wavo Corporation</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:Heesch@t-online.de">Heesch, Stefan</A>
</TD>
<TD WIDTH="300">
C++ porting issues with Borland C
</TD>
<TD VALIGN="TOP">
<BR><A HREF=""></A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:joe@pwd.hp.com">Kuan, Joseph</A>
</TD>
<TD WIDTH="300">
Sent changes for getting TransforMiiX to build on HPUX, SUNOS and AIX.
<I>I still need to add these into the CVS.</I>
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.hp.com">Hewlett-Packard</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:mclee@oblix.com">Lee, Michele</A>
</TD>
<TD WIDTH="300">
C++ porting issues, bug reports
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.oblix.com">Oblix</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:lidong@leyou.com.cn">Lidong</A>
</TD>
<TD WIDTH="300">
Some Unicode bug fixes
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.leyou.com">Leyou.com</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:mmarina@mindspring.com">Mechtcheriakova, Marina</A>
</TD>
<TD WIDTH="300">
Contributed a number of bug fixes, as well as handling
some conformity issues.
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:kbob@oblix.com">Miller, Bob</A>
</TD>
<TD WIDTH="300">
A number of bug fixes, C++ porting issues
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.oblix.com">Oblix</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:andreas.otte@primus-online.de">Otte, Andreas</A>
</TD>
<TD WIDTH="300">
Helping Axel with build issues...configure, make files, etc.
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:npride@wavo.com">Pride, Nathan</A>
</TD>
<TD WIDTH="300">
Solaris porting issues, some general bug fixes
</TD>
<TD VALIGN="TOP">
<A HREF="http://www.wavo.com">Wavo Corporation</A>
</TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD VALIGN="TOP">
<A HREF="mailto:jjs@acis.com.au">Smith, Justin</A>
</TD>
<TD WIDTH="300">
Working on Windows Makefiles.
</TD>
<TD VALIGN="TOP">
<BR>
</TD>
</TR>
</TABLE>
<P><B>Testing/Feedback (Suggestions/Bug Reports)</B><P>
The following people have used TransforMiiX and provided feedback that has been
beneficial to the development.
<BR>(appearing in alphabetical order)
<TABLE BORDER="0" WIDTH="100%">
<TR BGColor="#EEEEEE"><TD><B>Name</B></TD><TD><B>Company</B></TD></TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD><A HREF="mailto:jbailey@nisa.net">Bailey, Jeff</A></TD>
<TD><BR></TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD><A HREF="mailto:bbrown@solana.com">Brown, William Lewis</A></TD>
<TD><BR></TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD><A HREF="mailto:tlebouil@lucent.com">Le Bouil, Thierry</A></TD>
<TD><A HREF="http://www.lucent.com">Lucent Technologies, Inc.</A></TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD><A HREF="mailto:schefer@xo3.com">Schefer, Marc</A></TD>
<TD><BR></TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD><A HREF="mailto:stinney@sas.upenn.edu">Tinney, Steve</A></TD>
<TD><A HREF="http://www.upenn.com">University of Pennsylvania</A></TD>
<!-- Comments: UTF8 bug report -->
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD><A HREF="mailto:jiwei.wang@saraide.com">Wang, Jiwei</A></TD>
<TD><BR></TD>
</TR>
<!-- Entry -->
<TR BGColor="#EEEEEE">
<TD>
<A HREF="mailto:bzwische@email.archlab.tuwien.ac.at">
Zwischenbrugger, Bernhard</A>
</TD>
<TD><BR></TD>
</TR>
</TABLE>
<!-- End Contents -->
<!-- Footer -->
<HR SIZE="1">
<FONT SIZE="-1">
The MITRE Corporation, Keith Visco (C) Copyright 1999-2000, All rights reserved<BR>
Email:<A HREF="mailto:kvisco@ziplink.net">kvisco@ziplink.net</A>
</FONT>
<!-- End Footer -->
</TD>
</TR>
</TABLE>
<!-- End Outer Table -->
</HTML>

View File

@@ -1,53 +0,0 @@
<HTML>
<HEAD>
<TITLE>TransforMiiX(tm) Known Issues</TITLE>
<META name="author" content="Keith Visco">
</HEAD>
<BODY Text="#000000" BGColor="#FFFFFF">
<!-- OUTER TABLE -->
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="640">
<TR>
<TD WIDTH="80"></TD>
<TD WIDTH="80">
<B><I><FONT SIZE="+2" COLOR="BLUE">MITRE</FONT></I></B>
</TD>
<TD WIDTH="480" ALIGN="RIGHT">
<B><FONT SIZE="+2">Transfor<FONT Color="blue">Mii</FONT>X</FONT></B>
<SUP>TM</SUP>
</TD>
</TR>
<TD WIDTH="80"><BR></TD>
<TD WIDTH="560" COLSPAN="2">
<!-- Contents -->
<HR SIZE="1" />
<BR/>
<P>
The following is the current list of known issues for <B>Transfor<FONT Color="blue">Mii</FONT>X</B>.
<P>
See also <A HREF="remaining.txt">A list of what's needed</A>
<P>
<!-- Entry -->
<B>Version: 19991110</B><BR>
<B>Finding the parent of an Attribute Node</B> - Resolved as of build 20000222
<BR>
The processor has no way of finding the parent of an attribute node. DOM level 1 does not support this, and I have not added my own indexing mechanism. I will need to write some sort of node hashtable to support this, which is what I do for XSL:P. I will have support for this soon.
<!-- End Contents -->
<!-- Footer -->
<HR SIZE="1">
<FONT SIZE="-1">
The MITRE Corporation, Keith Visco (C) Copyright 1999, All rights reserved<BR>
Email:<A HREF="mailto:kvisco@ziplink.net">kvisco@ziplink.net</A>
</FONT>
<!-- End Footer -->
</TD>
</TR>
</TABLE>
<!-- End Outer Table -->
</HTML>

View File

@@ -1,172 +0,0 @@
<HTML>
<HEAD>
<TITLE>TransforMiiX(tm)</TITLE>
<META name="author" content="Keith Visco">
</HEAD>
<BODY Text="#000000" BGColor="#FFFFFF">
<!-- OUTER TABLE -->
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="640">
<TR>
<TD WIDTH="80"></TD>
<TD WIDTH="80">
<B><I><FONT SIZE="+2" COLOR="BLUE">MITRE</FONT></I></B>
</TD>
<TD WIDTH="480" ALIGN="RIGHT">
<B><FONT SIZE="+2">Transfor<FONT Color="blue">Mii</FONT>X</FONT></B>
<SUP>TM</SUP>
</TD>
</TR>
<TD WIDTH="80"><BR></TD>
<TD WIDTH="560" COLSPAN="2">
<!-- Contents -->
<HR SIZE="1" />
<BR/>
<P>
<B>Transfor<FONT Color="blue">Mii</FONT>X</B> is an XSLT processor which is
not yet complete, but supports a good portion of the
<A HREF="http://www.w3.org/TR/1999/REC-xslt-19991116">XSLT 1.0 recommendation</A>.
<P>
<B>Transfor<FONT Color="blue">Mii</FONT>X</B> was designed to be a "standalone"
XSLT processor. This means you can call the processor from the command line,
or via the XSLProcessor API. The only thing TransforMiiX requires is an XML parser,
and the currently supported parser is
<A href="http://www.jclark.com/xml/expat.html">Expat</A> written by James Clark.
</P>
<P>
There is currently an effort undergoing to integrate
TransforMiiX with Mozilla. This effort
is not yet complete and therefor the XSLT processor cannot yet be used
within the Mozilla browser. Integration is nearing completion, however.
</P>
<P>
<HR SIZE="1">
<P>
<B>Running <B>Transfor<FONT Color="blue">Mii</FONT>X</B> from the command line</B>
<P />
The command line syntax is pretty straight forward:
<P>
<B>example:</B> <I>transfrmx -i my.xml -s my.xsl -o my.out</I>
</P>
This will process the XML source file called "my.xml" using the "my.xsl" XSLT stylesheet,
and the result will be placed in "my.out".
The "-s" flag is not required if the XSLT stylesheet is specified inside the XML source
document using the "xml-stylesheet" PI (processing instruction).
<P>
The stylesheet PI, should appear below the XML declaration
("<FONT SIZE="-1">&lt;?xml version="1.0"?&gt;</FONT>").
<P>
<B>example:</B>
<TABLE BGColor="" BORDER="1">
<TR>
<TD>
<PRE>
&lt;?xml version="1.0"?&gt;
&lt;?xml-stylesheet href="my.xsl" type="text/xsl"?&gt;
&lt;document&gt;
...
&lt;/document&gt;
</PRE>
</TD>
</TR>
</TABLE>
<P>
The command line program is in "source/main/transformiix.cpp" and is simply
a wrapper for "source/xsl/XSLProcessor.cpp" which is the TransforMiiX API.
</P>
<P>
Feel free to run the examples in the "source/examples" directory, they are a
good example of what has been implemented so far in TransforMiiX.
<P>
<HR SIZE="1">
<P>
<B>What is the current status of Transfor<FONT Color="blue">Mii</FONT>X</B>?
<P />
You can check the current status by looking three main files:
<UL>
<LI><A HREF="changes.txt">changes.txt</A> - lists the changes from different builds
<LI><A HREF="remaining.txt">remaining.txt</A> - lists what needs to be implemented.
<LI><A HREF="known-issues.html">known-issues.html</A> - lists known bugs or issues.
<BR />
-- this is a little out of date...sorry.
</UL>
<P>
<HR SIZE="1">
<P>
<B>What can I do to help finish the implementation of
Transfor<FONT Color="blue">Mii</FONT>X</B>?
<P />
There are a number of things that can be done:
<P>
<B>Development</B>
<OL>
<LI>Check out the source code, build it.
<LI>Use it.
<LI>Familiarize yourself with the code.
<LI>Look at the the "to-do" or "known issues" list and choose something
that you would like to work on.
<LI> If it's a large task, notify us that you are working on a task or issue, or
would like to contribute to the existing effort of a specific task.
<BR>
If it's a simple change you may contact us first to make sure
you are not duplicating effort, or feel free to just make the changes.
<LI>If you have CVS commit status, commit your code,
otherwise submit your code to be integrated to us.
<BR>
<B>
<FONT SIZE="-1">
Please do a "cvs update" to make sure you have the latest changes, and that
your changes work with any code changes that might have occured during
your development.
</FONT>
</B>
</OL>
<B>Bug Reporting</B>
<OL>
<LI>Check out the source code, build it.
<LI>Use it.
<LI>Submit any bugs to the
<A HREF="news://news.mozilla.org/netscape.public.mozilla.layout.xslt">
mailing list [netscape.public.mozilla.layout.xslt]</A>
or directly to us.
</OL>
<B>Documentation</B>
<OL>
<LI>Check out the source code, build it.
<LI>Use it.
<LI>Find something that's not documented - pretty easy to do at this point.
<LI>Document #3.
<LI>If you have commit status, commit your documentation, otherwise
submit your documentation directly to us.
</OL>
<P>
<B>Miscellaneous (but important)</B> <BR>
<FONT SIZE="-1">&nbsp;-- I just wouldn't be myself if I didn't add these! -- Keith :-) </FONT>
<OL>
<LI>Get me a date with Claudia Schiffer or Kelly Hu.
<LI>Get me some coffee!
</OL>
<P>
<!-- End Contents -->
<!-- Footer -->
<HR SIZE="1">
<FONT SIZE="-1">
The MITRE Corporation, Keith Visco (C) Copyright 1999, All rights reserved<BR>
Email: <A HREF="mailto:kvisco@ziplink.net">Keith Visco</A>,
<A HREF="mailto:tomk@mitre.org">Tom Kneeland</A>
</FONT>
<!-- End Footer -->
</TD>
</TR>
</TABLE>
<!-- End Outer Table -->
</HTML>

View File

@@ -1,51 +0,0 @@
TransforMiiX (TM)
(C) Copyright 1999 The MITRE Corporation, Keith Visco. All rights reserved.
Last updated: 2000/05/23
The current "target" XSLT version is the 19991116 XSLT Recommendation, which
can be found at http://www.w3.org/TR/1999/REC-xslt-19991116.
XPath implementation is also "targeting" the 19991116 version.
What's Remaining?
-- Network support for URI handling (standalone version only)
-- currently I only implemented the file:/// protocol
-- Note: Peter Van der Beken is currently working on integrating the
URIUtils for use when compiled as a Mozilla module
-- I18N support for sorting and numbering
-- Finishing sorting for xsl:for-each and xsl:apply-templates
-- simple sorting is working, see examples/sort.xml[xsl]
-- Stylesheet inclusion using xsl:import
-- xsl:include works
-- XSLT Additional functions (Section 12 in the XSLT 1.0 Rec)
See examples/functions.html for a list of available functions
-- document() has been implemented by Olivier Gerardin
- The second argument is currently not supported.
-- Remaining functions which need to be implemented:
- From section 12.2, the key() function
- From section 12.3, the format-number() function
- From section 12.4
- system-property()
- unparsed-entity-uri()
-- Add support for xsl:key (XSLT 1.0, Section 12.2)
-- Fallback (XSLT 1.0, Section 15)
-- convert result-ns, and indent-result to new xsl:output
-- some of this has been done
-- Add support for disable-output-escaping (Section 16.4) for xsl:text
-- clean up Namespace handling

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,27 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Peter Van der Beken are Copyright (C) 2000
* Peter Van der Beken. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken, peter.vanderbeken@pandora.be
* -- original author.
*
*/
#include "MacSharedPrefix.h"

View File

@@ -1,27 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Peter Van der Beken are Copyright (C) 2000
* Peter Van der Beken. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken, peter.vanderbeken@pandora.be
* -- original author.
*
*/
#include "MacSharedPrefix_debug.h"

View File

@@ -1,37 +0,0 @@
#!nmake
#
# The contents of this file are subject to the Netscape 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/NPL/
#
# 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.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
DEPTH=..\..
include <$(DEPTH)/config/config.mak>
!ifdef TX_EXE
DIRS=$(DEPTH)\expat source
!else
DIRS=source build public
!endif
include <$(DEPTH)\config\rules.mak>
standalone: setenv all
setenv:
@set INCS=-UMOZILLA_CLIENT -DXML_DTD=1 -DXML_UNICODE -DTX_EXE
@set TX_EXE=1

View File

@@ -1,5 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist:idl directory
#
nsISyncLoader.idl

View File

@@ -1,69 +0,0 @@
#
# 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.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
# Peter Van der Beken, peterv@netscape.com
# -- original author.
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = transformiix
XPIDLSRCS = \
nsISyncLoader.idl \
$(NULL)
include $(topsrcdir)/config/rules.mk

View File

@@ -1,32 +0,0 @@
#!nmake
#
# The contents of this file are subject to the Netscape 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/NPL/
#
# 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.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
# Peter Van der Beken, peterv@netscape.com
# -- original author.
DEPTH=..\..\..
XPIDLSRCS = .\nsISyncLoader.idl \
$(NULL)
MODULE=transformiix
include <$(DEPTH)\config\rules.mak>

View File

@@ -1,72 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape 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/NPL/
*
* 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.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken, peter.vanderbeken@pandora.be
*
*
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
interface nsIURI;
interface nsIDocument;
interface nsIDOMDocument;
/**
* The nsISyncLoader interface can be used to synchronously load
* a document.
*/
[scriptable, uuid(bb159fcc-1dd1-11b2-91ad-c71866a10fd4)]
interface nsISyncLoader : nsISupports {
/**
* Synchronously load the document specified in documentURI.
*
* @param documentURI The URI of the document to load.
* @param aLoader The document that is trying to load this document.
*
* @returns The document loaded from the URI.
*/
nsIDOMDocument loadDocument(in nsIURI aDocumentURI, in nsIDocument aLoader);
};
%{ C++
#define TRANSFORMIIX_SYNCLOADER_CID \
{ /* b63a5d90-1dd1-11b2-bbac-d87f512d79c9 */ \
0xb63a5d90, 0x1dd1, 0x11b2, \
{0xbb, 0xac, 0xd8, 0x7f, 0x51, 0x2d, 0x79, 0xc9} }
#define TRANSFORMIIX_SYNCLOADER_CONTRACTID \
"@mozilla.org/transformiix/syncloader;1"
%}

View File

@@ -1,120 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* 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.org code.
*
* The Initial Developer of the Original Code is Axel Hecht.
* Portions created by Axel Hecht are Copyright (C) 2001 Axel Hecht.
* All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org> (Original Author)
*/
// ----------------------
// DiffDOM(node1,node2)
// ----------------------
var isHTML = false;
function DiffDOM(node1, node2, aIsHTML)
{
isHTML = aIsHTML;
return DiffNodeAndChildren(node1, node2);
}
// namespace attributes in the second node are ignored
const nsreg = /^xmlns[|:\w]/;
// This function does the work of DiffDOM by recursively calling
// itself to explore the tree
function DiffNodeAndChildren(node1, node2)
{
if (!node1 && !node2)
return true;
if (!node1 || !node2)
return ErrorUp("One of the nodes is null", node1, node2);
if (node1.type!=node2.type)
return ErrorUp("Different node types", node1, node2);
var attributes = node2.attributes;
if (attributes && attributes.length) {
var item, name, ns, value, otherValue;
for (var index = 0; index < attributes.length; index++) {
item = attributes.item(index);
ns = item.namespaceURI;
if (ns) {
name = item.localName;
otherValue = node2.getAttributeNS(ns, name);
}
else {
name = item.nodeName;
otherValue = node2.getAttribute(name);
}
value = item.nodeValue;
if (!nsreg.test(name) && otherValue!=value) {
return ErrorUp("Different values for attribute", node1, node2);
}
}
}
else if (node1.attributes && node1.attributes.length) {
return ErrorUp("Different number of attributes", node1, node2);
}
if (isHTML) {
if (node1.nodeName.toLowerCase()!=node2.nodeName.toLowerCase())
return ErrorUp("Different node names", node1, node2);
}
else {
if (node1.nodeName!=node2.nodeName)
return ErrorUp("Different node names", node1, node2);
}
if (node1.nodeValue!=node2.nodeValue)
return ErrorUp("Different node values", node1, node2);
if (!isHTML)
if (node1.namespaceURI!=node2.namespaceURI)
return ErrorUp("Different namespace", node1, node2);
if (node1.hasChildNodes() != node2.hasChildNodes())
return ErrorUp("Different children", node1, node2);
if (node1.childNodes) {
if (node1.childNodes.length != node2.childNodes.length)
return ErrorUp("Different number of children", node1, node2);
for (var child = 0; child < node1.childNodes.length; child++) {
if (!DiffNodeAndChildren(node1.childNodes[child],
node2.childNodes[child])) {
return false;
}
}
}
return true;
}
function ErrorUp(errMsg, node1, node2)
{
dump("Error: "+errMsg+"\n");
if (node1) {
dump("Node 1: "+node1+", ");
if (node1.nodeType == Node.TEXT_NODE)
dump("nodeValue: "+node1.nodeValue+"\n");
else
dump("nodeName: "+node1.namespaceURI+":"+node1.nodeName+"\n");
}
if (node2) {
dump("Node 2: "+node2+", ");
if (node2.nodeType == Node.TEXT_NODE)
dump("nodeValue: "+node2.nodeValue+"\n");
else
dump("nodeName: "+node2.namespaceURI+":"+node2.nodeName+"\n");
}
return false;
}

View File

@@ -1,85 +0,0 @@
// ----------------------
// DumpDOM(node)
//
// Call this function to dump the contents of the DOM starting at the specified node.
// Use node = document.documentElement to dump every element of the current document.
// Use node = top.window.document.documentElement to dump every element.
//
// 8-13-99 Updated to dump almost all attributes of every node. There are still some attributes
// that are purposely skipped to make it more readable.
// ----------------------
function DumpDOM(node)
{
dump("--------------------- DumpDOM ---------------------\n");
DumpNodeAndChildren(node, "");
dump("------------------- End DumpDOM -------------------\n");
}
// This function does the work of DumpDOM by recursively calling itself to explore the tree
function DumpNodeAndChildren(node, prefix)
{
dump(prefix + "<" + node.nodeName);
var attributes = node.attributes;
if ( attributes && attributes.length )
{
var item, name, value;
for ( var index = 0; index < attributes.length; index++ )
{
item = attributes.item(index);
name = item.nodeName;
value = item.nodeValue;
if ( (name == 'lazycontent' && value == 'true') ||
(name == 'xulcontentsgenerated' && value == 'true') ||
(name == 'id') ||
(name == 'instanceOf') )
{
// ignore these
}
else
{
dump(" " + name + "=\"" + value + "\"");
}
}
}
if ( node.nodeType == 1 )
{
// id
var text = node.getAttribute('id');
if ( text && text[0] != '$' )
dump(" id=\"" + text + "\"");
}
if ( node.nodeName == "#text" )
dump(" = \"" + node.data + "\"");
dump(">\n");
// dump IFRAME && FRAME DOM
if ( node.nodeName == "IFRAME" || node.nodeName == "FRAME" )
{
if ( node.name )
{
var wind = top.frames[node.name];
if ( wind && wind.document && wind.document.documentElement )
{
dump(prefix + "----------- " + node.nodeName + " -----------\n");
DumpNodeAndChildren(wind.document.documentElement, prefix + " ");
dump(prefix + "--------- End " + node.nodeName + " ---------\n");
}
}
}
// children of nodes (other than frames)
else if ( node.childNodes )
{
for ( var child = 0; child < node.childNodes.length; child++ )
DumpNodeAndChildren(node.childNodes[child], prefix + " ");
}
}

View File

@@ -1,22 +0,0 @@
The buster is a XUL interface to the conformance tests shipped as part of
Xalan. For information about Xalan, please see http://xml.apache.org/.
For your convenience we provide a packed distribution of all needed files
in http://www.axel.pike.org/mozilla/xalan.tar.gz. Please see the included
LICENSE.txt or http://xml.apache.org/dist/LICENSE.txt for terms of
distributing those files.
To use the buster, open buster.xul with a XSLT enabled Mozilla.
Open the rdf index file shipped with the test package into the
"Xalan index", and the available tests will show up as a tree.
Once you have selected the tests you're interested in, press the button
"run checked tests", and all the tests will be run.
You can save the results into an rdf, and load it for comparison and
regression hunting.
DiffDOM tries to find out, which tests failed, and will DumpDOM both the
result and the reference solution. Not all reference solutions load
properly, those need manual love.
Good luck and fun
Axel Hecht <axel@pike.org>

View File

@@ -1,127 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT Processor.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
enablePrivilege('UniversalXPConnect');
const kFTSCID = "@mozilla.org/network/file-transport-service;1";
const nsIFileTransportService = Components.interfaces.nsIFileTransportService;
const kFileTransportService = doCreate(kFTSCID, nsIFileTransportService);
var cmdFileController =
{
supportsCommand: function(aCommand)
{
switch(aCommand) {
case 'cmd_fl_save':
case 'cmd_fl_import':
return true;
default:
}
return false;
},
isCommandEnabled: function(aCommand)
{
return this.supportsCommand(aCommand);
},
doCommand: function(aCommand)
{
enablePrivilege('UniversalXPConnect');
switch(aCommand) {
case 'cmd_fl_save':
var serial = doCreate(kRDFXMLSerializerID,
nsIRDFXMLSerializer);
var sink = new Object;
sink.content = '';
sink.write = function(aContent, aCount)
{
this.content += aContent;
return aCount;
};
serial.init(view.memoryDataSource);
serial.QueryInterface(nsIRDFXMLSource);
serial.Serialize(sink);
if (!sink.content.length) {
return;
}
// replace NC:succ with NC:orig_succ, so the rdf stuff differs
var content = sink.content.replace(/NC:succ/g,"NC:orig_succ");
var fp = doCreateRDFFP('Xalan results',
nsIFilePicker.modeSave);
var res = fp.show();
if (res == nsIFilePicker.returnOK ||
res == nsIFilePicker.returnReplace) {
var fl = fp.file;
var trans = kFileTransportService.createTransport
(fl, 26, // NS_WRONLY + NS_CREATE_FILE + NS_TRUNCATE
'w', true);
var out = trans.openOutputStream(0, -1, 0);
out.write(content, content.length);
out.close();
delete out;
delete trans;
fp.file.permissions = 420;
}
break;
case 'cmd_fl_import':
var fp = doCreateRDFFP('Previous Xalan results',
nsIFilePicker.modeLoad);
var res = fp.show();
if (res == nsIFilePicker.returnOK) {
var fl = fp.file;
if (view.previousResults) {
view.database.RemoveDataSource(view.previousResults);
view.previousResults = null;
}
view.database.RemoveDataSource(view.memoryDataSource);
view.previousResults = kRDFSvc.GetDataSource(fp.fileURL.spec);
view.database.AddDataSource(view.previousResults);
view.database.AddDataSource(view.memoryDataSource);
}
document.getElementById('obs_orig_success')
.setAttribute('hidden','false');
break;
default:
alert('Unknown Command'+aCommand);
}
}
};
registerController(cmdFileController);

View File

@@ -1,79 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT Processor.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
var xalan_field;
function onLoad()
{
view.tests_run = document.getElementById("tests_run");
view.tests_passed = document.getElementById("tests_passed");
view.tests_failed = document.getElementById("tests_failed");
view.tests_selected = document.getElementById("tests_selected");
view.tree = document.getElementById('out');
view.boxObject = view.tree.boxObject.QueryInterface(Components.interfaces.nsITreeBoxObject);
enablePrivilege('UniversalXPConnect');
// prune the spurious children of the iframe doc
{
var iframe = document.getElementById('hiddenHtml').contentDocument;
var children = iframe.childNodes;
var cn = children.length;
for (var i = cn-1; i >=0 ; i--) {
if (children[i] != iframe.documentElement)
iframe.removeChild(children[i]);
}
}
view.database = view.tree.database;
view.builder = view.tree.builder.QueryInterface(nsIXULTemplateBuilder);
view.builder.QueryInterface(nsIXULTreeBuilder);
runItem.prototype.kDatabase = view.database;
xalan_field = document.getElementById("xalan_rdf");
var persistedUrl = xalan_field.getAttribute('url');
if (persistedUrl) {
view.xalan_url = persistedUrl;
xalan_field.value = persistedUrl;
}
view.setDataSource();
return true;
}
function onUnload()
{
if (xalan_field)
xalan_field.setAttribute('url', xalan_field.value);
}

View File

@@ -1,117 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT Processor.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
// priviledge shortcut
enablePrivilege = netscape.security.PrivilegeManager.enablePrivilege;
// helper function to shortcut component creation
function doCreate(aContract, aInterface)
{
enablePrivilege('UniversalXPConnect');
return Components.classes[aContract].createInstance(aInterface);
}
// for the items, loading a text file
const IOSERVICE_CTRID = "@mozilla.org/network/io-service;1";
const nsIIOService = Components.interfaces.nsIIOService;
const SIS_CTRID = "@mozilla.org/scriptableinputstream;1"
const nsISIS = Components.interfaces.nsIScriptableInputStream;
// rdf foo, onload handler
enablePrivilege('UniversalXPConnect');
const kRDFSvcContractID = "@mozilla.org/rdf/rdf-service;1";
const kRDFInMemContractID =
"@mozilla.org/rdf/datasource;1?name=in-memory-datasource";
const kRDFContUtilsID = "@mozilla.org/rdf/container-utils;1";
const kRDFXMLSerializerID = "@mozilla.org/rdf/xml-serializer;1";
const kIOSvcContractID = "@mozilla.org/network/io-service;1";
const kStandardURL = Components.classes["@mozilla.org/network/standard-url;1"];
const nsIURL = Components.interfaces.nsIURL;
const nsIStandardURL = Components.interfaces.nsIStandardURL;
const nsIFilePicker = Components.interfaces.nsIFilePicker;
const nsIXULTreeBuilder = Components.interfaces.nsIXULTreeBuilder;
const nsIXULTemplateBuilder = Components.interfaces.nsIXULTemplateBuilder;
const kIOSvc = Components.classes[kIOSvcContractID]
.getService(Components.interfaces.nsIIOService);
const nsIRDFService = Components.interfaces.nsIRDFService;
const nsIRDFDataSource = Components.interfaces.nsIRDFDataSource;
const nsIRDFResource = Components.interfaces.nsIRDFResource;
const nsIRDFLiteral = Components.interfaces.nsIRDFLiteral;
const nsIRDFContainerUtils = Components.interfaces.nsIRDFContainerUtils;
const nsIRDFXMLSerializer = Components.interfaces.nsIRDFXMLSerializer;
const nsIRDFXMLSource = Components.interfaces.nsIRDFXMLSource;
const kRDFSvc =
Components.classes[kRDFSvcContractID].getService(nsIRDFService);
const krTypeCat = kRDFSvc.GetResource("http://home.netscape.com/NC-rdf#category");
const krTypeName = kRDFSvc.GetResource("http://home.netscape.com/NC-rdf#name");
const krTypeSucc = kRDFSvc.GetResource("http://home.netscape.com/NC-rdf#succ");
const krTypePath = kRDFSvc.GetResource("http://home.netscape.com/NC-rdf#path");
const kGood = kRDFSvc.GetLiteral("yes");
const kBad = kRDFSvc.GetLiteral("no");
const kMixed = kRDFSvc.GetLiteral("+-");
const kContUtils = doCreate(kRDFContUtilsID, nsIRDFContainerUtils);
function doCreateRDFFP(aTitle, aMode)
{
enablePrivilege('UniversalXPConnect');
var fp = doCreate("@mozilla.org/filepicker;1", nsIFilePicker);
fp.init(window, aTitle, aMode);
fp.appendFilter('*.rdf', '*.rdf');
fp.appendFilters(nsIFilePicker.filterAll);
return fp;
}
function goDoCommand(aCommand)
{
try {
enablePrivilege('UniversalXPConnect');
var controller =
top.document.commandDispatcher.getControllerForCommand(aCommand);
if (controller && controller.isCommandEnabled(aCommand))
controller.doCommand(aCommand);
}
catch(e) {
dump("An error "+e+" occurred executing the "+aCommand+" command\n");
}
}
function registerController(aController)
{
top.controllers.appendController(aController);
}

View File

@@ -1,314 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT Processor.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
var parser = new DOMParser();
var runQueue =
{
mArray : new Array(),
push : function(aRunItem)
{
this.mArray.push(aRunItem);
},
observe : function(aSubject, aTopic, aData)
{
item = this.mArray.shift();
if (item) {
item.run(this);
}
},
run : function()
{
this.observe(null,'','');
}
}
var itemCache =
{
mArray : new Array(),
getItem : function(aResource)
{
enablePrivilege('UniversalXPConnect');
// Directory selected
if (kContUtils.IsSeq(runItem.prototype.kDatabase, aResource)) {
var aSeq = kContUtils.MakeSeq(runItem.prototype.kDatabase, aResource);
dump("sequence: "+aSeq+" with "+aSeq.GetCount()+" elements\n");
var child, children = aSeq.GetElements();
var m = 0, first;
while (children.hasMoreElements()) {
m += 1;
child = children.getNext();
child.QueryInterface(nsIRDFResource);
if (!first)
first = itemCache.getItem(child);
else
itemCache.getItem(child);
}
return first;
}
var retItem = this.mArray[aResource.Value];
if (retItem) {
return retItem;
}
retItem = new runItem(aResource);
this.mArray[aResource.Value] = retItem;
runQueue.push(retItem);
return retItem;
},
rerunItem : function(aResource, aObserver)
{
var anItem = new runItem(aResource);
this.mArray[aResource.Value] = anItem;
anItem.run(aObserver);
},
observe : function(aSubject, aTopic, aData)
{
this.mRun += 1;
if (aTopic == "success") {
if (aData == "yes") {
this.mGood += 1;
}
else {
this.mFalse +=1;
}
}
}
}
function runItem(aResource)
{
enablePrivilege('UniversalXPConnect');
this.mResource = aResource;
// Directory selected
if (kContUtils.IsSeq(this.kDatabase,this.mResource)) {
var aSeq = kContUtils.MakeSeq(this.kDatabase,this.mResource);
dump("THIS SHOULDN'T HAPPEN\n");
var child, children = aSeq.GetElements();
var m = 0;
while (children.hasMoreElements()) {
m += 1;
child = children.getNext();
child.QueryInterface(nsIRDFResource);
itemCache.getItem(child);
}
}
}
enablePrivilege('UniversalXPConnect');
runItem.prototype =
{
// RDF resource associated with this test
mResource : null,
// XML documents for the XSLT transformation
mSourceDoc : null,
mStyleDoc : null,
mResDoc : null,
// XML or plaintext document for the reference
mRefDoc : null,
// bitfield signaling the loaded documents
mLoaded : 0,
kSource : 1,
kStyle : 2,
kReference : 4,
// a observer, potential argument to run()
mObserver : null,
mSuccess : null,
mMethod : 'xml',
// XSLTProcessor, shared by the instances
kProcessor : new XSLTProcessor(),
kXalan : kStandardURL.createInstance(nsIURL),
kDatabase : null,
kObservers : new Array(),
run : function(aObserver)
{
if (aObserver && typeof(aObserver)=='function' ||
(typeof(aObserver)=='object' &&
typeof(aObserver.observe)=='function')) {
this.mObserver=aObserver;
}
var name = this.kDatabase.GetTarget(this.mResource, krTypeName, true);
if (name) {
var cat = this.kDatabase.GetTarget(this.mResource, krTypeCat, true);
var path = this.kDatabase.GetTarget(this.mResource, krTypePath, true);
cat = cat.QueryInterface(nsIRDFLiteral);
name = name.QueryInterface(nsIRDFLiteral);
path = path.QueryInterface(nsIRDFLiteral);
xalan_fl = this.kXalan.resolve(cat.Value+"/"+path.Value);
xalan_ref = this.kXalan.resolve(cat.Value+"-gold/"+path.Value);
dump(name.Value+" links to "+xalan_fl+"\n");
}
// Directory selected
if (kContUtils.IsSeq(this.kDatabase,this.mResource)) {
return;
var aSeq = kContUtils.MakeSeq(this.kDatabase,this.mResource);
dump("sequence: "+aSeq+" with "+aSeq.GetCount()+" elements\n");
var child, children = aSeq.GetElements();
var m = 0;
while (children.hasMoreElements()) {
m += 1;
child = children.getNext();
child.QueryInterface(nsIRDFResource);
//var aFoo = new runItem(child);
}
}
var refContent = this.loadTextFile(xalan_ref+".out");
if (refContent.match(/^<\?xml/)) {
this.mRefDoc = parser.parseFromString(refContent, 'text/xml');
}
else if (refContent.match(/^\s*<html/gi)) {
this.mMethod = 'html';
var iframe = document.getElementById('hiddenHtml').contentDocument;
iframe.documentElement.innerHTML = refContent;
//this.mRefDoc = iframe.documentElement.cloneNode(true);
this.mRefDoc = iframe;
DumpDOM(this.mRefDoc)
}
this.mSourceDoc = document.implementation.createDocument('', '', null);
this.mSourceDoc.addEventListener("load",this.onload(1),false);
this.mSourceDoc.load(xalan_fl+".xml");
this.mStyleDoc = document.implementation.createDocument('', '', null);
this.mStyleDoc.addEventListener("load",this.onload(2),false);
this.mStyleDoc.load(xalan_fl+".xsl");
},
// onload handler helper
onload : function(file)
{
var self = this;
return function(e)
{
return self.fileLoaded(file);
};
},
fileLoaded : function(mask)
{
this.mLoaded += mask;
if (this.mLoaded < 3) {
return;
}
enablePrivilege('UniversalXPConnect');
this.mResDoc = document.implementation.createDocument("", "", null);
this.kProcessor.transformDocument(this.mSourceDoc,
this.mStyleDoc,
this.mResDoc, null);
this.mRefDoc.normalize();
try {
isGood = DiffDOM(this.mResDoc.documentElement,
this.mRefDoc.documentElement,
this.mMethod == 'html');
} catch (e) {
isGood = false;
};
dump("This succeeded. "+isGood+"\n");
if (!isGood) {
DumpDOM(this.mResDoc);
DumpDOM(this.mRefDoc);
}
isGood = isGood.toString();
for (var i=0; i<this.kObservers.length; i++) {
var aObs = this.kObservers[i];
if (typeof(aObs)=='object' && typeof(aObs.observe)=='function') {
aObs.observe(this.mResource, 'success', isGood);
}
else if (typeof(aObs)=='function') {
aObs(this.mResource, 'success', isGood);
}
}
if (this.mObserver) {
if (typeof(this.mObserver)=='object') {
this.mObserver.observe(this.mResource, 'success', isGood);
}
else {
this.mObserver(this.mResource, 'success', isGood);
}
}
},
loadTextFile : function(url)
{
enablePrivilege('UniversalXPConnect');
var serv = Components.classes[IOSERVICE_CTRID].
getService(nsIIOService);
if (!serv) {
throw Components.results.ERR_FAILURE;
}
var chan = serv.newChannel(url, null, null);
var instream = doCreate(SIS_CTRID, nsISIS);
instream.init(chan.open());
return instream.read(instream.available());
}
}
runItem.prototype.kXalan.QueryInterface(nsIStandardURL);
var cmdTestController =
{
supportsCommand: function(aCommand)
{
switch(aCommand) {
case 'cmd_tst_run':
case 'cmd_tst_runall':
return true;
default:
}
return false;
},
isCommandEnabled: function(aCommand)
{
return this.supportsCommand(aCommand);
},
doCommand: function(aCommand)
{
switch(aCommand) {
case 'cmd_tst_run':
dump("cmd_tst_run\n");
break;
case 'cmd_tst_runall':
dump("cmd_tst_runall\n");
var tst_run = document.getElementById('cmd_tst_run');
tst_run.doCommand();
default:
}
}
};
registerController(cmdTestController);

View File

@@ -1,164 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT Processor.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
var view =
{
onRun : function()
{
var sels = this.boxObject.selection,a=new Object(),b=new Object(),k;
var rowResource, name, path;
enablePrivilege('UniversalXPConnect');
for (k=0;k<sels.getRangeCount();k++){
sels.getRangeAt(k,a,b);
for (var l=a.value;l<=b.value;l++) {
rowResource = this.builder.getResourceAtIndex(l);
itemCache.getItem(rowResource);
}
}
runQueue.run();
},
displayTest : function()
{
var current = this.boxObject.selection.currentIndex;
enablePrivilege('UniversalXPConnect');
var rowResource = this.builder.getResourceAtIndex(current);
var item = itemCache.getItem(rowResource);
DumpDOM(item.mSourceDoc);
DumpDOM(item.mStyleDoc);
},
browseForRDF : function()
{
enablePrivilege('UniversalXPConnect');
var fp = doCreateRDFFP('Xalan Description File',
nsIFilePicker.modeOpen);
var res = fp.show();
if (res == nsIFilePicker.returnOK) {
var furl = fp.fileURL;
this.setDataSource(fp.fileURL.spec);
}
},
dump_Good : function()
{
enablePrivilege('UniversalXPConnect');
var enumi = this.database.GetSources(krTypeSucc, kGood, true);
var k = 0;
while (enumi.hasMoreElements()) {
k += 1;
dump(enumi.getNext().QueryInterface(nsIRDFResource).Value+"\n");
}
dump("found "+k+" good tests\n");
},
prune_ds : function()
{
enablePrivilege('UniversalXPConnect');
this.unassert(this.database.GetSources(krTypeSucc, kGood, true),
kGood);
this.unassert(this.database.GetSources(krTypeSucc, kBad, true),
kBad);
this.unassert(this.database.GetSources(krTypeSucc, kMixed, true),
kMixed);
runQueue.mArray = new Array();
itemCache.mArray = new Array();
},
unassert : function(aEnum, aResult)
{
enablePrivilege('UniversalXPConnect');
var k = 0, item;
while (aEnum.hasMoreElements()) {
k += 1;
var item = aEnum.getNext();
try {
item = item.QueryInterface(nsIRDFResource);
this.database.Unassert(item, krTypeSucc, aResult, true);
} catch (e) {
dump("Can't unassert "+item+"\n");
}
}
},
setDataSource : function(aSpec)
{
var baseSpec;
if (aSpec) {
baseSpec = aSpec;
}
else {
baseSpec = document.getElementById("xalan_rdf").value;
}
dump(baseSpec+"\n");
var currentSources = this.database.GetDataSources();
while (currentSources.hasMoreElements()) {
var aSrc = currentSources.getNext().
QueryInterface(nsIRDFDataSource);
this.database.RemoveDataSource(aSrc);
}
var ds = kRDFSvc.GetDataSource(baseSpec);
if (!ds) {
alert("Unable do load DataSource: "+baseSpec);
return;
}
view.database.AddDataSource(ds);
view.memoryDataSource = doCreate(kRDFInMemContractID,
nsIRDFDataSource);
if (!view.memoryDataSource) {
alert("Unable to create write-protect InMemDatasource,"+
" not adding "+ baseSpec);
this.database.RemoveDataSource(ds);
}
view.database.AddDataSource(view.memoryDataSource);
view.builder.rebuild();
document.getElementById("xalan_rdf").value = baseSpec;
runItem.prototype.kXalan.init(runItem.prototype.kXalan.URLTYPE_STANDARD,
0, baseSpec, null, null);
}
}
function rdfObserve(aSubject, aTopic, aData)
{
if (aTopic == "success") {
if (aData == "true") {
view.database.Assert(aSubject, krTypeSucc, kGood, true);
}
else {
view.database.Assert(aSubject, krTypeSucc, kBad, true);
}
}
}
runItem.prototype.kObservers.push(rdfObserve);

View File

@@ -1,38 +0,0 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* 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.org code.
*
* The Initial Developer of the Original Code is Axel Hecht.
* Portions created by Axel Hecht are Copyright (C) 2002 Axel Hecht.
* All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org> (Original Author)
*/
label.head {
padding: 5px;
font-size: medium;
font-weight: bold;
}
treechildren:-moz-tree-cell(success yes)
{
background-color: green ;
}
treechildren:-moz-tree-cell(success no)
{
background-color: red ;
}

View File

@@ -1,201 +0,0 @@
<?xml version="1.0"?>
<!--
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.org.
The Initial Developer of the Original Code is Axel Hecht.
Portions created by Axel Hecht are Copyright (C) 2001 Axel Hecht.
All Rights Reserved.
Contributor(s):
Axel Hecht <axel@pike.org> (Original Author)
-->
<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
<?xml-stylesheet href="buster.css" type="text/css"?>
<window id="XalanBuster"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="onLoad()" onunload="onUnload()"
title="Xalan testcase harness"
orient="vertical">
<script type="application/x-javascript" src="buster-statics.js" />
<script type="application/x-javascript" src="buster-test.js" />
<script type="application/x-javascript" src="buster-view.js" />
<script type="application/x-javascript" src="buster-handlers.js" />
<script type="application/x-javascript" src="result-view.js" />
<script type="application/x-javascript" src="buster-files.js" />
<script type="application/x-javascript" src="DumpDOM.js" />
<script type="application/x-javascript" src="DiffDOM.js" />
<commands id="busterKing">
<commandset id="buster_file_cmds">
<command id="cmd_fl_save" oncommand="goDoCommand('cmd_fl_save')" />
<command id="cmd_fl_import" oncommand="goDoCommand('cmd_fl_import')"/>
</commandset>
<commandset id="buster_test_cmds">
<command id="cmd_tst_run" oncommand="goDoCommand('cmd_tst_run')" />
<command id="cmd_tst_runall" oncommand="goDoCommand('cmd_tst_runall')" />
</commandset>
</commands>
<broadcasterset>
<broadcaster id="obs_orig_success" hidden="true"/>
<broadcaster id="not_yet" disabled="true"/>
</broadcasterset>
<menubar>
<menu id="busterFile" label="File" accesskey="f">
<menupopup id="file-popup">
<menuitem label="Save results ..." accesskey="s"
observes="cmd_fl_save"/>
<menuitem label="Import results ..." accesskey="i"
observes="cmd_fl_import"/>
</menupopup>
</menu>
<menu id="busterTests" label="Tests" accesskey="t">
<menupopup id="tests-popup">
<menuitem label="run a test" accesskey="r"
observes="cmd_tst_run"/>
<menuitem label="run all tests" accesskey="a"
observes="cmd_tst_runall"/>
</menupopup>
</menu>
</menubar>
<popupset>
<popup id="itemcontext">
<menuitem label="View Test" oncommand="onNewResultView(event)"/>
</popup>
</popupset>
<hbox>
<button label="check all" oncommand="check(true)" observes="not_yet"/>
<button label="uncheck all" oncommand="check(false)" observes="not_yet"/>
<button label="reset success" oncommand="view.prune_ds()" />
<button label="run checked tests" oncommand="view.onRun()" />
</hbox>
<hbox>
<label value="Xalan index: " class="head"/>
<textbox id="xalan_rdf" persist="url" crop="end" size="40"/>
<button label="browse..." oncommand="view.browseForRDF()" />
</hbox>
<hbox>
<groupbox orient="horizontal"><caption label="search" />
<button label="Search for " oncommand="select()" observes="not_yet"/>
<textbox style="width: 10em;" id="search-name" persist="value" /><label value=" in " />
<menulist id="search-field" persist="data" observes="not_yet">
<menupopup>
<menuitem value="1" label="Name" />
<menuitem value="2" label="Purpose" />
<menuitem value="3" label="Comment" />
</menupopup>
</menulist>
</groupbox>
<groupbox orient="horizontal"><caption label="select" />
<button label="Select from " oncommand="selectRange()" observes="not_yet"/>
<textbox style="width: 10em;" id="start-field" persist="value" />
<label value=" to " />
<textbox style="width: 10em;" id="end-field" persist="value" />
</groupbox>
<spacer flex="1" /></hbox>
<hbox><groupbox orient="horizontal"><caption label="stats" />
<label value="tests run: "/><label id="tests_run" value="0" />
<label value=" tests passed: "/><label id="tests_passed" value="0"/>
<label value=" tests failed: "/><label id="tests_failed" value="0"/>
<label value=" tests selected: "/><label id="tests_selected" value="0"/>
</groupbox>
<spacer flex="1" /></hbox>
<tree id="out" flex="1" flags="dont-build-content"
datasources="rdf:null" ref="urn:root"
context="itemcontext">
<treecols>
<treecol id="NameColumn" flex="1" label="Name" sort="?name"
primary="true" />
<splitter />
<treecol id="PurpsColumn" flex="2" label="Purpose" sort="?purp" />
<splitter />
<treecol id="SuccessColumn" flex="0" label="Success" />
<splitter observes="obs_orig_success" />
<treecol id="OrigSuccessColumn" flex="0" label="Previously"
observes="obs_orig_success" />
</treecols>
<template>
<rule>
<conditions>
<treeitem uri="?uri" />
<member container="?uri" child="?subheading" />
<triple subject="?subheading"
predicate="http://home.netscape.com/NC-rdf#purp"
object="?purp" />
</conditions>
<bindings>
<binding subject="?subheading"
predicate="http://home.netscape.com/NC-rdf#name"
object="?name" />
<binding subject="?subheading"
predicate="http://home.netscape.com/NC-rdf#succ"
object="?succ" />
<binding subject="?subheading"
predicate="http://home.netscape.com/NC-rdf#orig_succ"
object="?orig_succ" />
</bindings>
<action>
<treechildren>
<treeitem uri="?subheading" >
<treerow>
<treecell ref="NameColumn" label="?name" />
<treecell ref="PurpsColumn" label="?purp" />
<treecell ref="SuccessColumn" label="?succ"
properties="success ?succ"/>
<treecell ref="OrigSuccessColumn" label="?orig_succ"
properties="success ?orig_succ"
/>
</treerow>
</treeitem>
</treechildren>
</action>
</rule>
<rule>
<conditions>
<treeitem uri="?uri" />
<member container="?uri" child="?subheading" />
</conditions>
<bindings>
<binding subject="?subheading"
predicate="http://home.netscape.com/NC-rdf#dir"
object="?dir" />
<binding subject="?subheading"
predicate="http://home.netscape.com/NC-rdf#succ"
object="?succ" />
</bindings>
<action>
<treechildren>
<treeitem uri="?subheading" >
<treerow>
<treecell ref="NameColumn" label="?dir" />
<treecell ref="SuccessColumn" label="?succ" />
</treerow>
</treeitem>
</treechildren>
</action>
</rule>
</template>
</tree>
<iframe style="visibility:hidden; height:0px;" id="hiddenHtml" />
</window>

View File

@@ -1,69 +0,0 @@
use File::Spec;
use File::Glob ':glob';
my(@chunks);
@list = ('conf');
go_in('conf', '', 'conf');
#exit 0;
print '<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:nc="http://home.netscape.com/NC-rdf#">
<rdf:Seq about="urn:root">
<rdf:li><rdf:Description ID="conf" nc:dir="conf" /></rdf:li>
<rdf:li><rdf:Description ID="contrib" nc:dir="contrib" /></rdf:li>
<rdf:li><rdf:Description ID="perf" nc:dir="perf" /></rdf:li>
</rdf:Seq>
';
print join('',@chunks);
print '</rdf:RDF>
';
exit 0;
sub go_in {
my($current, $about, $cat) = @_;
my (@list, $entry, @subdirs, @files, @purps, $rdf);
chdir $current;
@list = glob('*');
LOOP: foreach $entry (@list) {
next LOOP if $entry=~/^CVS$/;
if (! -d $entry) {
if ($entry=~/^($current.*)\.xsl$/) {
push(@files, $1);
local ($purp);
open STYLE, $entry;
while (<STYLE>) {
if (/<!--\s+Purpose: (.+)\s*-->/) {
$purp .= $1;
}
}
$purp=~s/"/'/g; $purp=~s/&/&amp;/g; $purp=~s/</&lt;/g;
push(@purps, $purp);
}
}
else {
push(@subdirs, $entry);
}
}
#print join(" ", @subdirs)."\n";
my $topic = $about.$current; $topic=~s/\///g;
$rdf = '<rdf:Seq about="#'.$topic."\" >\n";
foreach $entry (@subdirs) {
my $id = $about.$current.$entry; $id=~s/\///g;
$rdf .= "<rdf:li><rdf:Description ID=\"$id\" nc:dir=\"$entry\" /></rdf:li>\n";
}
for (my $i=0; $i < @files; $i++) {
my $uri = $about.$current.'/'.$files[$i];
$uri=~s/[^\/]+\///;
my $id = $uri; $id=~s/\///g;
$rdf .= "<rdf:li><rdf:Description ID=\"$files[$i]\" nc:name=\"$files[$i]\" nc:purp=\"$purps[$i]\" nc:path=\"$uri\" nc:category=\"$cat\"/></rdf:li>\n";
}
$rdf .= "</rdf:Seq>\n";
push(@chunks, $rdf);
#print join(" ", @files)."\n";
foreach $entry (@subdirs) {
go_in($entry, $about.$current.'/', $cat);
}
chdir File::Spec->updir;
}

View File

@@ -1,12 +0,0 @@
label.heading {
font-size: medium;
font-weight: bold;
}
button.close {
font-size: small;
}
iframe {
padding-left: 10px;
}

View File

@@ -1,77 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT Processor.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
var currentResultItem = new Object();
function onNewResultView(event)
{
const db = runItem.prototype.kDatabase;
const kXalan = runItem.prototype.kXalan;
var index = view.boxObject.selection.currentIndex;
enablePrivilege('UniversalXPConnect');
var res = view.builder.getResourceAtIndex(index);
var name = db.GetTarget(res, krTypeName, true);
if (!name) {
return false;
}
var cat = db.GetTarget(res, krTypeCat, true);
var path = db.GetTarget(res, krTypePath, true);
cat = cat.QueryInterface(nsIRDFLiteral);
name = name.QueryInterface(nsIRDFLiteral);
path = path.QueryInterface(nsIRDFLiteral);
xalan_fl = kXalan.resolve(cat.Value+"/"+path.Value);
xalan_ref = kXalan.resolve(cat.Value+"-gold/"+path.Value);
currentResultItem.testpath = xalan_fl;
currentResultItem.refpath = xalan_ref;
dump(name.Value+" links to "+xalan_fl+"\n");
var win = window.openDialog('result-view.xul','txBusterResult',
'chrome,width=800,height=800,dialog=no',
currentResultItem);
}
function onResultViewLoad(event)
{
var arg = window.arguments[0];
document.getElementById('src').setAttribute('src', 'view-source:'+
arg.testpath+'.xml');
document.getElementById('style').setAttribute('src', 'view-source:'+
arg.testpath+'.xsl');
document.getElementById('ref').setAttribute('src', arg.refpath+'.out');
return true;
}

View File

@@ -1,53 +0,0 @@
<?xml version="1.0"?>
<!--
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.org.
The Initial Developer of the Original Code is Axel Hecht.
Portions created by Axel Hecht are Copyright (C) 2002 Axel Hecht.
All Rights Reserved.
Contributor(s):
Axel Hecht <axel@pike.org> (Original Author)
-->
<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
<?xml-stylesheet href="result-view.css" type="text/css"?>
<window id="buster-result-view"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical"
onload="onResultViewLoad()">
<script type="application/x-javascript" src="DumpDOM.js" />
<script type="application/x-javascript" src="buster-statics.js" />
<script type="application/x-javascript" src="buster-test.js" />
<script type="application/x-javascript" src="result-view.js" />
<script>
</script>
<hbox>
<button class="close" label="close this window"
oncommand="window.close()" />
</hbox>
<vbox flex="1">
<label class="heading" value="XML Source:" />
<iframe flex="1" id="src" />
</vbox>
<vbox flex="1">
<label class="heading" value="XSL Source:" />
<iframe flex="1" id="style" />
</vbox>
<vbox flex="1">
<label class="heading" value="Reference Source:" />
<iframe flex="1" id="ref" />
</vbox>
</window>

View File

@@ -1,35 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = base net xml xpath xslt
ifdef TX_EXE
DIRS += main
endif
include $(topsrcdir)/config/rules.mk

View File

@@ -1,277 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is Keith Visco
* Portions created by Keith Visco are
* Copyright (C) 1999, 2000 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
#include "ArrayList.h"
/*
Implementation of ArrayList
*/
//-------------/
//- Constants -/
//-------------/
const int ArrayList::DEFAULT_SIZE = 17;
//----------------/
//- Constructors -/
//----------------/
/**
* Creates a new ArrayList with the default Size
**/
ArrayList::ArrayList() {
initialize(DEFAULT_SIZE);
} //-- ArrayList
/**
* Creates a new ArrayList with the given Size
* @param size the size the list should be initialized to
**/
ArrayList::ArrayList(int size) {
initialize(size);
} //-- ArrayList
/**
* Helper method for Constructors
**/
void ArrayList::initialize(int size) {
elements = new TxObject*[size];
for ( int i = 0; i < size; i++ ) elements[i] = 0;
elementCount = 0;
bufferSize = size;
initialSize = size;
} //-- initialize
/**
* Destructor for ArrayList, does not delete elements by default
**/
ArrayList::~ArrayList() {
delete [] elements;
} //-- ~ArrayList
/**
* Adds the specified TxObject to this ArrayList
* @param object the TxObject to add to the ArrayList
**/
void ArrayList::add(TxObject* object) {
if (!object) return;
if (elementCount == bufferSize) increaseSize();
elements[elementCount++] = object;
} //-- add
/**
* Adds the given TxObject to this ArrayList at the specified index.
* @param object the TxObject to add
* @return true if the object has been properly added at the correct index.
**/
MBool ArrayList::add(int index, TxObject* object) {
if ((index < 0) || (index > elementCount)) return MB_FALSE;
// make sure we have room to add the object
if (elementCount == bufferSize) increaseSize();
if (index == elementCount) {
elements[elementCount++] = object;
}
else {
shiftUp(index);
elements[index] = object;
++elementCount;
}
return MB_TRUE;
} //-- add
/**
* Removes all elements from the list
**/
void ArrayList::clear() {
for (int i = 0; i < elementCount; i++) {
elements[i] = 0;
}
elementCount = 0;
} //-- clear
/**
* Removes all elements from the list
* @param deleteObjects allows specifying whether or not to delete the TxObjects
* that are currently in the list.
*
* Note: If object deletion is enabled this method will check for duplicate references
* in the list to prevent possible seg faults and will therefore run slower than an algorithm
* that doesn't check for duplicates.
**/
void ArrayList::clear(MBool deleteObjects) {
if (deleteObjects) {
for (int i = 0; i < elementCount; i++) {
if (elements[i]) {
TxObject* tmp = elements[i];
elements[i] = 0;
//-- check for duplicates to avoid attempting to free memory that
//-- has already been freed
int idx = i+1;
for ( ; idx < elementCount; idx++) {
if (elements[idx] == tmp) elements[idx] = 0;
}
delete tmp;
}
}
elementCount = 0;
}
else clear();
} //-- clear(MBool);
/**
* Returns true if the specified TxObject is contained in the list.
* @param object the TxObject to search for
* @return true if specified object is contained in the list
**/
MBool ArrayList::contains(TxObject* object) {
return (MBool)(indexOf(object) >= 0);
} //-- contains
/**
* Copies the elements of this ArrayList, into the destination ArrayList
**/
void ArrayList::copyInto(ArrayList& dest) const {
for ( int i = 0; i < elementCount; i++ ) dest.add(elements[i]);
} //-- copyInto
/**
* Returns the TxObject at the specified position in this ArrayList.
* @param index the position of the object to return, if the index
* is out-of-bounds, 0 will be returned.
**/
TxObject* ArrayList::get(int index) {
if ((index < 0) || index >= elementCount) return 0;
return elements[index];
} //-- get
/**
* Returns the index of the specified object,
* or -1 if the object is not contained in the ArrayList
* @param object the TxObject to get the index of
**/
int ArrayList::indexOf(TxObject* object) {
for (int i = 0; i < elementCount; i++)
if (object == elements[i]) return i;
return -1;
} //-- indexOf
/**
* Removes the TxObject at the specified index
* @param index the position of the TxObject to remove
* @return the TxObject that was removed from the list
**/
TxObject* ArrayList::remove(int index) {
if ((index < 0) || (index >= elementCount)) return 0;
TxObject* object = elements[index];
shiftDown(index+1);
--elementCount;
return object;
} //-- remove
/**
* Removes the the specified TxObject from the list
* @param object the TxObject to remove from the list
* @return true if the object was removed from the list
**/
MBool ArrayList::remove(TxObject* object) {
int index = indexOf(object);
if (index > -1) {
remove(index);
}
else return MB_FALSE;
return MB_TRUE;
} //-- remove
/**
* Returns the number of elements in the ArrayList
* @return the number of elements in the ArrayList
**/
int ArrayList::size() const{
return elementCount;
} //-- size
//-------------------/
//- Private Methods -/
//-------------------/
/**
* increase the capacity by a factor of its initial size
**/
void ArrayList::increaseSize() {
if (initialSize == 0) bufferSize += DEFAULT_SIZE;
else bufferSize += initialSize;
TxObject** tmp = elements;
elements = new TxObject*[bufferSize];
int i=0;
for (;i < elementCount; i++) elements[i] = tmp[i];
for (;i<bufferSize;i++)elements[i] = 0;
delete [] tmp;
} //-- increaseSize
/**
* Shifts all elements at the specified index to down by 1
**/
void ArrayList::shiftDown(int index) {
if ((index <= 0) || (index > elementCount)) return;
for (int i = index; i < elementCount; i++) {
elements[i-1] = elements[i];
}
elements[elementCount-1] = 0;
} //-- shiftDown
/**
* Shifts all elements at the specified index up by 1
**/
void ArrayList::shiftUp(int index) {
if (index == elementCount) return;
if (elementCount == bufferSize) increaseSize();
//-- from Java
//-- System.arraycopy(elements, index, elements, index + 1, elementCount - index);
for (int i = elementCount; i > index; i--) {
elements[i] = elements[i-1];
}
} //-- shiftUp

View File

@@ -1,179 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is Keith Visco
* Portions created by Keith Visco are
* Copyright (C) 1999, 2000 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
/**
* ArrayList is a simple array which will grow automatically, similar to
* the Vector class in that other more popular object oriented programming language.
**/
#ifndef TRANSFRMX_ARRAYLIST_H
#define TRANSFRMX_ARRAYLIST_H
#include "TxObject.h"
#include "baseutils.h"
class ArrayList {
public:
//----------------/
//- Constructors -/
//----------------/
/**
* Creates a new ArrayList with the default Size
**/
ArrayList();
/**
* Creates a new ArrayList with the specified Size
**/
ArrayList(int size);
/**
* Destructor for ArrayList, will not delete TxObject References
* by default
**/
virtual ~ArrayList();
/**
* Adds the specified TxObject to this ArrayList
* @param object the TxObject to add to the ArrayList
**/
void add(TxObject* object);
/**
* Adds the given TxObject to this ArrayList at the specified index.
* @param object the TxObject to add
* @return true if the object has been properly added at the correct index.
**/
MBool add(int index, TxObject* object);
/**
* Removes all elements from the list
**/
void clear();
/**
* Removes all elements from the list
* @param deleteObjects allows specifying whether or not to delete the TxObjects
* that are currently in the list
**/
void clear(MBool deleteObjects);
/**
* Returns true if the specified TxObject is contained in the list.
* @param object the TxObject to search for
* @return true if specified object is contained in the list
**/
MBool contains(TxObject* object);
/**
* Copies the elements of this ArrayList, into the destination ArrayList
**/
void copyInto(ArrayList& dest) const;
/**
* Returns the TxObject at the specified position in this ArrayList.
* @param index the position of the object to return, if the index
* is out-of-bounds, 0 will be returned.
**/
TxObject* get(int index);
/**
* Returns the index of the specified object,
* or -1 if the object is not contained in the ArrayList
* @param object the TxObject to get the index of
**/
int indexOf(TxObject* object);
/**
* Removes the TxObject at the specified index
* @param index the position of the TxObject to remove
* @return the TxObject that was removed from the list
**/
TxObject* remove(int index);
/**
* Removes the the specified TxObject from the list
* @param object the TxObject to remove from the list
* @return true if the object was removed from the list
**/
MBool remove(TxObject* object);
/**
* Returns the number of elements in the list
* @return the number of elements in the list
**/
int size() const;
private:
//-------------------/
//- Private Members -/
//-------------------/
static const int DEFAULT_SIZE;
TxObject** elements;
int initialSize;
int bufferSize;
/**
* The next available location in the elements array
**/
int elementCount;
//-------------------/
//- Private Methods -/
//-------------------/
/**
* Helper method for constructors
**/
void initialize(int size);
/**
* increase the NodeSet capacity by a factor of its initial size
**/
void increaseSize();
/**
* Shifts all elements at the specified index to down by 1
**/
void shiftDown(int index);
/**
* Shifts all elements at the specified index up by 1
**/
void shiftUp(int index);
}; //-- ArrayList
#endif

View File

@@ -1,80 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
#include "CommandLineUtils.h"
void CommandLineUtils::getOptions
(NamedMap& options, int argc, char** argv, StringList& flags)
{
String arg;
String flag;
for (int i = 0; i < argc; i++) {
arg.clear();
arg.append(argv[i]);
if (!arg.isEmpty() && (arg.charAt(0) == '-')) {
// clean up previous flag
if (!flag.isEmpty()) {
options.put(flag, new String(arg));
flag.clear();
}
// get next flag
arg.subString(1,flag);
//-- check full flag, otherwise try to find
//-- flag within string
if (!flags.contains(flag)) {
PRUint32 idx = 1;
String tmpFlag;
while(idx <= flag.length()) {
flag.subString(0,idx, tmpFlag);
if (flags.contains(tmpFlag)) {
if (idx < flag.length()) {
String* value = new String();
flag.subString(idx, *value);
options.put(tmpFlag,value);
break;
}
}
else if (idx == flag.length()) {
cout << "invalid option: -" << flag << endl;
}
++idx;
}// end while
}
}// if flag char '-'
else {
// Store both flag key and number key
if (!flag.isEmpty())
options.put(flag, new String(arg));
flag.clear();
}
}// end for
if (!flag.isEmpty())
options.put(flag, new String("no value"));
} //-- getOptions

View File

@@ -1,40 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
#ifndef TRANSFRMX_COMMANDLINEUTILS_H
#define TRANSFRMX_COMMANDLINEUTILS_H
#include "StringList.h"
#include "NamedMap.h"
class CommandLineUtils {
public:
static void getOptions
(NamedMap& options, int argc, char** argv, StringList& flags);
};
#endif

View File

@@ -1,275 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
*
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Larry Fitzpatrick, lef@opentext.com
*
* Eric Du, duxy@leyou.com.cn
* -- added fix for FreeBSD
*
* NaN/Infinity code copied from the JS-library with permission from
* Netscape Communications Corporation: http://www.mozilla.org/js
* http://lxr.mozilla.org/seamonkey/source/js/src/jsnum.h
*
*/
#include "primitives.h"
#include <math.h>
#include <stdlib.h>
#ifdef WIN32
#include <float.h>
#endif
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
#endif
#ifndef TX_EXE
#include "prdtoa.h"
#else
#include <stdio.h>
#endif
/*
* Utility class for doubles
*/
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#ifdef __alpha__
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#else
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
#endif
fp_except_t oldmask = fpsetmask(~allmask);
#endif
/*
* Macros to workaround math-bugs bugs in various platforms
*/
#ifdef IS_BIG_ENDIAN
#define TX_DOUBLE_HI32(x) (((PRUint32 *)&(x))[0])
#define TX_DOUBLE_LO32(x) (((PRUint32 *)&(x))[1])
#else
#define TX_DOUBLE_HI32(x) (((PRUint32 *)&(x))[1])
#define TX_DOUBLE_LO32(x) (((PRUint32 *)&(x))[0])
#endif
#define TX_DOUBLE_HI32_SIGNBIT 0x80000000
#define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
#define TX_DOUBLE_HI32_MANTMASK 0x000fffff
//-- Initialize Double related constants
#ifdef IS_BIG_ENDIAN
const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
0xffffffff};
const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
#else
const PRUint32 nanMask[2] = {0xffffffff,
TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
#endif
const double Double::NaN = *((double*)nanMask);
const double Double::POSITIVE_INFINITY = *((double*)infMask);
const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);
/*
* Determines whether the given double represents positive or negative
* inifinity
*/
MBool Double::isInfinite(double aDbl)
{
return ((TX_DOUBLE_HI32(aDbl) & ~TX_DOUBLE_HI32_SIGNBIT) == TX_DOUBLE_HI32_EXPMASK &&
!TX_DOUBLE_LO32(aDbl));
}
/*
* Determines whether the given double is NaN
*/
MBool Double::isNaN(double aDbl)
{
return ((TX_DOUBLE_HI32(aDbl) & TX_DOUBLE_HI32_EXPMASK) == TX_DOUBLE_HI32_EXPMASK &&
(TX_DOUBLE_LO32(aDbl) || (TX_DOUBLE_HI32(aDbl) & TX_DOUBLE_HI32_MANTMASK)));
}
/*
* Determines whether the given double is negative
*/
MBool Double::isNeg(double aDbl)
{
return (TX_DOUBLE_HI32(aDbl) & TX_DOUBLE_HI32_SIGNBIT) != 0;
}
/*
* Converts the given String to a double, if the String value does not
* represent a double, NaN will be returned
*/
double Double::toDouble(const String& aSrc)
{
PRUint32 idx = 0;
PRUint32 len = aSrc.length();
MBool digitFound = MB_FALSE;
// leading whitespace
while (idx < len &&
(aSrc.charAt(idx) == ' ' ||
aSrc.charAt(idx) == '\n' ||
aSrc.charAt(idx) == '\r' ||
aSrc.charAt(idx) == '\t'))
++idx;
// sign char
if (idx < len && aSrc.charAt(idx) == '-')
++idx;
// integer chars
while (idx < len &&
aSrc.charAt(idx) >= '0' &&
aSrc.charAt(idx) <= '9') {
++idx;
digitFound = MB_TRUE;
}
// decimal separator
if (idx < len && aSrc.charAt(idx) == '.') {
++idx;
// fraction chars
while (idx < len &&
aSrc.charAt(idx) >= '0' &&
aSrc.charAt(idx) <= '9') {
++idx;
digitFound = MB_TRUE;
}
}
// ending whitespace
while (idx < len &&
(aSrc.charAt(idx) == ' ' ||
aSrc.charAt(idx) == '\n' ||
aSrc.charAt(idx) == '\r' ||
aSrc.charAt(idx) == '\t'))
++idx;
// "."==NaN, ".0"=="0."==0
if (digitFound && idx == len) {
char* buf = aSrc.toCharArray();
double res = buf ? atof(buf) : Double::NaN;
delete [] buf;
return res;
}
return Double::NaN;
}
/*
* Converts the value of the given double to a String, and places
* The result into the destination String.
* @return the given dest string
*/
String& Double::toString(double aValue, String& aDest)
{
// check for special cases
if (isNaN(aValue)) {
aDest.append("NaN");
return aDest;
}
if (isInfinite(aValue)) {
if (aValue < 0)
aDest.append('-');
aDest.append("Infinity");
return aDest;
}
int bufsize;
if (fabs(aValue) > 1)
bufsize = (int)log10(fabs(aValue)) + 30;
else
bufsize = 30;
char* buf = new char[bufsize];
if (!buf) {
NS_ASSERTION(0, "out of memory");
return aDest;
}
#ifndef TX_EXE
PRIntn intDigits, sign;
char* endp;
PR_dtoa(aValue, 0, 0, &intDigits, &sign, &endp, buf, bufsize-1);
if (sign)
aDest.append('-');
int i;
for (i = 0; i < endp - buf; i++) {
if (i == intDigits)
aDest.append('.');
aDest.append(buf[i]);
}
for (; i < intDigits; i++)
aDest.append('0');
#else
sprintf(buf, "%1.10f", aValue);
MBool deciPassed = MB_FALSE;
MBool printDeci = MB_FALSE;
int zeros=0;
int i;
for (i = 0; buf[i]; i++) {
if (buf[i] == '.') {
deciPassed = MB_TRUE;
printDeci = MB_TRUE;
}
else if (deciPassed && buf[i] == '0') {
zeros++;
}
else {
if (printDeci) {
aDest.append('.');
printDeci = MB_FALSE;
}
for ( ;zeros ;zeros--)
aDest.append('0');
aDest.append(buf[i]);
}
}
#endif
delete [] buf;
return aDest;
}

View File

@@ -1,100 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
#ifndef MITRE_ERROROBSERVER_H
#define MITRE_ERROROBSERVER_H
#include "baseutils.h"
#include "TxString.h"
#include <iostream.h>
/**
* A simple interface for observing errors
**/
class ErrorObserver {
public:
enum ErrorLevel {FATAL = 0, NORMAL, WARNING};
/**
* Default Destructor for ErrorObserver
**/
virtual ~ErrorObserver() {};
/**
* Notifies this Error observer of a new error, with default
* level of NORMAL
**/
virtual void recieveError(String& errorMessage) = 0;
/**
* Notifies this Error observer of a new error using the given error level
**/
virtual void recieveError(String& errorMessage, ErrorLevel level) = 0;
}; //-- ErrorObserver
/**
* A simple ErrorObserver which allows printing error messages to a stream
**/
class SimpleErrorObserver : public ErrorObserver {
public:
/**
* Creates a new SimpleErrorObserver.
* All errors will be printed to the console (cout).
**/
SimpleErrorObserver();
/**
* Creates a new SimpleErrorObserver.
* All errors will be printed to the given ostream.
**/
SimpleErrorObserver(ostream& errStream);
virtual ~SimpleErrorObserver() {};
/**
* Notifies this Error observer of a new error, with default
* level of NORMAL
**/
virtual void recieveError(String& errorMessage);
/**
* Notifies this Error observer of a new error using the given error level
**/
virtual void recieveError(String& errorMessage, ErrorLevel level);
virtual void supressWarnings(MBool supress);
private:
ostream* errStream;
MBool hideWarnings;
}; //-- SimpleErrorObserver
#endif

View File

@@ -1,424 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Bob Miller, kbob@oblix.com
* -- plugged core leak.
*
* Jonas Sicking, sicking@bigfoot.com
* -- Cleanup/bugfix/features in Iterator
* Added tx prefix to classnames
*/
#include "List.h"
#ifdef TX_EXE
#include <iostream.h>
#endif
//----------------------------/
//- Implementation of txList -/
//----------------------------/
/**
* Default constructor for a txList;
**/
txList::txList() {
firstItem = 0;
lastItem = 0;
itemCount = 0;
} //-- txList;
/**
* txList destructor, cleans up ListItems, but will not delete the Object
* references
*/
txList::~txList() {
ListItem* item = firstItem;
while (item) {
ListItem* tItem = item;
item = item->nextItem;
delete tItem;
}
} //-- ~txList
void txList::insert(int index, void* objPtr) {
if (index >= itemCount) {
insertBefore(objPtr, 0);
}
else {
//-- add to middle of list
ListItem* nextItem = firstItem;
for (int i = 0; i < index; i++)
nextItem = nextItem->nextItem;
insertBefore(objPtr, nextItem);
}
} //-- insert
void txList::add(void* objPtr) {
insertBefore(objPtr, 0);
} //-- add
/**
* Returns the object located at the given index. This may
* be slow or fast depending on the implementation.
* Note:
* Currently this list is implemented via a linked list, so
* this method will be slow (unless the list only has a couple
* members) as it will need traverse the links each time
* @return the object located at the given index
**/
void* txList::get(int index) {
if (index < 0 || index >= itemCount)
return 0;
int c = 0;
ListItem* item = firstItem;
while ((c != index) && item) {
item = item->nextItem;
++c;
}
if (item)
return item->objPtr;
return 0;
} //-- get(int)
txList::ListItem* txList::getFirstItem() {
return firstItem;
} //-- getFirstItem
txList::ListItem* txList::getLastItem() {
return lastItem;
} //-- getLastItem
/**
* Returns the number of items in this txList
**/
PRInt32 List::getLength() {
return itemCount;
} //-- getLength
/**
* Inserts the given Object pointer as the item just after refItem.
* If refItem is a null pointer the Object will be inserted at the
* beginning of the txList (ie, insert after nothing).
* This method assumes refItem is a member of this list, and since this
* is a private method, I feel that's a valid assumption
**/
void txList::insertAfter(void* objPtr, ListItem* refItem) {
//-- if refItem == null insert at front
if (!refItem)
insertBefore(objPtr, firstItem);
else
insertBefore(objPtr, refItem->nextItem);
} //-- insertAfter
/**
* Inserts the given Object pointer as the item just before refItem.
* If refItem is a null pointer the Object will be inserted at the
* end of the txList (ie, insert before nothing).
* This method assumes refItem is a member of this list, and since this
* is a private method, I feel that's a valid assumption
**/
void txList::insertBefore(void* objPtr, ListItem* refItem) {
ListItem* item = new ListItem;
if (!item)
return;
item->objPtr = objPtr;
item->nextItem = 0;
item->prevItem = 0;
//-- if refItem == null insert at end
if (!refItem) {
//-- add to back of list
if (lastItem) {
lastItem->nextItem = item;
item->prevItem = lastItem;
}
lastItem = item;
if (!firstItem)
firstItem = item;
}
else {
//-- insert before given item
item->nextItem = refItem;
item->prevItem = refItem->prevItem;
refItem->prevItem = item;
if (item->prevItem)
item->prevItem->nextItem = item;
else
firstItem = item;
}
// increase the item count
++itemCount;
} //-- insertBefore
/**
* Returns a txListIterator for this txList
**/
txListIterator* txList::iterator() {
return new txListIterator(this);
}
void* txList::remove(void* objPtr) {
ListItem* item = firstItem;
while (item) {
if (item->objPtr == objPtr) {
remove(item);
delete item;
return objPtr;
}
item = item->nextItem;
}
// not in list
return 0;
} //-- remove
txList::ListItem* txList::remove(ListItem* item) {
if (!item)
return item;
//-- adjust the previous item's next pointer
if (item->prevItem) {
item->prevItem->nextItem = item->nextItem;
}
//-- adjust the next item's previous pointer
if (item->nextItem) {
item->nextItem->prevItem = item->prevItem;
}
//-- adjust first and last items
if (item == firstItem)
firstItem = item->nextItem;
if (item == lastItem)
lastItem = item->prevItem;
//-- decrease Item count
--itemCount;
return item;
} //-- remove
//------------------------------------/
//- Implementation of txListIterator -/
//------------------------------------/
/**
* Creates a new txListIterator for the given txList
* @param list, the txList to create an Iterator for
**/
txListIterator::txListIterator(txList* list) {
this->list = list;
currentItem = 0;
atEndOfList = MB_FALSE;
} //-- txListIterator
txListIterator::~txListIterator() {
//-- overrides default destructor to do nothing
} //-- ~txListIterator
/**
* Adds the Object pointer to the txList pointed to by this txListIterator.
* The Object pointer is inserted as the next item in the txList
* based on the current position within the txList
* @param objPtr the Object pointer to add to the list
**/
void txListIterator::addAfter(void* objPtr) {
if (currentItem || !atEndOfList)
list->insertAfter(objPtr, currentItem);
else
list->insertBefore(objPtr, 0);
} //-- addAfter
/**
* Adds the Object pointer to the txList pointed to by this txListIterator.
* The Object pointer is inserted as the previous item in the txList
* based on the current position within the txList
* @param objPtr the Object pointer to add to the list
**/
void txListIterator::addBefore(void* objPtr) {
if (currentItem || atEndOfList)
list->insertBefore(objPtr, currentItem);
else
list->insertAfter(objPtr, 0);
} //-- addBefore
/**
* Returns true if a sucessful call to the next() method can be made
* @return MB_TRUE if a sucessful call to the next() method can be made,
* otherwise MB_FALSE
**/
MBool txListIterator::hasNext() {
MBool hasNext = MB_FALSE;
if (currentItem)
hasNext = (currentItem->nextItem != 0);
else if (!atEndOfList)
hasNext = (list->firstItem != 0);
return hasNext;
} //-- hasNext
/**
* Returns true if a sucessful call to the previous() method can be made
* @return MB_TRUE if a sucessful call to the previous() method can be made,
* otherwise MB_FALSE
**/
MBool txListIterator::hasPrevious() {
MBool hasPrevious = MB_FALSE;
if (currentItem)
hasPrevious = (currentItem->prevItem != 0);
else if (atEndOfList)
hasPrevious = (list->lastItem != 0);
return hasPrevious;
} //-- hasPrevious
/**
* Returns the next Object pointer in the list
**/
void* txListIterator::next() {
void* obj = 0;
if (currentItem)
currentItem = currentItem->nextItem;
else if (!atEndOfList)
currentItem = list->firstItem;
if (currentItem)
obj = currentItem->objPtr;
else
atEndOfList = MB_TRUE;
return obj;
} //-- next
/**
* Returns the previous Object in the list
**/
void* txListIterator::previous() {
void* obj = 0;
if (currentItem)
currentItem = currentItem->prevItem;
else if (atEndOfList)
currentItem = list->lastItem;
if (currentItem)
obj = currentItem->objPtr;
atEndOfList = MB_FALSE;
return obj;
} //-- previous
/**
* Returns the current Object
**/
void* txListIterator::current() {
if (currentItem)
return currentItem->objPtr;
return 0;
} //-- current
/**
* Moves the specified number of steps
**/
void* txListIterator::advance(int i) {
void* obj = 0;
if (i > 0) {
if (!currentItem && !atEndOfList) {
currentItem = list->firstItem;
--i;
}
for (; currentItem && i > 0; i--)
currentItem = currentItem->nextItem;
atEndOfList = currentItem == 0;
}
else if (i < 0) {
if (!currentItem && atEndOfList) {
currentItem = list->lastItem;
++i;
}
for (; currentItem && i < 0; i++)
currentItem = currentItem->prevItem;
atEndOfList = MB_FALSE;
}
if (currentItem)
obj = currentItem->objPtr;
return obj;
} //-- advance
/**
* Removes the Object last returned by the next() or previous() methods;
* @return the removed Object pointer
**/
void* txListIterator::remove() {
void* obj = 0;
if (currentItem) {
obj = currentItem->objPtr;
txList::ListItem* item = currentItem;
previous(); //-- make previous item the current item
list->remove(item);
delete item;
}
return obj;
} //-- remove
/**
* Resets the current location within the txList to the beginning of the txList
**/
void txListIterator::reset() {
atEndOfList = MB_FALSE;
currentItem = 0;
} //-- reset
/**
* Move the iterator to right after the last element
**/
void txListIterator::resetToEnd() {
atEndOfList = MB_TRUE;
currentItem = 0;
} //-- moveToEnd

View File

@@ -1,221 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Jonas Sicking, sicking@bigfoot.com
* -- Cleanup/bugfix/features in Iterator
* Added tx prefix to classnames
*
*/
#ifndef TRANSFRMX_LIST_H
#define TRANSFRMX_LIST_H
#include "baseutils.h"
#include "TxObject.h"
class txListIterator;
/**
* Represents an ordered list of Object pointers. Modeled after a Java 2 List.
**/
class txList : public TxObject {
friend class txListIterator;
public:
/**
* Creates an empty txList
**/
txList();
/**
* txList destructor, object references will not be deleted.
**/
virtual ~txList();
/**
* Returns the object located at the given index. This may
* be slow or fast depending on the implementation.
* @return the object located at the given index
**/
void* get(int index);
/**
* Returns the number of items in this txList
**/
PRInt32 getLength();
/**
* Returns a txListIterator for this txList
**/
txListIterator* iterator();
/**
* Adds the given Object to the specified position in the list
**/
void insert(int index, void* objPtr);
/**
* Adds the given Object to the list
**/
void add(void* objPtr);
/**
* Removes the given Object pointer from the list
**/
void* remove(void* objPtr);
protected:
struct ListItem {
ListItem* nextItem;
ListItem* prevItem;
void* objPtr;
};
ListItem* getFirstItem();
ListItem* getLastItem();
/**
* Removes the given ListItem pointer from the list
**/
ListItem* remove(ListItem* sItem);
private:
ListItem* firstItem;
ListItem* lastItem;
PRInt32 itemCount;
void insertAfter(void* objPtr, ListItem* sItem);
void insertBefore(void* objPtr, ListItem* sItem);
};
/**
* An Iterator for the txList Class
**/
class txListIterator {
public:
/**
* Creates a new txListIterator for the given txList
* @param list, the txList to create an Iterator for
**/
txListIterator(txList* list);
/**
* Destructor, destroys a given instance of a txListIterator
**/
virtual ~txListIterator();
/**
* Adds the Object pointer to the txList pointed to by this txListIterator.
* The Object pointer is inserted as the next item in the txList
* based on the current position within the txList
* @param objPtr the Object pointer to add to the list
**/
virtual void addAfter(void* objPtr);
/**
* Adds the Object pointer to the txList pointed to by this txListIterator.
* The Object pointer is inserted as the previous item in the txList
* based on the current position within the txList
* @param objPtr the Object pointer to add to the list
**/
virtual void addBefore(void* objPtr);
/**
* Returns true if a sucessful call to the next() method can be made
* @return MB_TRUE if a sucessful call to the next() method can be made,
* otherwise MB_FALSE
**/
virtual MBool hasNext();
/**
* Returns true if a sucessful call to the previous() method can be made
* @return MB_TRUE if a sucessful call to the previous() method can be made,
* otherwise MB_FALSE
**/
virtual MBool hasPrevious();
/**
* Returns the next Object pointer from the list
**/
virtual void* next();
/**
* Returns the previous Object pointer from the list
**/
virtual void* previous();
/**
* Returns the current Object
**/
virtual void* current();
/**
* Moves the specified number of steps
**/
virtual void* advance(int i);
/**
* Removes the Object last returned by the next() or previous() methods;
* @return the removed Object pointer
**/
virtual void* remove();
/**
* Resets the current location within the txList to the beginning of the txList
**/
virtual void reset();
/**
* Resets the current location within the txList to the end of the txList
**/
virtual void resetToEnd();
private:
//-- points to the current list item
txList::ListItem* currentItem;
//-- points to the list to iterator over
txList* list;
//-- we've moved off the end of the list
MBool atEndOfList;
};
typedef txList List;
typedef txListIterator ListIterator;
#endif

View File

@@ -1,63 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
ifndef TX_EXE
MODULE = transformiix
REQUIRES = string \
xpcom \
unicharutil \
dom \
content \
widget \
$(NULL)
endif
CPPSRCS = ArrayList.cpp \
Double.cpp \
List.cpp \
Map.cpp \
TxObjectWrapper.cpp \
NamedMap.cpp \
SimpleErrorObserver.cpp \
Stack.cpp \
StringList.cpp \
Tokenizer.cpp \
txAtoms.cpp \
txExpandedNameMap.cpp
ifdef TX_EXE
CPPSRCS += CommandLineUtils.cpp \
TxString.cpp
endif
include $(topsrcdir)/config/rules.mk
INCLUDES += -I$(srcdir)/../xpath -I$(srcdir)/../xslt -I$(srcdir)/../xml \
-I$(srcdir)/../xml/dom -I$(srcdir)
libs:: $(OBJS)

View File

@@ -1,269 +0,0 @@
/*
* 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 XSL:P XSLT processor.
*
* The Initial Developer of the Original Code is Keith Visco.
*
* Portions created by Keith Visco (C) 1999-2000 Keith Visco.
* All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
/*
* A Hashtable for TxObjects
*/
#include "Map.h"
//-------------/
//- Constants -/
//-------------/
const int Map::DEFAULT_SIZE = 13;
//----------------/
//- Constructors -/
//----------------/
/**
* Creates a new Map with the default Size
**/
Map::Map() {
initialize(DEFAULT_SIZE);
} //-- Map
/**
* Creates a new Map with the specified number of buckets
**/
Map::Map(int size) {
initialize(size);
} //-- Map
/**
* Helper method for Constructors
**/
void Map::initialize(PRInt32 size) {
//-- by default the Map will not delete it's
//-- object references
mOwnership = eOwnsNone;
//-- create a new array of bucket pointers
elements = new BucketItem*[size];
//-- initialize all elements to 0;
for ( PRInt32 i = 0; i < size; i++ ) elements[i] = 0;
numberOfBuckets = size;
numberOfElements = 0;
} //-- initialize
/**
* Destructor for Map
**/
Map::~Map() {
clear();
delete [] elements;
} //-- ~Map
/**
* Removes all elements from the Map. Deletes objects according
* to the mOwnership attribute
**/
void Map::clear() {
for (int i = 0; i < numberOfBuckets; i++) {
BucketItem* bktItem = elements[i];
while (bktItem) {
BucketItem* tItem = bktItem;
bktItem = bktItem->next;
if (mOwnership & eOwnsItems)
delete tItem->item;
if (mOwnership & eOwnsKeys)
delete tItem->key;
//--delete tItem;
delete tItem;
}
}
numberOfElements = 0;
} //-- clear
/**
* Returns the object reference in this Map associated with the given key
* @return the object reference in this Map associated with the given key
**/
TxObject* Map::get(TxObject* key) {
BucketItem* item = getBucketItem(key);
if ( item ) return item->item;
return 0;
} //-- get
/**
* Returns true if there are no objects in this map.
* @return true if there are no objects in this map.
**/
MBool Map::isEmpty() {
return (numberOfElements == 0) ? MB_TRUE : MB_FALSE;
} //-- isEmpty
/**
* Returns a List of all the keys in this Map.
* Please delete this List when you are done with it
**/
List* Map::keys() {
List* list = new List();
for (int i = 0; i < numberOfBuckets; i++) {
BucketItem* item = elements[i];
while (item) {
list->add(item->key);
item = item->next;
}
}
return list;
} //-- keys
/**
* Adds the TxObject reference to the map and associates it with the given
* key
**/
void Map::put(TxObject* key, TxObject* obj) {
if ((!key) || (!obj)) return;
//-- compute hash for key
PRUint32 hashCode = key->hashCode();
//-- calculate index
int idx = hashCode % numberOfBuckets;
//-- fetch first item in bucket
BucketItem* bktItem = elements[idx];
//-- if bktItem is 0 then there are no items is this Bucket,
//-- add to front of list
if ( !bktItem ) {
elements[idx] = createBucketItem(key, obj);
++numberOfElements;
}
//-- find current item, or add to end of list
else {
BucketItem* prevItem = bktItem;
//-- advance to next spot
while ( bktItem ) {
//-- if current key equals desired key, break
if ( bktItem->key->equals(key) ) {
break;
}
prevItem = bktItem;
bktItem = bktItem->next;
}
//-- if we did not find a bucket Item create a new one
if ( !bktItem) {
bktItem = createBucketItem(key, obj);
prevItem->next = bktItem;
bktItem->prev = prevItem;
++numberOfElements;
}
//-- we found bucket item, just set value
else bktItem->item = obj;
}
} //-- put
/**
* Removes the the specified TxObject from the Map
* @param key the TxObject which is used to calculate the hashCode of
* the TxObject to remove from the Map
* @return the TxObject removed from the Map
**/
TxObject* Map::remove(TxObject* key) {
if (!key) return 0;
// compute hash for key
PRUint32 hashCode = key->hashCode();
int idx = hashCode % numberOfBuckets;
BucketItem* bktItem = elements[idx];
while ( bktItem ) {
if ( bktItem->key->equals(key) ) break;
bktItem = bktItem->next;
}
if ( bktItem ) {
if (bktItem == elements[idx]) elements[idx] = bktItem->next;
else bktItem->prev->next = bktItem->next;
numberOfElements--;
TxObject* txObject = bktItem->item;
bktItem->item = 0;
delete bktItem;
return txObject;
}
return 0;
} //-- remove
/**
* Sets the ownership flag.
**/
void Map::setOwnership(txMapOwnership aOwnership) {
mOwnership = aOwnership;
} //-- setOwnership
/**
* Returns the number of key-object pairs in the Map
* @return the number of key-object pairs in the Map
**/
int Map::size() {
return numberOfElements;
} //-- size
//-------------------/
//- Private Methods -/
//-------------------/
Map::BucketItem* Map::createBucketItem(TxObject* key, TxObject* obj)
{
BucketItem* bktItem = new BucketItem;
bktItem->next = 0;
bktItem->prev = 0;
bktItem->key = key;
bktItem->item = obj;
return bktItem;
} //-- createBucketItem
Map::BucketItem* Map::getBucketItem(TxObject* key) {
// compute hash for key
PRUint32 hashCode = key->hashCode();
int idx = hashCode % numberOfBuckets;
BucketItem* bktItem = elements[idx];
while ( bktItem ) {
if ( bktItem->key->equals(key) ) return bktItem;
bktItem = bktItem->next;
}
return bktItem;
} //-- getBucketItem

View File

@@ -1,167 +0,0 @@
/*
* 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 XSL:P XSLT processor.
*
* The Initial Developer of the Original Code is Keith Visco.
*
* Portions created by Keith Visco (C) 1999-2000 Keith Visco.
* All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
/*
* A Hashtable for TxObjects
*/
#ifndef TRANSFRMX_MAP_H
#define TRANSFRMX_MAP_H
#include "baseutils.h"
#include "TxObject.h"
#include "List.h"
class Map : public TxObject {
public:
//----------------/
//- Constructors -/
//----------------/
/**
* Creates a new Map with the default Size
**/
Map();
/**
* Creates a new Map with the specified number of buckets
**/
Map(int size);
/**
* Destructor for a Map table, will not delete references unless
* The setObjectDeletion flag has been set to MB_TRUE
**/
virtual ~Map();
/**
* Returns a list of all the keys of this Map.
*
* You will need to delete this List when you are done with it.
**/
List* keys();
/**
* Returns the object reference in this Map associated with the given name
* @return the object reference in this Map associated with the given name
**/
TxObject* get(TxObject* key);
/**
* Adds the TxObject reference to the map and associates it with the given
* key
**/
void put(TxObject* key, TxObject* obj);
/**
* enum used when setting ownership
**/
enum txMapOwnership
{
eOwnsNone = 0x00,
eOwnsItems = 0x01,
eOwnsKeys = 0x02,
eOwnsKeysAndItems = eOwnsItems | eOwnsKeys
};
/**
* Removes all elements from the Map. Deletes objects according
* to the mOwnership attribute
**/
void clear();
/**
* Returns true if there are no elements in this Map
* @return true if there are no elements in this Map.
**/
MBool isEmpty();
// THIS IS DEPRECATED
TxObject* remove(TxObject* key);
// THIS IS DEPRECATED, use setOwnership
void setObjectDeletion(MBool deleteObjects)
{
setOwnership(deleteObjects ? eOwnsKeysAndItems : eOwnsNone );
}
/**
* Sets the ownership attribute.
**/
void setOwnership(txMapOwnership aOwnership);
/**
* Returns the number of key-element pairs in the Map
* @return the number of key-element in the Map
**/
int size();
//-------------------/
//- Private Members -/
//-------------------/
private:
struct BucketItem {
TxObject* key;
TxObject* item;
BucketItem* next;
BucketItem* prev;
};
static const int DEFAULT_SIZE;
// map table
BucketItem** elements;
PRInt32 numberOfBuckets;
PRInt32 numberOfElements;
/**
* The ownership flag. Used to decide which objects are
* owned by the map and thus should be deleted when released
**/
txMapOwnership mOwnership;
//-------------------/
//- Private Methods -/
//-------------------/
BucketItem* createBucketItem(TxObject* key, TxObject* objPtr);
BucketItem* getBucketItem(TxObject* key);
/**
* Helper method for constructors
**/
void initialize(int size);
}; //-- NamedMap
#endif

View File

@@ -1,329 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Bob Miller, Oblix Inc., kbob@oblix.com
* -- fixed memory leak in NamedMap::hashKey method by deleting
* up char[] chars;
*
*/
/**
* A Named Map for TxObjects
**/
#include "NamedMap.h"
//-------------/
//- Constants -/
//-------------/
const int NamedMap::DEFAULT_SIZE = 17;
//----------------/
//- Constructors -/
//----------------/
/**
* Creates a new NamedMap with the default Size
**/
NamedMap::NamedMap() {
initialize(DEFAULT_SIZE);
} //-- NamedMap
/**
* Creates a new NamedMap with the specified number of buckets
**/
NamedMap::NamedMap(int size) {
initialize(size);
} //-- NamedMap
/**
* Helper method for Constructors
**/
void NamedMap::initialize(PRInt32 size) {
//-- by default the NamedMap will not delete it's
//-- object references
doObjectDeletion = MB_FALSE;
//-- create a new array of bucket pointers
elements = new BucketItem*[size];
//-- initialize all elements to 0;
for ( PRInt32 i = 0; i < size; i++ ) elements[i] = 0;
numberOfBuckets = size;
numberOfElements = 0;
} //-- initialize
/**
* Destructor for NamedMap
**/
NamedMap::~NamedMap() {
clear();
delete [] elements;
} //-- ~NamedMap
/**
* Removes all elements from the NamedMap. If the object deletion flag
* has been set to true (by a call to setObjectDeletion) objects
* will also be deleted as they are removed from the map
**/
void NamedMap::clear() {
clear(doObjectDeletion);
} //-- clear
/**
* Removes all elements from the NamedMap
**/
void NamedMap::clear(MBool deleteObjects) {
for (int i = 0; i < numberOfBuckets; i++) {
BucketItem* bktItem = elements[i];
while (bktItem) {
BucketItem* tItem = bktItem;
bktItem = bktItem->next;
//-- repoint item to 0 to prevent deletion
if ( ! deleteObjects ) tItem->item = 0;
else {
delete tItem->item;
}
//--delete tItem;
delete tItem;
}
}
numberOfElements = 0;
} //-- clear
void NamedMap::dumpMap() {
#if 0
// XXX DEBUG OUTPUT
cout << "#NamedMap -------- { "<<endl;
for (int i = 0; i < numberOfBuckets; i++) {
cout << "[";
if (i < 10 ) cout << '0';
cout << i << "]->{";
BucketItem* item = elements[i];
MBool hasPrevItem = MB_FALSE;
while (item) {
if (hasPrevItem) cout << ", ";
cout << item->key;
hasPrevItem = MB_TRUE;
item = item->next;
}
cout << "}"<<endl;
}
cout <<"} #NamedMap"<<endl;
#endif
} //-- dumpMap
/**
* Returns the object reference in this Map associated with the given name
* @return the object reference in this Map associated with the given name
**/
TxObject* NamedMap::get(const String& key) {
BucketItem* item = getBucketItem(key);
if ( item ) return item->item;
return 0;
} //-- get
/**
* Returns true if there are no objects in this map.
* @return true if there are no objects in this map.
**/
MBool NamedMap::isEmpty() {
return (numberOfElements == 0) ? MB_TRUE : MB_FALSE;
} //-- isEmpty
/**
* Returns a StringList of all the keys in this NamedMap.
* Please delete this List when you are done with it
**/
StringList* NamedMap::keys() {
StringList* list = new StringList();
if (!list)
return NULL;
for (int i = 0; i < numberOfBuckets; i++) {
BucketItem* item = elements[i];
while (item) {
list->add(new String(item->key));
item = item->next;
}
}
return list;
} //-- keys
/**
* Adds the specified Node to the top of this Stack.
* @param node the Node to add to the top of the Stack
**/
void NamedMap::put(const String& key, TxObject* obj) {
//-- compute hash for key
unsigned long hashCode = hashKey(key);
//-- calculate index
int idx = hashCode % numberOfBuckets;
//-- fetch first item in bucket
BucketItem* bktItem = elements[idx];
//-- if bktItem is 0 then there are no items is this Bucket,
//-- add to front of list
if ( !bktItem ) {
elements[idx] = createBucketItem(key, obj);
++numberOfElements;
}
//-- find current item, or add to end of list
else {
BucketItem* prevItem = bktItem;
//-- advance to next spot
while ( bktItem ) {
//-- if current key equals desired key, break
if ( bktItem->key.isEqual(key) ) {
break;
}
prevItem = bktItem;
bktItem = bktItem->next;
}
//-- if we did not find a bucket Item create a new one
if ( !bktItem) {
bktItem = createBucketItem(key, obj);
prevItem->next = bktItem;
bktItem->prev = prevItem;
++numberOfElements;
}
//-- we found bucket item, just set value
else {
if (doObjectDeletion)
delete bktItem->item;
bktItem->item = obj;
}
}
} //-- put
/**
* Removes the the specified Object from the NamedMap
* @param key the key of the Object to remove from the NamedMap
* @return the Object being removed
**/
TxObject* NamedMap::remove(const String& key) {
// compute hash for key
long hashCode = hashKey(key);
int idx = hashCode % numberOfBuckets;
BucketItem* bktItem = elements[idx];
while ( bktItem && !(key.isEqual(bktItem->key))) {
bktItem = bktItem->next;
}
if ( bktItem ) {
if (bktItem == elements[idx]) elements[idx] = bktItem->next;
else {
bktItem->prev->next = bktItem->next;
if (bktItem->next)
bktItem->next->prev = bktItem->prev;
};
numberOfElements--;
TxObject* txObject = bktItem->item;
bktItem->item = 0;
delete bktItem;
return txObject;
}
return 0;
} //-- remove
/**
* Sets the object deletion flag. If set to true, objects in
* the NamedMap will be deleted upon calling the clear() method, or
* upon destruction. By default this is false.
**/
void NamedMap::setObjectDeletion(MBool deleteObjects) {
doObjectDeletion = deleteObjects;
} //-- setObjectDeletion
/**
* Returns the number of elements in the NodeStack
* @return the number of elements in the NodeStack
**/
int NamedMap::size() {
return numberOfElements;
} //-- size
//-------------------/
//- Private Methods -/
//-------------------/
NamedMap::BucketItem* NamedMap::createBucketItem(const String& key, TxObject* objPtr)
{
BucketItem* bktItem = new BucketItem;
if (bktItem) {
bktItem->next = 0;
bktItem->prev = 0;
bktItem->key = key;
bktItem->item = objPtr;
}
return bktItem;
} //-- createBucketItem
NamedMap::BucketItem* NamedMap::getBucketItem(const String& key) {
// compute hash for key
long hashCode = hashKey(key);
int idx = hashCode % numberOfBuckets;
BucketItem* bktItem = elements[idx];
while ( bktItem ) {
if ( bktItem->key.isEqual(key) ) return bktItem;
bktItem = bktItem->next;
}
return bktItem;
} //-- getBucketItem
/**
**/
unsigned long NamedMap::hashKey(const String& key)
{
PRUint32 len = key.length();
unsigned long hashCode = 0;
for (PRUint32 i = 0; i < len; i++) {
hashCode += ((PRInt32)key.charAt(i)) << 3;
}
return hashCode;
} //-- hashKey

View File

@@ -1,160 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
/**
* A Named Map for TxObjects
**/
#ifndef TRANSFRMX_NAMEDMAP_H
#define TRANSFRMX_NAMEDMAP_H
#include "baseutils.h"
#include "TxObject.h"
#include "StringList.h"
class NamedMap : public TxObject {
public:
//----------------/
//- Constructors -/
//----------------/
/**
* Creates a new NodeStack with the default Size
**/
NamedMap();
/**
* Creates a new NodeStack with the specified number of buckets
**/
NamedMap(int size);
/**
* Destructor for a NamedMap table, will not delete references unless
* The setObjectDeletion flag has been set to MB_TRUE
**/
virtual ~NamedMap();
/**
* Returns a list of all the keys of this NamedMap.
*
* You will need to delete this List when you are done with it.
**/
StringList* keys();
/**
* Returns the object reference in this Map associated with the given name
* @return the object reference in this Map associated with the given name
**/
TxObject* get(const String& name);
/**
* Adds the Object reference to the map and associates it with the given name
**/
void put(const String& name, TxObject* obj);
/**
* Removes all elements from the Map table
**/
void clear();
void clear(MBool doObjectDeletion);
/**
* Returns true if there are no Nodes in the NodeSet.
* @return true if there are no Nodes in the NodeSet.
**/
MBool isEmpty();
/**
* Removes the Node at the specified index from the NodeSet
* @param index the position in the NodeSet to remove the Node from
* @return the Node that was removed from the list
**/
TxObject* remove(const String& key);
/**
* Sets the object deletion flag. If set to true, objects in
* the NamedMap will be deleted upon calling the clear() method, or
* upon destruction. By default this is false.
**/
void setObjectDeletion(MBool deleteObjects);
/**
* Returns the number of key-element pairs in the NamedMap
* @return the number of key-element in the NamedMap
**/
int size();
void dumpMap();
//-------------------/
//- Private Members -/
//-------------------/
private:
struct BucketItem {
String key;
TxObject* item;
BucketItem* next;
BucketItem* prev;
};
static const int DEFAULT_SIZE;
// map table
BucketItem** elements;
PRInt32 numberOfBuckets;
PRInt32 numberOfElements;
MBool doObjectDeletion;
//-------------------/
//- Private Methods -/
//-------------------/
BucketItem* createBucketItem(const String& key, TxObject* objPtr);
BucketItem* getBucketItem(const String& key);
unsigned long hashKey(const String& key);
/**
* Helper method for constructors
**/
void initialize(int size);
}; //-- NamedMap
#endif

View File

@@ -1,84 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
#include "ErrorObserver.h"
/**
* Creates a new SimpleErrorObserver.
* All errors will be printed to the console (cout).
**/
SimpleErrorObserver::SimpleErrorObserver() {
#ifdef TX_EXE
errStream = &cout;
#endif
hideWarnings = MB_FALSE;
} //-- SimpleErrorObserver
/**
* Creates a new SimpleErrorObserver.
* All errors will be printed to the given ostream.
**/
SimpleErrorObserver::SimpleErrorObserver(ostream& errStream) {
this->errStream = &errStream;
hideWarnings = MB_FALSE;
} //-- SimpleErrorObserver
/**
* Notifies this Error observer of a new error, with default
* level of NORMAL
**/
void SimpleErrorObserver::recieveError(String& errorMessage) {
#ifdef TX_EXE
*errStream << "error: " << errorMessage << endl;
errStream->flush();
#endif
} //-- recieveError
/**
* Notifies this Error observer of a new error using the given error level
**/
void SimpleErrorObserver::recieveError(String& errorMessage, ErrorLevel level) {
#ifdef TX_EXE
switch ( level ) {
case ErrorObserver::FATAL :
*errStream << "fatal error: ";
break;
case ErrorObserver::WARNING :
if ( hideWarnings ) return;
*errStream << "warning: ";
break;
default:
*errStream << "error: ";
break;
}
*errStream << errorMessage << endl;
errStream->flush();
#endif
} //-- recieveError
void SimpleErrorObserver::supressWarnings(MBool supress) {
this->hideWarnings = supress;
} //-- supressWarnings

View File

@@ -1,112 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
* Larry Fitzpatrick, lef@opentext.com
* -- 19990806
* - In method ::peek() changed ListItem::ListItem to List::ListItem
*
*/
/**
* Stack
**/
#include "Stack.h"
//-------------/
//- Stack.cpp -/
//-------------/
/**
* Creates a new Stack
**/
Stack::Stack() : List() {
} //-- Stack
/**
* Destructor for Stack, will not delete Object references
**/
Stack::~Stack() {
//-- the base destructor for List will do all clean up
}
/**
* Returns an iterator that will iterator over the Stack, from the topmost
* element to the bottom element.
* You will need to delete this Iterator when you are done
**/
StackIterator* Stack::iterator() {
return (StackIterator*)List::iterator();
} //-- iterator
/**
* Returns the specified Object from the top of this Stack,
* without removing it from the stack.
* @return a pointer to the object that is the top of this Stack
**/
void* Stack::peek() {
void* obj = 0;
List::ListItem* item = getFirstItem();
if ( item ) obj = item->objPtr;
return obj;
} //-- peek
/**
* Adds the specified Object to the top of this Stack.
* @param obj a pointer to the object that is to be added to the
* top of this Stack
**/
void Stack::push(void* obj) {
insert(0,obj);
} //-- push
/**
* Removes and returns the specified Object from the top of this Stack.
* @return a pointer to the object that was the top of this Stack
**/
void* Stack::pop() {
void* obj = 0;
ListItem* item = getFirstItem();
if ( item ) obj = item->objPtr;
item = remove(item);
item->objPtr = 0;
delete item;
return obj;
} //-- pop
/**
* Returns true if there are no objects in the Stack.
* @return true if there are no objects in the Stack.
**/
MBool Stack::empty() {
return (MBool) (getLength() == 0);
} //-- empty
/**
* Returns the number of elements in the Stack
* @return the number of elements in the Stack
**/
int Stack::size() {
return getLength();
} //-- size

View File

@@ -1,96 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
/**
* Stack
**/
#ifndef MITRE_STACK_H
#define MITRE_STACK_H
#include "List.h"
#include "baseutils.h"
typedef ListIterator StackIterator;
class Stack : private List {
public:
//----------------/
//- Constructors -/
//----------------/
/**
* Creates a new Stack
**/
Stack();
/**
* Destructor for Stack, will not delete Object references
**/
virtual ~Stack();
StackIterator* iterator();
/**
* Returns the specified Object from the top of this Stack,
* without removing it from the stack.
* @return a pointer to the object that is the top of this Stack
**/
void* peek();
/**
* Adds the specified Object to the top of this Stack.
* @param obj a pointer to the object that is to be added to the
* top of this Stack
**/
void push(void* obj);
/**
* Removes and returns the specified Object from the top of this Stack.
* @return a pointer to the object that was the top of this Stack
**/
void* pop();
/**
* Returns true if there are no objects in the Stack.
* @return true if there are no objects in the Stack.
**/
MBool empty();
/**
* Returns the number of elements in the Stack
* @return the number of elements in the Stack
**/
int size();
private:
}; //-- Stack
#endif

View File

@@ -1,321 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
* Bob Miller, kbob@oblix.com
* -- plugged core leak.
*
*/
/**
* StringList
**/
#ifdef TX_EXE
#include <iostream.h>
#endif
#include "StringList.h"
/**
* Creates an empty list
**/
StringList::StringList() {
firstItem = 0;
lastItem = 0;
itemCount = 0;
} //-- StringList;
/**
* StringList Destructor, Cleans up pointers and will delete the String
* references, make sure you make copies of any needed Strings
*/
StringList::~StringList() {
StringListItem* item = firstItem;
while (item) {
StringListItem* tItem = item;
item = item->nextItem;
delete tItem->strptr;
delete tItem;
}
} //-- ~StringList
void StringList::add(String* strptr) {
StringListItem* sItem = new StringListItem;
if (sItem) {
sItem->strptr = strptr;
sItem->nextItem = 0;
sItem->prevItem = lastItem;
}
if (lastItem) lastItem->nextItem = sItem;
lastItem = sItem;
if (!firstItem) firstItem = sItem;
// increase the item count
++itemCount;
} //-- add
MBool StringList::contains(String& search) {
StringListItem* sItem = firstItem;
while ( sItem ) {
if ( search.isEqual(*sItem->strptr)) return MB_TRUE;
sItem = sItem->nextItem;
}
return MB_FALSE;
} //-- contains
/**
* Returns the number of Strings in this List
**/
PRInt32 StringList::getLength() {
return itemCount;
} //-- getLength
/**
* Inserts the given String pointer as the item just after refItem.
* If refItem is a null pointer the String will inserted at the
* beginning of the List (ie, insert after nothing).
* This method assumes refItem is a member of this list, and since this
* is a private method, I feel that's a valid assumption
**/
void StringList::insertAfter(String* strptr, StringListItem* refItem) {
//-- if refItem == null insert at end
if (!refItem) {
if (firstItem) insertBefore(strptr, firstItem);
else add(strptr);
return;
}
//-- if inserting at end of list
if (refItem == lastItem) {
add(strptr);
return;
}
//-- insert into middle of list
StringListItem* sItem = new StringListItem;
if (sItem) {
sItem->strptr = strptr;
sItem->prevItem = refItem;
sItem->nextItem = refItem->nextItem;
refItem->nextItem = sItem;
// increase the item count
++itemCount;
}
} //-- insertAfter
/**
* Inserts the given String pointer as the item just before refItem.
* If refItem is a null pointer the String will inserted at the
* end of the List (ie, insert before nothing).
* This method assumes refItem is a member of this list, and since this
* is a private method, I feel that's a valid assumption
**/
void StringList::insertBefore(String* strptr, StringListItem* refItem) {
//-- if refItem == null insert at end
if (!refItem) {
add(strptr);
return;
}
StringListItem* sItem = new StringListItem;
if (sItem) {
sItem->strptr = strptr;
sItem->nextItem = refItem;
sItem->prevItem = refItem->prevItem;
refItem->prevItem = sItem;
}
if (refItem == firstItem) firstItem = sItem;
if (itemCount == 0) lastItem = sItem;
// increase the item count
++itemCount;
} //-- insertBefore
/**
* Returns a StringListIterator for this StringList, this iterator
* will need to be deleted by the caller.
**/
StringListIterator* StringList::iterator() {
return new StringListIterator(this);
} //-- iterator
String* StringList::remove(String* strptr) {
StringListItem* sItem = firstItem;
while (sItem) {
if (sItem->strptr == strptr) {
remove(sItem);
delete sItem;
return strptr;
}
sItem = sItem->nextItem;
}
// not in list
return 0;
} //-- remove
StringList::StringListItem* StringList::remove(StringList::StringListItem* sItem) {
if (sItem->prevItem) {
sItem->prevItem->nextItem = sItem->nextItem;
}
if (sItem == firstItem) firstItem = sItem->nextItem;
if (sItem == lastItem) lastItem = sItem->prevItem;
//-- decrease Item count
--itemCount;
return sItem;
} //-- remove
/**
* Removes all Strings equal to the given String from the list
* All removed strings will be destroyed
**/
void StringList::remove(String& search) {
StringListItem* sItem = firstItem;
while (sItem) {
if (sItem->strptr->isEqual(search)) {
delete sItem->strptr;
StringListItem* temp = remove(sItem);
sItem = sItem->nextItem;
delete temp;
}
else sItem = sItem->nextItem;
}
} //-- remove
//----------------------------------------/
//- Implementation of StringListIterator -/
//----------------------------------------/
/**
* Creates a new StringListIterator for the given StringList
**/
StringListIterator::StringListIterator(StringList* list) {
stringList = list;
currentItem = 0;
allowRemove = MB_FALSE;
} //-- StringListIterator
StringListIterator::~StringListIterator() {
//-- overrides default destructor to do nothing
} //-- ~StringListIterator
/**
* Adds the String pointer to the StringList of this StringListIterator.
* The String pointer is inserted as the next item in the StringList
* based on the current position within the StringList
**/
void StringListIterator::add(String* strptr) {
stringList->insertAfter(strptr,currentItem);
allowRemove = MB_FALSE;
} //-- add
/**
* Returns true if a sucessful call to the next() method can be made
**/
MBool StringListIterator::hasNext() {
if (currentItem) {
return (currentItem->nextItem != 0);
}
return (stringList->firstItem != 0);
} //-- hasNext
/**
* Returns true if a successful call to the previous() method can be made
**/
MBool StringListIterator::hasPrevious() {
if (currentItem) {
return (currentItem->prevItem != 0);
}
return MB_FALSE;
} //-- hasPrevious
/**
* Returns the next String in the list
**/
String* StringListIterator::next() {
if (currentItem) {
if (currentItem->nextItem) {
currentItem = currentItem->nextItem;
allowRemove = MB_TRUE;
return currentItem->strptr;
}
}
else {
currentItem = stringList->firstItem;
allowRemove = MB_TRUE;
if (currentItem)
return currentItem->strptr;
}
return 0;
} //-- next
/**
* Returns the previous String in the list
**/
String* StringListIterator::previous() {
if (currentItem) {
if (currentItem->prevItem) {
currentItem = currentItem->prevItem;
allowRemove = MB_TRUE;
return currentItem->strptr;
}
}
return 0;
}
//-- prev
/**
* Removes the String last return by the next() or previous();
* The removed String* is returned
**/
String* StringListIterator::remove() {
if (allowRemove == MB_FALSE) return 0;
allowRemove = MB_FALSE;
StringList::StringListItem* sItem = 0;
if (currentItem) {
// Make previous Item the current Item or null
sItem = currentItem;
if (stringList->firstItem == sItem) currentItem = 0;
stringList->remove(sItem);
return sItem->strptr;
}
return 0;
} //-- remove
/**
* Resets the current location within the StringList to the beginning
**/
void StringListIterator::reset() {
currentItem = 0;
} //-- reset

View File

@@ -1,143 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
* Bob Miller, kbob@oblix.com
* -- plugged core leak.
*
*/
/**
* A class for keeping an ordered list of Strings
**/
#ifndef TRANSFRMX_STRINGLIST_H
#define TRANSFRMX_STRINGLIST_H
#include "TxString.h"
#include "baseutils.h"
class StringListIterator;
class StringList {
friend class StringListIterator;
public:
/**
* Creates an empty StringList
**/
StringList();
/**
* StringList destructor
**/
virtual ~StringList();
MBool contains(String& search);
/**
* Returns the number of Strings in this List
**/
PRInt32 getLength();
/**
* Returns a StringListIterator for this StringList
**/
StringListIterator* iterator();
/**
* Adds the given String to the list
**/
void add(String* strptr);
/**
* Removes the given String pointer from the list
**/
String* remove(String* strptr);
/**
* Removes all Strings equal to the given String from the list
* All removed strings will be destroyed
**/
void remove(String& search);
protected:
struct StringListItem {
StringListItem* nextItem;
StringListItem* prevItem;
String* strptr;
};
private:
StringListItem* firstItem;
StringListItem* lastItem;
PRInt32 itemCount;
void insertAfter(String* strptr, StringListItem* sItem);
void insertBefore(String* strptr, StringListItem* sItem);
/**
* Removes the given StringListItem pointer from the list
**/
StringListItem* remove(StringListItem* sItem);
};
class StringListIterator {
public:
StringListIterator(StringList* list);
virtual ~StringListIterator();
void add(String* strptr);
MBool hasNext();
MBool hasPrevious();
String* next();
String* previous();
String* remove();
void reset();
private:
StringList::StringListItem* currentItem;
StringList* stringList;
MBool allowRemove;
};
#endif

View File

@@ -1,106 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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/
*
* The program provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* The Copyright owner will not be liable for any damages suffered by
* you as a result of using the Program. In no event will the Copyright
* owner be liable for any special, indirect or consequential damages or
* lost profits even if the Copyright owner has been advised of the
* possibility of their occurrence.
*
* Please see release.txt distributed with this file for more information.
*
*/
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Larry Fitzpartick, OpenText, lef@opentext.com
* -- 19990806
* -- added void return type declaration for ::nextToken()
* -- added proper cast from PRInt32 to char in ::nextToken()
*
*/
/*
* txTokenizer
* A simple String tokenizer
*/
#include "Tokenizer.h"
/*
* Creates a new Tokenizer using the given source string
*/
txTokenizer::txTokenizer(const String& aSource)
{
mCurrentPos = 0;
mSource = aSource;
mSize = mSource.length();
// Advance to start pos
while (mCurrentPos < mSize) {
UNICODE_CHAR ch = mSource.charAt(mCurrentPos);
// If character is not a whitespace, we are at start of first token
if (ch != ' ' && ch != '\n' &&
ch != '\r' && ch != '\t')
break;
++mCurrentPos;
}
}
MBool txTokenizer::hasMoreTokens()
{
return mCurrentPos < mSize;
}
void txTokenizer::nextToken(String& aBuffer)
{
aBuffer.clear();
while (mCurrentPos < mSize) {
UNICODE_CHAR ch = mSource.charAt(mCurrentPos++);
// If character is not a delimiter we append it
if (ch == ' ' || ch == '\n' ||
ch == '\r' || ch == '\t')
break;
aBuffer.append(ch);
}
// Advance to next start pos
while (mCurrentPos < mSize) {
UNICODE_CHAR ch = mSource.charAt(mCurrentPos);
// If character is not a whitespace, we are at start of next token
if (ch != ' ' && ch != '\n' &&
ch != '\r' && ch != '\t')
break;
++mCurrentPos;
}
}

View File

@@ -1,70 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
*
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Larry Fitzpatrick, OpenText, lef@opentext.com
* -- 19990806, added void return type declaration for ::nextToken()
*
*/
/**
* txTokenizer
* A simple String tokenizer
**/
#ifndef MITRE_TOKENIZER_H
#define MITRE_TOKENIZER_H
#include "baseutils.h"
#include "TxString.h"
class txTokenizer
{
public:
/*
* Creates a new txTokenizer using the given source string
*/
txTokenizer(const String& aSource);
/*
* Checks if any more tokens are avalible
*/
MBool hasMoreTokens();
/*
* Sets aBuffer to value of next token
*/
void nextToken(String& aBuffer);
private:
PRUint32 mCurrentPos;
PRUint32 mSize;
String mSource;
};
#endif

View File

@@ -1,107 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape 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/NPL/
*
* 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.org code.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
*
*
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef TxLog_h__
#define TxLog_h__
#ifdef TX_EXE
#ifdef PR_LOGGING
#include <stdio.h>
#define PRLogModuleInfo void
#define PR_NewLogModule(_name)
#define PR_FREE_IF(_name)
typedef enum PRLogModuleLevel {
PR_LOG_NONE = 0, /* nothing */
PR_LOG_ALWAYS = 1, /* always printed */
PR_LOG_ERROR = 2, /* error messages */
PR_LOG_WARNING = 3, /* warning messages */
PR_LOG_DEBUG = 4, /* debug messages */
PR_LOG_NOTICE = PR_LOG_DEBUG, /* notice messages */
PR_LOG_WARN = PR_LOG_WARNING, /* warning messages */
PR_LOG_MIN = PR_LOG_DEBUG, /* minimal debugging messages */
PR_LOG_MAX = PR_LOG_DEBUG /* maximal debugging messages */
} PRLogModuleLevel;
#define PR_LOG(_name, _level, _message) printf##_message
#else
#define PR_LOG(_name, _level, _message)
#endif
#else
#include "prlog.h"
#include "prmem.h"
#endif
#ifdef PR_LOGGING
class txLog
{
public:
static PRLogModuleInfo *xpath;
static PRLogModuleInfo *xslt;
};
#define TX_LG_IMPL \
PRLogModuleInfo * txLog::xpath = 0; \
PRLogModuleInfo * txLog::xslt = 0
#define TX_LG_CREATE \
txLog::xpath = PR_NewLogModule("xpath"); \
txLog::xslt = PR_NewLogModule("xslt")
#define TX_LG_DELETE \
PR_FREEIF(txLog::xpath); \
PR_FREEIF(txLog::xslt)
#else
#define TX_LG_IMPL
#define TX_LG_CREATE
#define TX_LG_DELETE
#endif
#endif

View File

@@ -1,71 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is Keith Visco.
* Portions created by Keith Visco (C) 1999, 2000 Keith Visco.
* All Rights Reserved..
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
*/
#ifndef TRANSFRMX_TXOBJECT_H
#define TRANSFRMX_TXOBJECT_H
#include "baseutils.h"
class TxObject {
public:
/**
* Creates a new TxObject
**/
TxObject() {};
/**
* Deletes this TxObject
**/
virtual ~TxObject() {};
/**
* Returns the Hashcode for this TxObject
**/
virtual PRUint32 hashCode() {
return NS_PTR_TO_INT32(this);
} //-- hashCode
/**
* Returns true if the given Object is equal to this object.
* By default the comparison operator == is used, but this may
* be overridden
**/
virtual MBool equals(TxObject* obj) {
return (MBool)(obj == this);
} //-- equals
};
/**
* A Simple TxObject wrapper class
**/
class TxObjectWrapper : public TxObject {
public:
TxObjectWrapper();
virtual ~TxObjectWrapper();
void* object;
};
#endif

View File

@@ -1,44 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*/
#include "TxObject.h"
//--------------------------------------/
//- A Simple TxObject wrapper class -/
//--------------------------------------/
/**
* Default Constructor
**/
TxObjectWrapper::TxObjectWrapper() {
this->object = 0;
} //-- TxObjectWrapper
/**
* Default destructor
**/
TxObjectWrapper::~TxObjectWrapper() {
this->object = 0;
} //-- ~TxObjectWrapper

View File

@@ -1,449 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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/
*
* The program provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* The Copyright owner will not be liable for any damages suffered by
* you as a result of using the Program. In no event will the Copyright
* owner be liable for any special, indirect or consequential damages or
* lost profits even if the Copyright owner has been advised of the
* possibility of their occurrence.
*
* Contributor(s):
*
* Tom Kneeland
* -- original author.
*
* Keith Visco <kvisco@ziplink.net>
* Larry Fitzpatrick
*
*/
#include "TxString.h"
#include <stdlib.h>
#include <string.h>
String::String() : mBuffer(0),
mBufferLength(0),
mLength(0)
{
}
String::String(const String& aSource) : mBuffer(aSource.toUnicode()),
mBufferLength(aSource.mLength),
mLength(aSource.mLength)
{
}
String::String(const UNICODE_CHAR* aSource,
const PRUint32 aLength) : mBuffer(0),
mBufferLength(0),
mLength(0)
{
if (!aSource) {
return;
}
PRUint32 length = aLength;
if (length == 0) {
length = unicodeLength(aSource);
}
if (!ensureCapacity(length)) {
return;
}
memcpy(mBuffer, aSource, length * sizeof(UNICODE_CHAR));
mLength = length;
}
String::~String()
{
delete [] mBuffer;
}
void String::append(const UNICODE_CHAR aSource)
{
if (!ensureCapacity(1)) {
return;
}
mBuffer[mLength] = aSource;
++mLength;
}
void String::append(const String& aSource)
{
if (!ensureCapacity(aSource.mLength)) {
return;
}
memcpy(&mBuffer[mLength], aSource.mBuffer,
aSource.mLength * sizeof(UNICODE_CHAR));
mLength += aSource.mLength;
}
void String::insert(const PRUint32 aOffset, const UNICODE_CHAR aSource)
{
if (!ensureCapacity(1)) {
return;
}
if (aOffset < mLength) {
memmove(&mBuffer[aOffset + 1], &mBuffer[aOffset],
(mLength - aOffset) * sizeof(UNICODE_CHAR));
}
mBuffer[aOffset] = aSource;
mLength += 1;
}
void String::insert(const PRUint32 aOffset, const String& aSource)
{
if (!ensureCapacity(aSource.mLength)) {
return;
}
if (aOffset < mLength) {
memmove(&mBuffer[aOffset + aSource.mLength], &mBuffer[aOffset],
(mLength - aOffset) * sizeof(UNICODE_CHAR));
}
memcpy(&mBuffer[aOffset], aSource.mBuffer,
aSource.mLength * sizeof(UNICODE_CHAR));
mLength += aSource.mLength;
}
void String::replace(const PRUint32 aOffset, const UNICODE_CHAR aSource)
{
if (aOffset < mLength) {
mBuffer[aOffset] = aSource;
}
else {
append(aSource);
}
}
void String::replace(const PRUint32 aOffset, const String& aSource)
{
if (aOffset < mLength) {
PRUint32 finalLength = aOffset + aSource.mLength;
if (finalLength > mLength) {
if (!ensureCapacity(finalLength - mBufferLength)) {
return;
}
mLength = finalLength;
}
memcpy(&mBuffer[aOffset], aSource.mBuffer,
aSource.mLength * sizeof(UNICODE_CHAR));
}
else {
append(aSource);
}
}
void String::deleteChars(const PRUint32 aOffset, const PRUint32 aCount)
{
PRUint32 cutEnd = aOffset + aCount;
if (cutEnd < mLength) {
memmove(&mBuffer[aOffset], &mBuffer[cutEnd],
(mLength - cutEnd) * sizeof(UNICODE_CHAR));
mLength -= aCount;
}
else {
mLength = aOffset;
}
}
void String::clear()
{
mLength = 0;
}
PRInt32 String::indexOf(const UNICODE_CHAR aData, const PRInt32 aOffset) const
{
NS_ASSERTION(aOffset >= 0, "Passed negative offset to indexOf.");
if (aOffset < 0) {
return kNotFound;
}
PRInt32 searchIndex = aOffset;
while (searchIndex < mLength) {
if (mBuffer[searchIndex] == aData) {
return searchIndex;
}
++searchIndex;
}
return kNotFound;
}
PRInt32 String::indexOf(const String& aData, const PRInt32 aOffset) const
{
NS_ASSERTION(aOffset >= 0, "Passed negative offset to indexOf.");
if (aOffset < 0) {
return kNotFound;
}
PRInt32 searchIndex = aOffset;
PRInt32 searchLimit = mLength - aData.mLength;
while (searchIndex <= searchLimit) {
if (memcmp(&mBuffer[searchIndex], aData.mBuffer,
aData.mLength * sizeof(UNICODE_CHAR)) == 0) {
return searchIndex;
}
++searchIndex;
}
return kNotFound;
}
PRInt32 String::lastIndexOf(const UNICODE_CHAR aData, const PRInt32 aOffset) const
{
NS_ASSERTION(aOffset >= 0, "Passed negative offset to lastIndexOf.");
if (aOffset < 0) {
return kNotFound;
}
PRUint32 searchIndex = mLength - aOffset;
while (--searchIndex >= 0) {
if (mBuffer[searchIndex] == aData) {
return searchIndex;
}
}
return kNotFound;
}
MBool String::isEqual(const String& aData) const
{
if (mLength != aData.mLength) {
return MB_FALSE;
}
return (memcmp(mBuffer, aData.mBuffer, mLength * sizeof(UNICODE_CHAR)) == 0);
}
MBool String::isEqualIgnoreCase(const String& aData) const
{
if (mLength != aData.mLength) {
return MB_FALSE;
}
UNICODE_CHAR thisChar, otherChar;
PRUint32 compLoop = 0;
while (compLoop < mLength) {
thisChar = mBuffer[compLoop];
if ((thisChar >= 'A') && (thisChar <= 'Z')) {
thisChar += 32;
}
otherChar = aData.mBuffer[compLoop];
if ((otherChar >= 'A') && (otherChar <= 'Z')) {
otherChar += 32;
}
if (thisChar != otherChar) {
return MB_FALSE;
}
++compLoop;
}
return MB_TRUE;
}
void String::setLength(const PRUint32 aLength)
{
NS_ASSERTION(mLength <= mBufferLength, "Truncating string in setLength!");
mLength = (mLength > mBufferLength) ? mBufferLength : aLength;
}
String& String::subString(const PRUint32 aStart, String& aDest) const
{
return subString(aStart, mLength, aDest);
}
String& String::subString(const PRUint32 aStart, const PRUint32 aEnd, String& aDest) const
{
PRUint32 end = (aEnd > mLength) ? mLength : aEnd;
aDest.clear();
if (aStart < end) {
PRUint32 substrLength = end - aStart;
if (!aDest.ensureCapacity(substrLength)) {
return aDest;
}
memcpy(aDest.mBuffer, &mBuffer[aStart],
substrLength * sizeof(UNICODE_CHAR));
aDest.mLength = substrLength;
}
return aDest;
}
void String::toLowerCase()
{
PRUint32 conversionLoop;
for (conversionLoop = 0; conversionLoop < mLength; ++conversionLoop) {
if ((mBuffer[conversionLoop] >= 'A') &&
(mBuffer[conversionLoop] <= 'Z'))
mBuffer[conversionLoop] += 32;
}
}
void String::toUpperCase()
{
PRUint32 conversionLoop;
for (conversionLoop = 0; conversionLoop < mLength; ++conversionLoop) {
if ((mBuffer[conversionLoop] >= 'a') &&
(mBuffer[conversionLoop] <= 'z'))
mBuffer[conversionLoop] -= 32;
}
}
String& String::operator = (const String& aSource)
{
delete [] mBuffer;
mBuffer = aSource.toUnicode();
mBufferLength = aSource.mLength;
mLength = aSource.mLength;
return *this;
}
MBool String::ensureCapacity(const PRUint32 aCapacity)
{
PRUint32 needed = aCapacity + mLength;
NS_ASSERTION(needed < (PRUint32)-1, "Asked for too large a buffer.");
if (needed == (PRUint32)-1) {
return MB_FALSE;
}
if (needed < mBufferLength) {
return MB_TRUE;
}
UNICODE_CHAR* tempBuffer = new UNICODE_CHAR[needed];
NS_ASSERTION(tempBuffer, "Couldn't allocate string buffer.");
if (!tempBuffer) {
return MB_FALSE;
}
if (mLength > 0) {
memcpy(tempBuffer, mBuffer, mLength * sizeof(UNICODE_CHAR));
}
delete [] mBuffer;
mBuffer = tempBuffer;
mBufferLength = needed;
return MB_TRUE;
}
UNICODE_CHAR* String::toUnicode() const
{
if (mLength == 0) {
return 0;
}
UNICODE_CHAR* tmpBuffer = new UNICODE_CHAR[mLength];
NS_ASSERTION(tmpBuffer, "out of memory");
if (tmpBuffer) {
memcpy(tmpBuffer, mBuffer, mLength * sizeof(UNICODE_CHAR));
}
return tmpBuffer;
}
PRUint32 String::unicodeLength(const UNICODE_CHAR* aData)
{
PRUint32 index = 0;
// Count UNICODE_CHARs Until a Unicode "NULL" is found.
while (aData[index] != 0x0000) {
++index;
}
return index;
}
ostream& operator<<(ostream& aOutput, const String& aSource)
{
PRUint32 outputLoop;
for (outputLoop = 0; outputLoop < aSource.mLength; ++outputLoop) {
aOutput << (char)aSource.charAt(outputLoop);
}
return aOutput;
}
// XXX DEPRECATED
String::String(const PRUint32 aSize) : mBuffer(0),
mBufferLength(0),
mLength(0)
{
ensureCapacity(aSize);
}
String::String(const char* aSource) : mBuffer(0),
mBufferLength(0),
mLength(0)
{
if (!aSource) {
return;
}
PRUint32 length = strlen(aSource);
if (!ensureCapacity(length)) {
return;
}
PRUint32 counter;
for (counter = 0; counter < length; ++counter) {
mBuffer[counter] = (UNICODE_CHAR)aSource[counter];
}
mLength = length;
}
void String::append(const char* aSource)
{
if (!aSource) {
return;
}
PRUint32 length = strlen(aSource);
if (!ensureCapacity(length)) {
return;
}
PRUint32 counter;
for (counter = 0; counter < length; ++counter) {
mBuffer[mLength + counter] = (UNICODE_CHAR)aSource[counter];
}
mLength += length;
}
MBool String::isEqual(const char* aData) const
{
if (!aData) {
return MB_FALSE;
}
PRUint32 length = strlen(aData);
if (length != mLength) {
return MB_FALSE;
}
PRUint32 counter;
for (counter = 0; counter < length; ++counter) {
if (mBuffer[counter] != (UNICODE_CHAR)aData[counter]) {
return MB_FALSE;
}
}
return MB_TRUE;
}
char* String::toCharArray() const
{
char* tmpBuffer = new char[mLength + 1];
NS_ASSERTION(tmpBuffer, "out of memory");
if (tmpBuffer) {
PRUint32 conversionLoop;
for (conversionLoop = 0; conversionLoop < mLength; ++conversionLoop) {
tmpBuffer[conversionLoop] = (char)mBuffer[conversionLoop];
}
tmpBuffer[mLength] = 0;
}
return tmpBuffer;
}

View File

@@ -1,243 +0,0 @@
/*
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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/
*
* The program provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* The Copyright owner will not be liable for any damages suffered by
* you as a result of using the Program. In no event will the Copyright
* owner be liable for any special, indirect or consequential damages or
* lost profits even if the Copyright owner has been advised of the
* possibility of their occurrence.
*
* Contributor(s):
*
* Tom Kneeland
* -- original author.
*
* Keith Visco <kvisco@ziplink.net>
* Larry Fitzpatrick
*
*/
#ifndef txString_h__
#define txString_h__
#include "TxObject.h"
#include "baseutils.h"
#ifdef TX_EXE
#include <iostream.h>
typedef unsigned short UNICODE_CHAR;
const PRInt32 kNotFound = -1;
#else
#include "nsString.h"
typedef PRUnichar UNICODE_CHAR;
#endif
class String
#ifdef TX_EXE
: public TxObject
#endif
{
public:
/*
* Default constructor.
*/
String();
#ifdef TX_EXE
/*
* Copying constructor.
*/
String(const String& aSource);
/*
* Constructor, allocates a buffer and copies the supplied string buffer.
* If aLength is zero it computes the length from the supplied string.
*/
explicit String(const UNICODE_CHAR* aSource, const PRUint32 aLength = 0);
#else
explicit String(const nsAString& aSource);
#endif
~String();
/*
* Append aSource to this string.
*/
void append(const UNICODE_CHAR aSource);
void append(const String& aSource);
/*
* Insert aSource at aOffset in this string.
*/
void insert(const PRUint32 aOffset, const UNICODE_CHAR aSource);
void insert(const PRUint32 aOffset, const String& aSource);
/*
* Replace characters starting at aOffset with aSource.
*/
void replace(const PRUint32 aOffset, const UNICODE_CHAR aSource);
void replace(const PRUint32 aOffset, const String& aSource);
/*
* Delete aCount characters starting at aOffset.
*/
void deleteChars(const PRUint32 aOffset, const PRUint32 aCount);
/*
* Returns the character at aIndex. Caller needs to check the
* index for out-of-bounds errors.
*/
UNICODE_CHAR charAt(const PRUint32 aIndex) const;
/*
* Clear the string.
*/
void clear();
/*
* Returns index of first occurrence of aData.
*/
PRInt32 indexOf(const UNICODE_CHAR aData, const PRInt32 aOffset = 0) const;
PRInt32 indexOf(const String& aData, const PRInt32 aOffset = 0) const;
/*
* Returns index of last occurrence of aData.
*/
PRInt32 lastIndexOf(const UNICODE_CHAR aData, const PRInt32 aOffset = 0) const;
/*
* Check equality between strings.
*/
MBool isEqual(const String& aData) const;
/*
* Check equality (ignoring case) between strings.
*/
MBool isEqualIgnoreCase(const String& aData) const;
/*
* Check whether the string is empty.
*/
MBool isEmpty() const;
/*
* Return the length of the string.
*/
PRUint32 length() const;
/*
* Sets the length of this string.
*/
void setLength(const PRUint32 aLength);
/*
* Returns a substring starting at start
* Note: the dest String is cleared before use
*/
String& subString(const PRUint32 aStart, String& aDest) const;
/*
* Returns the subString starting at start and ending at end
* Note: the dest String is cleared before use
*/
String& subString(const PRUint32 aStart, const PRUint32 aEnd, String& aDest) const;
/*
* Convert string to lowercase.
*/
void toLowerCase();
/*
* Convert string to uppercase.
*/
void toUpperCase();
#ifdef TX_EXE
/*
* Assignment operator.
*/
String& operator = (const String& aSource);
#else
/*
* Return a reference to this string's nsString.
*/
nsString& getNSString();
/*
* Return a const reference to this string's nsString.
*/
const nsString& getConstNSString() const;
#endif
private:
#ifndef TX_EXE
nsString mString;
#else
/*
* Make sure the string buffer can hold aCapacity characters.
*/
MBool ensureCapacity(const PRUint32 aCapacity);
/*
* Allocate a new UNICODE_CHAR buffer and copy this string's
* buffer into it. Caller needs to free the buffer.
*/
UNICODE_CHAR* toUnicode() const;
/*
* Compute the unicode length of aData.
*/
static PRUint32 unicodeLength(const UNICODE_CHAR* aData);
/*
* Translate UNICODE_CHARs to Chars and output to the provided stream.
*/
friend ostream& operator << (ostream& aOutput, const String& aSource);
UNICODE_CHAR* mBuffer;
PRUint32 mBufferLength;
PRUint32 mLength;
#endif
// XXX DEPRECATED
public:
explicit String(const PRUint32 aSize);
/* explicit */ String(const char* aSource); // XXX Used for literal strings
void append(const char* aSource);
MBool isEqual(const char* aData) const;
char* toCharArray() const;
// XXX DEPRECATED
};
#ifdef TX_EXE
ostream& operator << (ostream& aOutput, const String& aSource);
inline UNICODE_CHAR String::charAt(const PRUint32 aIndex) const
{
NS_ASSERTION(aIndex < mLength, "|charAt| out-of-range");
return mBuffer[aIndex];
}
inline MBool String::isEmpty() const
{
return (mLength == 0);
}
inline PRUint32 String::length() const
{
return mLength;
}
#else
// txMozillaString.h contains all inline implementations for the
// Mozilla module.
#include "txMozillaString.h"
#endif
#endif // txString_h__

View File

@@ -1,74 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Tom Kneeland, tomk@mitre.org
* -- added PRUint32 to provide a common unsigned integer
*
*/
// Basic Definitions used throughout many of these classes
#ifndef TRANSFRMX_BASEUTILS_H
#define TRANSFRMX_BASEUTILS_H
#ifdef TX_EXE
// Standalone
typedef int PRInt32;
typedef unsigned int PRUint32;
typedef PRInt32 MBool;
#define MB_TRUE (MBool)1
#define MB_FALSE (MBool)0
#ifdef DEBUG
#define NS_ASSERTION(_cond, _msg) \
if(!(_cond)) { \
cerr << "ASSERTION (" << #_cond << ") " << _msg << endl; \
cerr << "on line " << __LINE__ << " in " << __FILE__ << endl; \
}
#else
#define NS_ASSERTION(_cond, _msg) {}
#endif
#define NS_PTR_TO_INT32(x) ((char *)(x) - (char *)0)
#define NS_INT32_TO_PTR(x) ((void *)((char *)0 + (x)))
#else
// Mozilla module
#include "prtypes.h"
#include "nscore.h"
typedef PRBool MBool;
#define MB_TRUE PR_TRUE
#define MB_FALSE PR_FALSE
#endif
#ifndef NULL
#define NULL 0
#endif
#endif

View File

@@ -1,72 +0,0 @@
#!nmake
#
# The contents of this file are subject to the Netscape 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/NPL/
#
# 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.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
DEPTH=..\..\..\..
MODULE = transformiix
REQUIRES = string \
xpcom \
unicharutil \
dom \
content \
widget \
$(NULL)
include <$(DEPTH)/config/config.mak>
!if defined(TX_EXE)
DEFINES= $(DEFINES) -DTX_EXE
!endif
CPP_OBJS= \
.\$(OBJDIR)\ArrayList.obj \
.\$(OBJDIR)\Double.obj \
.\$(OBJDIR)\List.obj \
.\$(OBJDIR)\TxObjectWrapper.obj \
.\$(OBJDIR)\NamedMap.obj \
.\$(OBJDIR)\SimpleErrorObserver.obj \
.\$(OBJDIR)\Stack.obj \
.\$(OBJDIR)\Map.obj \
.\$(OBJDIR)\StringList.obj \
.\$(OBJDIR)\Tokenizer.obj \
.\$(OBJDIR)\txAtoms.obj \
.\$(OBJDIR)\txExpandedNameMap.obj \
$(NULL)
!ifdef TX_EXE
CPP_OBJS = \
.\$(OBJDIR)\CommandLineUtils.obj \
.\$(OBJDIR)\TxString.obj \
$(CPP_OBJS)
!endif
EXPORTS = \
$(NULL)
LINCS=-I$(PUBLIC)\xpcom -I..\xpath -I..\xslt -I..\xml -I..\xml\dom
LCFLAGS = \
$(LCFLAGS) \
$(DEFINES) \
$(NULL)
include <$(DEPTH)\config\rules.mak>
libs:: $(OBJDIR) $(CPP_OBJS)

View File

@@ -1,89 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Keith Visco as a Non MITRE employee,
* (C) 1999 Keith Visco. All Rights Reserved.
*
* Contributor(s):
*
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
* Larry Fitzpatrick, OpenText, lef@opentext.com
* --
*
* Eric Du, duxy@leyou.com.cn
* -- added fix for FreeBSD
*
* NaN/Infinity code copied from the JS-library with permission from
* Netscape Communications Corporation: http://www.mozilla.org/js
* http://lxr.mozilla.org/seamonkey/source/js/src/jsnum.h
*
*/
#ifndef MITRE_PRIMITIVES_H
#define MITRE_PRIMITIVES_H
#include "baseutils.h"
#include "TxString.h"
/*
* Utility class for doubles
*/
class Double {
public:
/*
* Usefull constants
*/
static const double NaN;
static const double POSITIVE_INFINITY;
static const double NEGATIVE_INFINITY;
/*
* Determines whether the given double represents positive or negative
* inifinity
*/
static MBool isInfinite(double aDbl);
/*
* Determines whether the given double is NaN
*/
static MBool isNaN(double aDbl);
/*
* Determines whether the given double is negative
*/
static MBool isNeg(double aDbl);
/*
* Converts the value of the given double to a String, and appends
* the result to the destination String.
* @return the given dest string
*/
static String& toString(double aValue, String& aDest);
/*
* Converts the given String to a double, if the String value does not
* represent a double, NaN will be returned
*/
static double toDouble(const String& aStr);
};
#endif

View File

@@ -1,173 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is
* Jonas Sicking.
* Portions created by the Initial Developer are Copyright (C) 2001
* Jonas Sicking. All Rights Reserved.
*
* Contributor(s):
* Jonas Sicking <sicking@bigfoot.com>
* Axel Hecht <axel@pike.org>
*
* 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 ***** */
/*
* Atom implementation for standalone and wrapper for module
*
* For module,
* txAtom is typedef'd to nsIAtom,
* for standalone there is a separate implementation. The
* code is all inlined in this header file.
*
* There is one major difference between the standalone and
* the module implementation, module atoms are refcounted,
* standalone atoms are not. Therefor code that is standalone
* only may not use TX_RELEASE..ATOM, code that works in both
* module and standalone has to pair these. Or you leak.
*
* To use this code standalone,
* TX_IMPL_ATOM_STATICS;
* has to appear in your source file.
* XSLTProcessor.cpp does this.
*/
#ifndef TRANSFRMX_ATOM_H
#define TRANSFRMX_ATOM_H
#include "TxString.h"
#ifndef TX_EXE
#include "nsIAtom.h"
#else
#include "NamedMap.h"
#endif
#ifdef TX_EXE
class txAtom : public TxObject
{
public:
txAtom(const String& aString)
{
mString = aString;
}
MBool getString(String& aString)
{
aString = mString;
return MB_TRUE;
}
friend ostream& operator << (ostream& aOutput, const txAtom& aSource)
{
aOutput << aSource.mString;
return aOutput;
}
private:
String mString;
};
class txAtomService
{
public:
static txAtom* getAtom(const String& aString)
{
if (!mAtoms && !Init())
return NULL;
txAtom* atom = (txAtom*)mAtoms->get(aString);
if (!atom) {
atom = new txAtom(aString);
if (!atom)
return 0;
mAtoms->put(aString, atom);
}
return atom;
}
static MBool Init()
{
NS_ASSERTION(!mAtoms, "called without matching Shutdown()");
if (mAtoms)
return MB_TRUE;
mAtoms = new NamedMap();
if (!mAtoms)
return MB_FALSE;
mAtoms->setObjectDeletion(MB_TRUE);
return MB_TRUE;
}
static void Shutdown()
{
NS_ASSERTION(mAtoms, "called without matching Init()");
if (!mAtoms)
return;
delete mAtoms;
mAtoms = NULL;
}
private:
static NamedMap* mAtoms;
};
#define TX_GET_ATOM(str) \
(txAtomService::getAtom(str))
#define TX_ADDREF_ATOM(atom) {}
#define TX_IF_ADDREF_ATOM(atom) {}
#define TX_RELEASE_ATOM(atom) {}
#define TX_IF_RELEASE_ATOM(atom) {}
#define TX_GET_ATOM_STRING(atom, str) \
((atom)->getString(str))
#define TX_IMPL_ATOM_STATICS \
NamedMap* txAtomService::mAtoms = 0
#else
typedef nsIAtom txAtom;
#define TX_GET_ATOM(str) \
NS_NewAtom((str).getConstNSString())
#define TX_ADDREF_ATOM(atom) NS_ADDREF(atom)
#define TX_IF_ADDREF_ATOM(atom) NS_IF_ADDREF(atom)
#define TX_RELEASE_ATOM(atom) NS_RELEASE(atom)
#define TX_IF_RELEASE_ATOM(atom) NS_IF_RELEASE(atom)
#define TX_GET_ATOM_STRING(atom, string) \
NS_SUCCEEDED((atom)->ToString(string.getNSString()))
#endif // TX_EXE
#endif // TRANSFRMX_ATOM_H

View File

@@ -1,148 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
#include "txAtoms.h"
#define TX_ATOM(_name, _value) txAtom* txXMLAtoms::_name = 0
XML_ATOMS;
#undef TX_ATOM
#define TX_ATOM(_name, _value) txAtom* txXPathAtoms::_name = 0
#include "txXPathAtomList.h"
#undef TX_ATOM
#define TX_ATOM(_name, _value) txAtom* txXSLTAtoms::_name = 0
#include "txXSLTAtomList.h"
#undef TX_ATOM
#define TX_ATOM(_name, _value) txAtom* txHTMLAtoms::_name = 0
#include "txHTMLAtomList.h"
#undef TX_ATOM
static PRUint32 gXMLRefCnt = 0;
static PRUint32 gXPathRefCnt = 0;
static PRUint32 gXSLTRefCnt = 0;
static PRUint32 gHTMLRefCnt = 0;
#ifdef TX_EXE
#define TX_ATOM(_name, _value) \
_name = TX_GET_ATOM(String(_value)); \
if (!_name) \
return MB_FALSE
#else
#define TX_ATOM(_name, _value) \
_name = NS_NewAtom(_value); \
NS_ENSURE_TRUE(_name, MB_FALSE)
#endif
MBool txXMLAtoms::init()
{
if (0 == gXMLRefCnt++) {
// create atoms
XML_ATOMS;
}
return MB_TRUE;
}
MBool txXPathAtoms::init()
{
if (0 == gXPathRefCnt++) {
// create atoms
#include "txXPathAtomList.h"
}
return MB_TRUE;
}
MBool txXSLTAtoms::init()
{
if (0 == gXSLTRefCnt++) {
// create atoms
#include "txXSLTAtomList.h"
}
return MB_TRUE;
}
MBool txHTMLAtoms::init()
{
if (0 == gHTMLRefCnt++) {
// create atoms
#include "txHTMLAtomList.h"
}
return MB_TRUE;
}
#undef TX_ATOM
#define TX_ATOM(_name, _value) \
TX_IF_RELEASE_ATOM(_name)
void txXMLAtoms::shutdown()
{
NS_ASSERTION(gXMLRefCnt != 0, "bad release atoms");
if (--gXMLRefCnt == 0) {
// release atoms
XML_ATOMS;
}
}
void txXPathAtoms::shutdown()
{
NS_ASSERTION(gXPathRefCnt != 0, "bad release atoms");
if (--gXPathRefCnt == 0) {
// release atoms
#include "txXPathAtomList.h"
}
}
void txXSLTAtoms::shutdown()
{
NS_ASSERTION(gXSLTRefCnt != 0, "bad release atoms");
if (--gXSLTRefCnt == 0) {
// release atoms
#include "txXSLTAtomList.h"
}
}
void txHTMLAtoms::shutdown()
{
NS_ASSERTION(gHTMLRefCnt != 0, "bad release atoms");
if (--gHTMLRefCnt == 0) {
// release atoms
#include "txHTMLAtomList.h"
}
}
#undef TX_ATOM

View File

@@ -1,97 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken <peterv@netscape.com>
*
* 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 ***** */
#ifndef TRANSFRMX_ATOMS_H
#define TRANSFRMX_ATOMS_H
#include "txAtom.h"
/*
* Declare all atoms
*
* The atom names and values are stored in tx*AtomList.h and
* are brought to you by the magic of C preprocessing.
* Add new atoms to tx*AtomList.h and all support logic will
* be auto-generated.
*/
#define XML_ATOMS \
TX_ATOM(_empty, ""); \
TX_ATOM(base, "base"); \
TX_ATOM(lang, "lang"); \
TX_ATOM(space, "space"); \
TX_ATOM(xml, "xml"); \
TX_ATOM(xmlns, "xmlns")
#define TX_ATOM(_name, _value) static txAtom* _name
class txXMLAtoms
{
public:
static MBool init();
static void shutdown();
XML_ATOMS;
};
class txXPathAtoms
{
public:
static MBool init();
static void shutdown();
#include "txXPathAtomList.h"
};
class txXSLTAtoms
{
public:
static MBool init();
static void shutdown();
#include "txXSLTAtomList.h"
};
class txHTMLAtoms
{
public:
static MBool init();
static void shutdown();
#include "txHTMLAtomList.h"
};
#undef TX_ATOM
#endif

View File

@@ -1,71 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT Processor.
*
* The Initial Developer of the Original Code is
* Axel Hecht.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Axel Hecht <axel@pike.org>
*
* 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 ***** */
#ifndef __TX_ERROR
#define __TX_ERROR
/*
* Error value mockup for standalone.
* See nsError.h for details.
*/
#ifdef TX_EXE
#include "baseutils.h"
typedef PRUint32 nsresult;
#define NS_FAILED(_nsresult) ((_nsresult) & 0x80000000)
#define NS_SUCCEEDED(_nsresult) (!((_nsresult) & 0x80000000))
#define NS_OK 0
#define NS_ERROR_INVALID_POINTER ((nsresult) 0x80004003L)
#define NS_ERROR_NULL_POINTER NS_ERROR_INVALID_POINTER
#define NS_ERROR_UNEXPECTED ((nsresult) 0x8000ffffL)
#define NS_ERROR_NOT_IMPLEMENTED ((nsresult) 0x80004001L)
#define NS_ERROR_FAILURE ((nsresult) 0x80004005L)
#define NS_ERROR_OUT_OF_MEMORY ((nsresult) 0x8007000eL)
#define NS_ERROR_ILLEGAL_VALUE ((nsresult) 0x80070057L)
#define NS_ERROR_INVALID_ARG NS_ERROR_ILLEGAL_VALUE
#else // TX_EXE
#include "nsError.h"
#endif // TX_EXE
#endif // __TX_ERROR

View File

@@ -1,152 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is
* Jonas Sicking.
* Portions created by the Initial Developer are Copyright (C) 2002
* Jonas Sicking. All Rights Reserved.
*
* Contributor(s):
* Jonas Sicking <sicking@bigfoot.com>
*
* 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 ***** */
#include "txExpandedNameMap.h"
#include "string.h"
const int kTxExpandedNameMapAllocSize = 16;
txExpandedNameMap::txExpandedNameMap(MBool aOwnsValues) :
mItems(0), mItemCount(0), mOwnsValues(aOwnsValues)
{
}
txExpandedNameMap::~txExpandedNameMap()
{
int i;
for (i = 0; i < mItemCount; ++i) {
TX_IF_RELEASE_ATOM(mItems[i].mLocalName);
if (mOwnsValues)
delete mItems[i].mValue;
}
delete [] mItems;
}
/*
* Adds an item, if an item with this key already exists an error is
* returned
* @param aKey key for item to add
* @param aValue value of item to add
* @return errorcode
*/
nsresult txExpandedNameMap::add(txExpandedName& aKey, TxObject* aValue)
{
int i;
// Check if there already is an item with this key
for (i = 0; i < mItemCount; ++i) {
if (mItems[i].mLocalName == aKey.mLocalName &&
mItems[i].mNamespaceID == aKey.mNamespaceID)
return NS_ERROR_FAILURE;
}
// Allocate a new array if needed
if (mItemCount % kTxExpandedNameMapAllocSize == 0) {
MapItem* newItems = new MapItem[mItemCount +
kTxExpandedNameMapAllocSize];
if (!newItems)
return NS_ERROR_OUT_OF_MEMORY;
memcpy(newItems, mItems, mItemCount * sizeof(MapItem));
delete [] mItems;
mItems = newItems;
}
mItems[mItemCount].mNamespaceID = aKey.mNamespaceID;
mItems[mItemCount].mLocalName = aKey.mLocalName;
mItems[mItemCount].mValue = aValue;
++mItemCount;
return NS_OK;
}
/*
* Sets an item, if an item with this key already exists it is overwritten
* with the new value
* @param aKey key for item to set
* @param aValue value of item to set
* @return errorcode
*/
nsresult txExpandedNameMap::set(txExpandedName& aKey, TxObject* aValue)
{
int i;
// Check if there already is an item with this key
for (i = 0; i < mItemCount; ++i) {
if (mItems[i].mLocalName == aKey.mLocalName &&
mItems[i].mNamespaceID == aKey.mNamespaceID) {
if (mOwnsValues)
delete mItems[i].mValue;
mItems[i].mValue = aValue;
return NS_OK;
}
}
// Allocate a new array if needed
if (mItemCount % kTxExpandedNameMapAllocSize == 0) {
MapItem* newItems = new MapItem[mItemCount +
kTxExpandedNameMapAllocSize];
if (!newItems)
return NS_ERROR_OUT_OF_MEMORY;
memcpy(newItems, mItems, mItemCount * sizeof(MapItem));
delete [] mItems;
mItems = newItems;
}
mItems[mItemCount].mNamespaceID = aKey.mNamespaceID;
mItems[mItemCount].mLocalName = aKey.mLocalName;
mItems[mItemCount].mValue = aValue;
++mItemCount;
return NS_OK;
}
/*
* Gets an item
* @param aKey key for item to get
* @return item with specified key, or null if no such item exists
*/
TxObject* txExpandedNameMap::get(txExpandedName& aKey)
{
int i;
for (i = 0; i < mItemCount; ++i) {
if (mItems[i].mLocalName == aKey.mLocalName &&
mItems[i].mNamespaceID == aKey.mNamespaceID)
return mItems[i].mValue;
}
return 0;
}

View File

@@ -1,123 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is
* Jonas Sicking.
* Portions created by the Initial Developer are Copyright (C) 2002
* Jonas Sicking. All Rights Reserved.
*
* Contributor(s):
* Jonas Sicking <sicking@bigfoot.com>
*
* 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 ***** */
#ifndef TRANSFRMX_EXPANDEDNAMEMAP_H
#define TRANSFRMX_EXPANDEDNAMEMAP_H
#include "XMLUtils.h"
#include "TxObject.h"
#include "txError.h"
class txExpandedNameMap {
public:
txExpandedNameMap(MBool aOwnsValues);
~txExpandedNameMap();
/*
* Adds an item, if an item with this key already exists an error is
* returned
* @param aKey key for item to add
* @param aValue value of item to add
* @return errorcode
*/
nsresult add(txExpandedName& aKey, TxObject* aValue);
/*
* Sets an item, if an item with this key already exists it is overwritten
* with the new value
* @param aKey key for item to set
* @param aValue value of item to set
* @return errorcode
*/
nsresult set(txExpandedName& aKey, TxObject* aValue);
/*
* Gets an item
* @param aKey key for item to get
* @return item with specified key, or null if no such item exists
*/
TxObject* get(txExpandedName& aKey);
class iterator {
public:
iterator(txExpandedNameMap& aMap) : mMap(aMap),
mCurrentPos(-1)
{
}
MBool next()
{
return ++mCurrentPos < mMap.mItemCount;
}
const txExpandedName key()
{
NS_ASSERTION(mCurrentPos >= 0 && mCurrentPos < mMap.mItemCount,
"invalid position in txExpandedNameMap::iterator");
return txExpandedName(mMap.mItems[mCurrentPos].mNamespaceID,
mMap.mItems[mCurrentPos].mLocalName);
}
TxObject* value()
{
NS_ASSERTION(mCurrentPos >= 0 && mCurrentPos < mMap.mItemCount,
"invalid position in txExpandedNameMap::iterator");
return mMap.mItems[mCurrentPos].mValue;
}
private:
txExpandedNameMap& mMap;
int mCurrentPos;
};
friend class iterator;
private:
struct MapItem {
PRInt32 mNamespaceID;
txAtom* mLocalName;
TxObject* mValue;
};
MapItem* mItems;
int mItemCount;
MBool mOwnsValues;
};
#endif //TRANSFRMX_EXPANDEDNAMEMAP_H

View File

@@ -1,224 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** 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.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken <peterv@netscape.com>
*
*
* 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 ***** */
#ifndef txMozillaString_h__
#define txMozillaString_h__
#include "nsReadableUtils.h"
#include "nsUnicharUtils.h"
MOZ_DECL_CTOR_COUNTER(String)
inline String::String()
{
MOZ_COUNT_CTOR(String);
}
inline String::String(const nsAString& aSource) : mString(aSource)
{
MOZ_COUNT_CTOR(String);
}
inline String::~String()
{
MOZ_COUNT_DTOR(String);
}
inline void String::append(const UNICODE_CHAR aSource)
{
mString.Append(aSource);
}
inline void String::append(const String& aSource)
{
mString.Append(aSource.mString);
}
inline void String::insert(const PRUint32 aOffset, const UNICODE_CHAR aSource)
{
mString.Insert(aSource, aOffset);
}
inline void String::insert(const PRUint32 aOffset, const String& aSource)
{
mString.Insert(aSource.mString, aOffset);
}
inline void String::replace(const PRUint32 aOffset, const UNICODE_CHAR aSource)
{
mString.SetCharAt(aSource, aOffset);
}
inline void String::replace(const PRUint32 aOffset, const String& aSource)
{
mString.Replace(aOffset, mString.Length() - aOffset, aSource.mString);
}
inline void String::deleteChars(const PRUint32 aOffset, const PRUint32 aCount)
{
mString.Cut(aOffset, aCount);
}
inline UNICODE_CHAR String::charAt(const PRUint32 aIndex) const
{
return mString.CharAt(aIndex);
}
inline void String::clear()
{
mString.Truncate();
}
inline PRInt32 String::indexOf(const UNICODE_CHAR aData, const PRInt32 aOffset) const
{
return mString.FindChar(aData, aOffset);
}
inline PRInt32 String::indexOf(const String& aData, const PRInt32 aOffset) const
{
return mString.Find(aData.mString, aOffset);
}
inline PRInt32 String::lastIndexOf(const UNICODE_CHAR aData, const PRInt32 aOffset) const
{
return mString.RFindChar(aData, aOffset);
}
inline MBool String::isEqual(const String& aData) const
{
if (this == &aData)
return MB_TRUE;
return mString.Equals(aData.mString);
}
inline MBool String::isEqualIgnoreCase(const String& aData) const
{
if (this == &aData)
return MB_TRUE;
return mString.Equals(aData.mString, nsCaseInsensitiveStringComparator());
}
inline MBool String::isEmpty() const
{
return mString.IsEmpty();
}
inline PRUint32 String::length() const
{
return mString.Length();
}
inline void String::setLength(const PRUint32 aLength)
{
mString.SetLength(aLength);
}
inline String& String::subString(const PRUint32 aStart, String& aDest) const
{
PRUint32 length = mString.Length() - aStart;
if (length < 0) {
aDest.clear();
}
else {
aDest.mString.Assign(Substring(mString, aStart, length));
}
return aDest;
}
inline String& String::subString(const PRUint32 aStart, const PRUint32 aEnd, String& aDest) const
{
PRUint32 length = aEnd - aStart;
if (length < 0) {
aDest.clear();
}
else {
aDest.mString.Assign(Substring(mString, aStart, length));
}
return aDest;
}
inline void String::toLowerCase()
{
ToLowerCase(mString);
}
inline void String::toUpperCase()
{
ToUpperCase(mString);
}
inline nsString& String::getNSString()
{
return mString;
}
inline const nsString& String::getConstNSString() const
{
return mString;
}
// XXX DEPRECATED
inline String::String(const PRUint32 aSize)
{
MOZ_COUNT_CTOR(String);
mString.SetCapacity(aSize);
}
inline String::String(const char* aSource)
{
MOZ_COUNT_CTOR(String);
mString.AssignWithConversion(aSource);
}
inline void String::append(const char* aSource)
{
mString.AppendWithConversion(aSource);
}
inline MBool String::isEqual(const char* aData) const
{
return mString.EqualsWithConversion(aData);
}
inline char* String::toCharArray() const
{
return ToNewCString(mString);
}
#endif // txMozillaString_h__

View File

@@ -1,4 +0,0 @@
target: clean
clean:
make clean

View File

@@ -1,31 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = mozilla
include $(topsrcdir)/config/rules.mk

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="functions.xsl"?>
<!-- this is a test document -->
<document>
<!-- test comment -->
<x name="x">x</x>
<y name="y">y</y>
<z name="z">z</z>
<names xmlns:abc="foo">
<abc:test-name/>
</names>
</document>

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="identity.xsl"?>
<document>
<x name="x">x</x>
<y name="y">y</y>
<z name="z">z</z>
</document>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="identity.xsl"?>
<!-- this is a test document -->
<document>
<!-- test comment -->
<x name="x">x</x>
<y name="y">y</y>
<z name="z">z</z>
</document>

View File

@@ -1,44 +0,0 @@
<?xml version="1.0"?>
<!--
/*
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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/
*
* The program provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* The Copyright owner will not be liable for any damages suffered by
* you as a result of using the Program. In no event will the Copyright
* owner be liable for any special, indirect or consequential damages or
* lost profits even if the Copyright owner has been advised of the
* possibility of their occurrence.
*
* Please see release.txt distributed with this file for more information.
*
*/
/**
* This is a test stylesheet used for testing MITRE's XSL processor
**/
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!-- root rule -->
<xsl:template match="/">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

View File

@@ -1,39 +0,0 @@
<?xml version="1.0"?>
<!--
/*
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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/
*
* The program provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* The Copyright owner will not be liable for any damages suffered by
* you as a result of using the Program. In no event will the Copyright
* owner be liable for any special, indirect or consequential damages or
* lost profits even if the Copyright owner has been advised of the
* possibility of their occurrence.
*
* Please see release.txt distributed with this file for more information.
*
*/
/**
* This is a test stylesheet used for testing MITRE's XSL processor
**/
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- match document element -->
<xsl:template match="document">
This rule comes from an included xsl:stylesheet!
<BR/>
<B>
<xsl:apply-templates/>
</B>
</xsl:template>
</xsl:stylesheet>

View File

@@ -1,12 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>TransforMiiX include test</TITLE>
</HEAD>
<BODY>This rule comes from an included xsl:stylesheet!<BR>
<B>
This is a simple test document for TransforMiiX.
</B>
</BODY>
</HTML>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="include.xsl"?>
<!-- this is a test document -->
<document>
This is a simple test document for TransforMiiX.
</document>

View File

@@ -1,49 +0,0 @@
<?xml version="1.0"?>
<!--
/*
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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/
*
* The program provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* The Copyright owner will not be liable for any damages suffered by
* you as a result of using the Program. In no event will the Copyright
* owner be liable for any special, indirect or consequential damages or
* lost profits even if the Copyright owner has been advised of the
* possibility of their occurrence.
*
* Please see release.txt distributed with this file for more information.
*
*/
/**
* This is a test stylesheet used for testing MITRE's XSL processor
**/
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
indent-result="yes"
result-ns="http://www.w3.org/1999/xhtml"
version="1.0">
<xsl:include href="include-helper.xsl"/>
<!-- root rule -->
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>TransforMiiX include test</TITLE>
</HEAD>
<BODY>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

View File

@@ -1,31 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = Transformiix
include $(topsrcdir)/config/rules.mk

View File

@@ -1,40 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = content
CHROME_DIR = packages/transformiix
CHROME_MISC_DIR = .
CHROME_TYPE = content skin
CHROME_MISC = \
manifest.rdf \
$(NULL)
include $(topsrcdir)/config/rules.mk

View File

@@ -1,4 +0,0 @@
simple.xml
simplexsl.xml
transformiix.js
transformiix.xul

View File

@@ -1,29 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../../../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/rules.mk

View File

@@ -1,34 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ..\..\..\..\..\..\..
CHROME_DIR=packages\transformiix
CHROME_CONTENT_DIR=transformiix\content
CHROME_CONTENT = \
.\transformiix.xul \
.\transformiix.js \
.\simple.xml \
.\simplexsl.xml \
$(NULL)
include <$(DEPTH)\config\rules.mak>

View File

@@ -1,29 +0,0 @@
<?xml version='1.0'?>
<!--
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 TransforMiiX XSLT processor.
The Initial Developer of the Original Code is The MITRE Corporation.
Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
Portions created by Peter Van der Beken are Copyright (C) 2000
Peter Van der Beken. All Rights Reserved.
Contributor(s):
Peter Van der Beken, peter.vanderbeken@pandora.be, original author.
-->
<doc>
<title>Our title</title>
</doc>

View File

@@ -1,47 +0,0 @@
<?xml version="1.0"?>
<!--
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 TransforMiiX XSLT processor.
The Initial Developer of the Original Code is The MITRE Corporation.
Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
Portions created by Peter Van der Beken are Copyright (C) 2000
Peter Van der Beken. All Rights Reserved.
Contributor(s):
Peter Van der Beken, peter.vanderbeken@pandora.be, original author.
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="doc">
<HTML>
<HEAD>
<TITLE>The result document</TITLE>
</HEAD>
<BODY>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="title">
<H1>
<xsl:apply-templates/>
</H1>
</xsl:template>
</xsl:stylesheet>

View File

@@ -1,89 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Peter Van der Beken are Copyright (C) 2000
* Peter Van der Beken. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken, peter.vanderbeken@pandora.be
* -- original author.
*
*/
var xmlLoaded, xslLoaded;
var xmlDocument, xslDocument, resultDocument;
var theXMLURL = "chrome://transformiix/content/simple.xml";
var theXSLURL = "chrome://transformiix/content/simplexsl.xml";
function onLoadTransformiix()
{
onTransform();
}
function onTransform()
{
var docShellElement = document.getElementById("xml-source");
var docShell = docShellElement.docShell;
docShell.viewMode = Components.interfaces.nsIDocShell.viewSource;
var webNav = docShell.QueryInterface(Components.interfaces.nsIWebNavigation);
var loadFlags = Components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE;
webNav.loadURI(theXMLURL, loadFlags, null, null, null);
docShellElement = document.getElementById("xsl-source");
docShell = docShellElement.docShell;
docShell.viewMode = Components.interfaces.nsIDocShell.viewSource;
webNav = docShell.QueryInterface(Components.interfaces.nsIWebNavigation);
webNav.loadURI(theXSLURL, loadFlags, null, null, null);
docShellElement = document.getElementById("result-doc");
resultDocument = webNav.document;
xmlDocument = resultDocument.implementation.createDocument("", "", null);
xmlDocument.addEventListener("load", xmlDocumentLoaded, false);
xmlDocument.load(theXMLURL, "text/xml");
xslDocument = resultDocument.implementation.createDocument("", "", null);
xslDocument.addEventListener("load", xslDocumentLoaded, false);
xslDocument.load(theXSLURL, "text/xml");
}
function xmlDocumentLoaded(e) {
xmlLoaded = true;
tryToTransform();
}
function xslDocumentLoaded(e) {
xslLoaded = true;
tryToTransform();
}
function tryToTransform() {
if (xmlLoaded && xslLoaded) {
try {
var xsltProcessor = null;
var xmlDocumentNode = xmlDocument.documentElement;
var xslDocumentNode = xslDocument.documentElement;
xsltProcessor = Components.classes["@mozilla.org/document-transformer;1?type=text/xsl"].getService();
if (xsltProcessor) xsltProcessor = xsltProcessor.QueryInterface(Components.interfaces.nsIDocumentTransformer);
}
catch (ex) {
dump("failed to get transformiix service!\n");
xsltProcessor = null;
}
dump("Mal sehen, "+xsltProcessor+"\n");
var outDocument = resultDocument.implementation.createDocument("", "", null);
xsltProcessor.TransformDocument(xmlDocumentNode, xslDocumentNode, outDocument, null);
// DumpDOM(outDocument.documentElement);
// DumpDOM(xmlDocument.documentElement);
}
}

View File

@@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
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 TransforMiiX XSLT processor.
The Initial Developer of the Original Code is The MITRE Corporation.
Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
Portions created by Peter Van der Beken are Copyright (C) 2000
Peter Van der Beken. All Rights Reserved.
Contributor(s):
Peter Van der Beken, peter.vanderbeken@pandora.be
- original author.
-->
<!DOCTYPE window>
<!--
<?xml-stylesheet href="chrome://Transformiix/skin" type="text/css"?>
-->
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical" onload="onLoadTransformiix();">
<script type="application/x-javascript" src="chrome://Transformiix/content/transformiix.js"/>
<script type="application/x-javascript" src="resource:/res/samples/DumpDOM.js"/>
<hbox id="tool-box" flex="1">
</hbox>
<hbox flex="10">
<vbox flex="50">
<iframe id="xml-source" class="doc-container" orient="horizontal" src="about:blank" flex="1"/>
<iframe id="xsl-source" class="doc-container" orient="horizontal" src="about:blank" flex="1"/>
</vbox>
<iframe id="result-doc" class="doc-container" orient="vertical" src="about:blank" flex="50"/>
</hbox>
</window>

View File

@@ -1,2 +0,0 @@
<!ENTITY transformiixCmd.label "Transformiix">
<!ENTITY transformiixApplyCmd.label "Apply XSLT Stylesheet">

View File

@@ -1,38 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ..\..\..\..\..\..
DIRS = content
CHROME_DIR = packages\transformiix
CHROME_MISC_DIR = \
.\
$(NULL)
CHROME_TYPE = content skin
CHROME_MISC = \
.\manifest.rdf \
$(NULL)
include <$(DEPTH)\config\rules.mak>

View File

@@ -1,47 +0,0 @@
<?xml version="1.0"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
<!-- list all the packages being supplied by this jar -->
<RDF:Seq about="urn:mozilla:package:root">
<RDF:li resource="urn:mozilla:package:transformiix"/>
</RDF:Seq>
<RDF:Seq about="urn:mozilla:locale:root">
<RDF:li resource="urn:mozilla:locale:en-US"/>
</RDF:Seq>
<RDF:Seq about="urn:mozilla:skin:root">
<RDF:li resource="urn:mozilla:skin:modern/1.0" />
</RDF:Seq>
<!-- package information -->
<RDF:Description about="urn:mozilla:package:transformiix"
chrome:displayName="Transformiix"
chrome:author="Peter Van der Beken"
chrome:name="transformiix">
</RDF:Description>
<!-- locale information -->
<RDF:Description about="urn:mozilla:locale:en-US"
chrome:displayName="English(US)"
chrome:author="mozilla.org"
chrome:name="en-US"
chrome:previewURL="http://www.mozilla.org/locales/en-US.gif">
<chrome:packages>
<RDF:Seq about="urn:mozilla:locale:en-US:packages">
<RDF:li resource="urn:mozilla:locale:en-US:transformiix"/>
</RDF:Seq>
</chrome:packages>
</RDF:Description>
<!-- skin information -->
<RDF:Description about="urn:mozilla:skin:modern/1.0"
chrome:displayName="Modern"
chrome:author="mozilla.org"
chrome:name="modern/1.0">
<chrome:packages>
<RDF:Seq about="urn:mozilla:skin:modern/1.0:packages">
<RDF:li resource="urn:mozilla:skin:modern/1.0:transformiix"/>
</RDF:Seq>
</chrome:packages>
</RDF:Description>
</RDF:RDF>

View File

@@ -1,29 +0,0 @@
#
# 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 Transformiix XSLT Processor.
#
# The Initial Developer of the Original Code is Axel Hecht.
# Portions created by Axel Hecht are Copyright (C) Axel Hecht.
# All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
DEPTH = ../../../../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/rules.mk

View File

@@ -1,26 +0,0 @@
/*
* 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 TransforMiiX XSLT processor.
*
* The Initial Developer of the Original Code is The MITRE Corporation.
* Portions created by MITRE are Copyright (C) 1999 The MITRE Corporation.
*
* Portions created by Peter Van der Beken are Copyright (C) 2000
* Peter Van der Beken. All Rights Reserved.
*
* Contributor(s):
* Peter Van der Beken, peter.vanderbeken@pandora.be
* -- original author.
*
*/
@import url(chrome://global/skin/global.css);

View File

@@ -1,55 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>A simple sorting example</TITLE>
</HEAD>
<BODY>
<P ALIGN="CENTER">
<B>
<FONT SIZE="+2">A simple sorting example</FONT>
<HR SIZE="1">
</B>
</P>
<TABLE BORDER="0">
<TR>
<TD>Sorting in ascending order</TD>
</TR>
<TR>
<TD>
<OL>
<LI>Dream Theatre</LI>
<LI>Gilbert, Paul</LI>
<LI>Royal Hunt</LI>
<LI>Satriani, Joe</LI>
</OL>
</TD>
</TR>
<TR>
<TD>Sorting in descending order</TD>
</TR>
<TR>
<TD>
<OL>
<LI>Satriani, Joe</LI>
<LI>Royal Hunt</LI>
<LI>Gilbert, Paul</LI>
<LI>Dream Theatre</LI>
</OL>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>

View File

@@ -1,14 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="sort.xsl" type="text/xsl"?>
<!--
This is a sample XML document supplied with TransforMiiX
author: Keith Visco, kvisc@ziplink.net
-->
<sort>
<entry>Satriani, Joe</entry>
<entry>Dream Theatre</entry>
<entry>Royal Hunt</entry>
<entry>Gilbert, Paul</entry>
</sort>

Some files were not shown because too many files have changed in this diff Show More