#include "cxpathextend.h"
using namespace P6R;
struct stringTable
{
};
typedef stringTable lookTable_t;
const lookTable_t availableFunctions[ NUM_FUNCTIONS ] =
{
{
P6CTEXT(
"http-&&www.p6r.com&namespaces&test&p-setclick88"), 47,
P6CTEXT(
""), 0, 2 },
};
CXpathExtend::CXpathExtend() : m_cRef( 1 ),
m_pStr( NULL )
{}
CXpathExtend::~CXpathExtend()
{
if (NULL != m_pStr) m_pStr->release();
}
{
if (!ppIface) return eAccessFault;
*ppIface = NULL;
if (iid == IID_p6ICom ) *ppIface =
static_cast<p6ICom*
>(
this);
else if (iid == IID_p6IXpathVariables) *ppIface =
static_cast<p6IXpathVariables*
>(
this);
else return eNoInterface;
return eOk;
}
{
if (m_bInitialized) return eAlreadyInitialized;
if (NULL == pStr ) return eInvalidArg;
m_pStr = pStr;
return eOk;
}
{
if (NULL == pVarName || NULL == pVarValue) return eInvalidArg;
err = m_pStr->wstrncmp( pVarName, (
const P6WCHAR*)
P6TEXT(
"$externalVar1"), 13, &match );
{
return eOk;
}
err = m_pStr->wstrncmp( pVarName, (
const P6WCHAR*)
P6TEXT(
"$externalVar2"), 13, &match );
{
return eOk;
}
err = m_pStr->wstrncmp( pVarName, (
const P6WCHAR*)
P6TEXT(
"$external55"), 11, &match );
{
return eOk;
}
err = m_pStr->wstrncmp( pVarName, (
const P6WCHAR*)
P6TEXT(
"$collate1"), 9, &match );
{
#if defined( P6_WINDOWS )
#elif defined( P6_LINUX )
#elif defined( P6_SOLARIS )
#endif
return eOk;
}
return err;
}
)
{
if (NULL == pFuncName || NULL == pVarValue) return eInvalidArg;
err = matchFunction( pFuncName, &code );
if (
P6FAILED( err ) && eNotFound != err)
return err;
switch( code ) {
case 1:
break;
case 2:
if (1 < numParams)
{
{
length = 2000;
err = pChild->
toString( buffer, &length );
switch( count ) {
case 0:
err = m_pStr->wstrncmp(
P6TEXT(
"Item 1"), buffer, 6, &match );
{
return eOk;
}
break;
case 1:
err = m_pStr->wstrncmp(
P6TEXT(
"Item 2"), buffer, 6, &match );
{
return eOk;
}
break;
case 2:
err = m_pStr->wstrncmp(
P6TEXT(
"Item 3"), buffer, 6, &match );
{
return eOk;
}
break;
}
count++;
}
}
break;
case 3:
break;
default:
err = eNotFound;
break;
}
return err;
}
{
*pFunctionCode = 0;
for(
P6UINT8 i=0; i < NUM_FUNCTIONS; i++ )
{
err = m_pStr->wstrnicmp( availableFunctions[i].pName, pFunctionName, availableFunctions[i].nameLength, &match );
{
*pFunctionCode = availableFunctions[i].numValue;
return eOk;
}
}
return eNotFound;
}