Files
mars-flaim/xflaim/java/jni/jdomnode.cpp

1574 lines
36 KiB
C++

//------------------------------------------------------------------------------
// Desc:
//
// Tabs: 3
//
// Copyright (c) 2003-2006 Novell, Inc. All Rights Reserved.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the GNU General Public
// License as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, contact Novell, Inc.
//
// To contact Novell about this file by physical or electronic mail,
// you may find current contact information at www.novell.com
//
// $Id: $
//------------------------------------------------------------------------------
#include "xflaim.h"
#include "xflaim_DOMNode.h"
#include "jniftk.h"
#define THIS_NODE() \
((IF_DOMNode *)(FLMUINT)lThis)
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createNode(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jint iNodeType,
jint iNameId,
jint iInsertLoc,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if( RC_BAD( rc = pThisNode->createNode( ifpDb, (eDomNodeType)iNodeType,
(FLMUINT)iNameId, (eNodeInsertLoc)iInsertLoc, &ifpNewNode, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)((FLMUINT)ifpNewNode));
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT void JNICALL Java_xflaim_DOMNode__1deleteNode(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
if (RC_BAD( rc = pNode->deleteNode( ifpDb)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return;
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT void JNICALL Java_xflaim_DOMNode__1deleteChildren(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
if (RC_BAD( rc = pNode->deleteChildren( ifpDb)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return;
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getNodeType(
JNIEnv *, // pEnv,
jobject, // obj,
jlong lThis)
{
return( THIS_NODE()->getNodeType());
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createAttribute(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jint iNameId,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if( RC_BAD( rc = pThisNode->createAttribute( ifpDb,
(FLMUINT)iNameId, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)((FLMUINT)ifpNewNode));
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstAttribute(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if ( RC_BAD( rc = pThisNode->getFirstAttribute( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)((FLMUINT)ifpNewNode));
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastAttribute(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if ( RC_BAD( rc = pThisNode->getLastAttribute( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)((FLMUINT)ifpNewNode));
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAttribute(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jint iAttributeId,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if( RC_BAD( rc = pThisNode->getAttribute( ifpDb, (FLMUINT)iAttributeId,
&ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)((FLMUINT)ifpNewNode));
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT void JNICALL Java_xflaim_DOMNode__1deleteAttribute(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jint iAttributeId)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
if (RC_BAD( rc = pThisNode->deleteAttribute( ifpDb, (FLMUINT)iAttributeId)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return;
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAttribute(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jint iAttributeId)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
jboolean bRv = false;
rc = pThisNode->hasAttribute( ifpDb, (FLMUINT)iAttributeId, NULL);
if (RC_OK( rc))
{
bRv = true;
}
else if (rc != NE_XFLM_DOM_NODE_NOT_FOUND)
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( bRv);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAttributes(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMBOOL bHasAttr = FALSE;
if( RC_BAD( rc = pThisNode->hasAttributes( ifpDb, &bHasAttr)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( bHasAttr ? true : false);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasNextSibling(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMBOOL bHasNextSib = FALSE;
if (RC_BAD( rc = pThisNode->hasNextSibling( ifpDb, &bHasNextSib)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( bHasNextSib ? true : false);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasPreviousSibling(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMBOOL bHasPreviousSib = FALSE;
if (RC_BAD( rc = pThisNode->hasPreviousSibling( ifpDb, &bHasPreviousSib)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( bHasPreviousSib ? true : false);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasChildren(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMBOOL bHasChild = FALSE;
if (RC_BAD( rc = pThisNode->hasChildren( ifpDb, &bHasChild)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( bHasChild ? true : false);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1isNamespaceDecl(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMBOOL bIsDecl = FALSE;
if (RC_BAD( rc = pThisNode->isNamespaceDecl( ifpDb, &bIsDecl)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( bIsDecl ? true : false);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getParentNode(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getParentNode( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstChild(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getFirstChild( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastChild(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getLastChild( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPreviousSibling(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = (IF_DOMNode *)(FLMUINT)lThis;
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getPreviousSibling( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextSibling(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getNextSibling( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPreviousDocument(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getPreviousDocument( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextDocument(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getNextDocument( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getPrefix(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUNICODE uzPrefix[ 128];
FLMUNICODE * puzPrefix = uzPrefix;
FLMUINT uiBufSize = sizeof( uzPrefix);
FLMUINT uiNumChars;
jstring sPrefix = NULL;
if (RC_BAD( rc = pThisNode->getPrefix( ifpDb,
(FLMUNICODE *)NULL, 0, &uiNumChars)))
{
ThrowError( rc, pEnv);
goto Exit;
}
if (uiNumChars * sizeof( FLMUNICODE) >= uiBufSize)
{
uiBufSize = (uiNumChars + 1) * sizeof( FLMUNICODE);
if (RC_BAD( rc = f_alloc( uiBufSize, puzPrefix)))
{
ThrowError( rc, pEnv);
goto Exit;
}
}
if (RC_BAD( rc = pThisNode->getPrefix( ifpDb, puzPrefix, uiBufSize, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
sPrefix = pEnv->NewString( puzPrefix, (jsize)uiNumChars);
Exit:
if (puzPrefix != uzPrefix)
{
f_free( &puzPrefix);
}
return( sPrefix);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getChildElement(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jint iNameId,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getChildElement( ifpDb,
(FLMUINT)iNameId, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getSiblingElement(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jint iNameId,
jboolean bNext,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if (lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if (RC_BAD( rc = pThisNode->getSiblingElement( ifpDb,
(FLMUINT)iNameId, bNext ? TRUE : FALSE, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)(FLMUINT)ifpNewNode);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getParentId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT64 ui64Id;
if (RC_BAD( rc = pThisNode->getParentId( ifpDb, &ui64Id)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)ui64Id);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNodeId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT64 ui64Id;
if (RC_BAD( rc = pThisNode->getNodeId( ifpDb, &ui64Id)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)ui64Id);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDocumentId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT64 ui64Id;
if (RC_BAD( rc = pThisNode->getDocumentId( ifpDb, &ui64Id)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)ui64Id);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getPrevSibId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT64 ui64Id;
if (RC_BAD( rc = pThisNode->getPrevSibId( ifpDb, &ui64Id)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)ui64Id);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getNextSibId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT64 ui64Id;
if (RC_BAD( rc = pThisNode->getNextSibId( ifpDb, &ui64Id)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)ui64Id);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getFirstChildId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT64 ui64Id;
if (RC_BAD( rc = pThisNode->getFirstChildId( ifpDb, &ui64Id)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)ui64Id);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLastChildId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT64 ui64Id;
if (RC_BAD( rc = pThisNode->getLastChildId( ifpDb, &ui64Id)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)ui64Id);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getNameId(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT uiId;
if (RC_BAD( rc = pThisNode->getNameId( ifpDb, &uiId)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jint)uiId);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getNamespaceURI(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUNICODE uzNamespaceURI[ 128];
FLMUNICODE * puzNamespaceURI = uzNamespaceURI;
FLMUINT uiBufSize = sizeof( uzNamespaceURI);
FLMUINT uiNumChars;
jstring sNamespaceURI = NULL;
if (RC_BAD( rc = pThisNode->getNamespaceURI( ifpDb,
(FLMUNICODE *)NULL, 0, &uiNumChars)))
{
ThrowError( rc, pEnv);
goto Exit;
}
if (uiNumChars * sizeof( FLMUNICODE) >= uiBufSize)
{
uiBufSize = (uiNumChars + 1) * sizeof(FLMUNICODE);
if (RC_BAD( rc = f_alloc( uiBufSize, puzNamespaceURI)))
{
ThrowError( rc, pEnv);
goto Exit;
}
}
if (RC_BAD( rc = pThisNode->getNamespaceURI( ifpDb, puzNamespaceURI,
uiBufSize, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
sNamespaceURI = pEnv->NewString( puzNamespaceURI, (jsize)uiNumChars);
Exit:
if (puzNamespaceURI != uzNamespaceURI)
{
f_free( &puzNamespaceURI);
}
return( sNamespaceURI);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getLocalName(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = (IF_DOMNode *)(FLMUINT)lThis;
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUNICODE uzLocalName[ 128];
FLMUNICODE * puzLocalName = uzLocalName;
FLMUINT uiBufSize = sizeof(uzLocalName);
FLMUINT uiNumChars;
jstring sLocalName = NULL;
if (RC_BAD( rc = pThisNode->getLocalName( ifpDb, (FLMUNICODE *)NULL,
0, &uiNumChars)))
{
ThrowError( rc, pEnv);
goto Exit;
}
if (uiNumChars * sizeof( FLMUNICODE) >= uiBufSize)
{
uiBufSize = (uiNumChars + 1) * sizeof(FLMUNICODE);
if (RC_BAD( rc = f_alloc( uiBufSize, puzLocalName)))
{
ThrowError( rc, pEnv);
goto Exit;
}
}
if (RC_BAD( rc = pThisNode->getLocalName( ifpDb, puzLocalName,
uiBufSize, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
sLocalName = pEnv->NewString( puzLocalName, (jsize)uiNumChars);
Exit:
if (puzLocalName != uzLocalName)
{
f_free( &puzLocalName);
}
return( sLocalName);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getQualifiedName(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = (IF_DOMNode *)(FLMUINT)lThis;
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUNICODE uzQualName[ 128];
FLMUNICODE * puzQualName = uzQualName;
FLMUINT uiNumChars;
FLMUINT uiBufSize = sizeof( uzQualName);
jstring sLocalName = NULL;
if (RC_BAD( rc = pThisNode->getQualifiedName( ifpDb, (FLMUNICODE *)NULL,
0, &uiNumChars)))
{
ThrowError( rc, pEnv);
goto Exit;
}
if (uiNumChars * sizeof( FLMUNICODE) >= uiBufSize)
{
uiBufSize = (uiNumChars + 1)* sizeof(FLMUNICODE);
if (RC_BAD( rc = f_alloc( uiBufSize, puzQualName)))
{
ThrowError( rc, pEnv);
goto Exit;
}
}
if (RC_BAD( rc = pThisNode->getQualifiedName( ifpDb, puzQualName,
uiBufSize, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
sLocalName = pEnv->NewString( puzQualName, (jsize)uiNumChars);
Exit:
if (puzQualName != uzQualName)
{
f_free( &puzQualName);
}
return( sLocalName);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getCollection(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT uiColNum;
if (RC_BAD( rc = pThisNode->getCollection( ifpDb, &uiColNum)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jint)uiColNum);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getLong(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMINT64 i64Val;
if (RC_BAD( rc = pThisNode->getINT64( ifpDb, &i64Val)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)i64Val);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jstring JNICALL Java_xflaim_DOMNode__1getString(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUNICODE uzBuffer[ 128];
FLMUNICODE * puzBuf = uzBuffer;
FLMUINT uiBufSize = sizeof(uzBuffer);
FLMUINT uiNumChars;
jstring sBuf = NULL;
if (RC_BAD( rc = pThisNode->getUnicodeChars( ifpDb, &uiNumChars)))
{
ThrowError( rc, pEnv);
goto Exit;
}
if (uiNumChars * sizeof( FLMUNICODE) >= uiBufSize)
{
uiBufSize = (uiNumChars + 1) * sizeof(FLMUNICODE);
if (RC_BAD( rc = f_alloc( uiBufSize, &puzBuf)))
{
ThrowError( rc, pEnv);
goto Exit;
}
}
if (RC_BAD( rc = pThisNode->getUnicode( ifpDb, puzBuf, uiBufSize, 0,
uiNumChars, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
sBuf = pEnv->NewString( puzBuf, (jsize)uiNumChars);
Exit:
if (puzBuf != uzBuffer)
{
f_free( &puzBuf);
}
return( sBuf);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getStringLen(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT uiVal;
if (RC_BAD(rc = pThisNode->getUnicodeChars( ifpDb, &uiVal)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jint)uiVal);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jint JNICALL Java_xflaim_DOMNode__1getDataType(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT uiType;
if (RC_BAD( rc = pThisNode->getDataType( ifpDb, &uiType)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jint)uiType);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getDataLength(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT uiLength;
if (RC_BAD( rc = pThisNode->getDataLength( ifpDb, &uiLength)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)uiLength);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jbyteArray JNICALL Java_xflaim_DOMNode__1getBinary(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT uiLength;
jbyteArray Data = NULL;
void * pvData = NULL;
jboolean bIsCopy = false;
if (RC_BAD(rc = pThisNode->getDataLength( ifpDb, &uiLength)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Data = pEnv->NewByteArray( (jsize)uiLength);
if ( (pvData = pEnv->GetPrimitiveArrayCritical( Data, &bIsCopy)) == NULL)
{
rc = RC_SET( NE_XFLM_MEM);
ThrowError( rc, pEnv);
goto Exit;
}
if (RC_BAD( rc = pThisNode->getBinary(ifpDb, pvData, 0, uiLength, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
if (pvData)
{
if (RC_BAD( rc))
{
pEnv->ReleasePrimitiveArrayCritical( Data, pvData, JNI_ABORT);
pEnv->DeleteLocalRef( Data);
Data = NULL;
}
else
{
pEnv->ReleasePrimitiveArrayCritical( Data, pvData, 0);
}
}
return( Data);
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setLong(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lValue)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
if (RC_BAD( rc = pThisNode->setINT64( ifpDb, (FLMINT64)lValue)))
{
ThrowError( rc, pEnv);
}
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setString(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jstring sValue,
jboolean bLast)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
jchar * pszValue = NULL;
FLMUINT uiLength = 0;
if (sValue)
{
pszValue = (jchar *)pEnv->GetStringCritical( sValue, NULL);
uiLength = (FLMUINT)pEnv->GetStringLength( sValue);
}
if (RC_BAD( rc = pThisNode->setUnicode( ifpDb, pszValue, uiLength,
bLast ? TRUE : FALSE)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
if (pszValue)
{
pEnv->ReleaseStringCritical( sValue, pszValue);
}
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT void JNICALL Java_xflaim_DOMNode__1setBinary(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jbyteArray Value)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMUINT uiLength = pEnv->GetArrayLength( Value);
void * pvValue = NULL;
jboolean bIsCopy = false;
if( (pvValue = pEnv->GetPrimitiveArrayCritical( Value, &bIsCopy)) == NULL)
{
rc = RC_SET( NE_XFLM_MEM);
ThrowError( rc, pEnv);
goto Exit;
}
if( RC_BAD( rc = pThisNode->setBinary(ifpDb, pvValue, uiLength)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
if (pvValue)
{
pEnv->ReleasePrimitiveArrayCritical( Value, pvValue, JNI_ABORT);
}
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT void JNICALL Java_xflaim_DOMNode__1release(
JNIEnv *, // pEnv,
jobject, // obj,
jlong lThis)
{
IF_DOMNode * pNode = THIS_NODE();
if( pNode)
{
pNode->Release();
}
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1createAnnotation(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if( lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if( RC_BAD( rc = pThisNode->createAnnotation( ifpDb, &ifpNewNode, NULL)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)((FLMUINT)ifpNewNode));
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jlong JNICALL Java_xflaim_DOMNode__1getAnnotation(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef,
jlong lReusedNodeRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
IF_DOMNode * ifpNewNode = NULL;
if( lReusedNodeRef)
{
ifpNewNode = (IF_DOMNode *)(FLMUINT)lReusedNodeRef;
}
if( RC_BAD( rc = pThisNode->getAnnotation( ifpDb, &ifpNewNode)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (jlong)((FLMUINT)ifpNewNode));
}
/****************************************************************************
Desc:
****************************************************************************/
JNIEXPORT jboolean JNICALL Java_xflaim_DOMNode__1hasAnnotation(
JNIEnv * pEnv,
jobject, // obj,
jlong lThis,
jlong lpDbRef)
{
RCODE rc = NE_XFLM_OK;
IF_DOMNode * pThisNode = THIS_NODE();
IF_Db * ifpDb = (IF_Db *)(FLMUINT)lpDbRef;
FLMBOOL bHasAnnotation;
if( RC_BAD( rc = pThisNode->hasAnnotation( ifpDb, &bHasAnnotation)))
{
ThrowError( rc, pEnv);
goto Exit;
}
Exit:
return( (bHasAnnotation ? true : false));
}