#if defined(_WIN32)
# define WIN32_LEAN_AND_MEAN 1
# include <windows.h>
# define DLLHANDLE HMODULE
# define LOADERLIB "p6loader.dll"
# define LOADLIB(fn) LoadLibraryA((fn))
# define LOADSYMBOL(h,s) GetProcAddress((HMODULE)(h),(s))
# define FREELIB(h) FreeLibrary((HMODULE)(h))
#else
# include <errno.h>
# include <dlfcn.h>
# define DLLHANDLE void*
# define LOADERLIB "libp6loader.so"
# define LOADLIB(fn) dlopen((fn),RTLD_NOW)
# define LOADSYMBOL(h,s) dlsym((h),(s))
# define FREELIB(h) !dlclose((h))
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory>
#include "filestream.h"
#include "p6xjr.h"
using namespace P6R;
{
public:
{
if (!ppIface) return eAccessFault;
*ppIface = NULL;
if(iid == IID_p6ICom) *ppIface =
static_cast<p6IDataStream*
>(
this);
else if(iid == IID_p6IDataStream) *ppIface =
static_cast<p6IDataStream*
>(
this);
else return eNoInterface;
return eOk;
}
{
return m_cRef++;
}
{
if(0 == (tmp = (--m_cRef))) { delete this; }
return tmp;
}
{
return eOk;
}
{
if (m_cBuffer && cData+1 > m_cBuffer)
{
free( m_pBuffer );
m_pBuffer = NULL;
m_cBuffer = 0;
}
if (!m_pBuffer)
{
m_pBuffer = (
P6CHAR*) malloc(cData+1);
m_cBuffer = cData;
}
if (m_pBuffer)
{
memcpy( m_pBuffer, pData, cData+1 );
m_pBuffer[cData] = '\0';
printf( m_pBuffer );
}
return eOk;
}
{
CConsoleStream *pObj = NULL;
if (NULL != (pObj = new (std::nothrow) CConsoleStream() ))
{
if (
P6FAILED(err = pObj->queryInterface( iid, ppIface )))
delete pObj;
}
return err;
}
CConsoleStream() : m_cRef(0), m_pBuffer(NULL), m_cBuffer(0) {;}
virtual ~CConsoleStream() { if (m_pBuffer) free(m_pBuffer); }
protected:
};
{
CFileStream *pObj = NULL;
"<?xml version='1.0' encoding='ISO-8859-1'?>\n" \
"<xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n" \
"<xsl:output method='json'/>\n" \
" \n" \
"<xsl:variable name='gtlist' select='/staff/employee/name'/>\n" \
" \n" \
"<xsl:template match='/'>\n" \
"{{\"employee\":\n" \
"<xsl:text> [</xsl:text>" \
"<xsl:for-each select='$gtlist' >\n" \
" <xsl:sort select='.' />" \
"\"<xsl:value-of select='.' />\"" \
"<xsl:if test='position() != last()'>,\n </xsl:if>" \
"</xsl:for-each>\n" \
"<xsl:text>]\n}}</xsl:text>" \
"</xsl:template></xsl:stylesheet>";
"<?xml version='1.0' encoding='ISO-8859-1'?>\n" \
"<xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n" \
"<xsl:output method='json'/>\n" \
" \n" \
"<xsl:variable name='gtlist' select='/JSON-document/staff/employee/name'/>\n" \
" \n" \
"<xsl:template match='/'>\n" \
"{{\"employee\":\n" \
"<xsl:text> [</xsl:text>" \
"<xsl:for-each select='$gtlist' >\n" \
" <xsl:sort select='.' />" \
"\"<xsl:value-of select='.' />\"" \
"<xsl:if test='position() != last()'>,\n </xsl:if>" \
"</xsl:for-each>\n" \
"<xsl:text>]\n}}</xsl:text>" \
"</xsl:template></xsl:stylesheet>";
"<?xml version='1.0' encoding='UTF-8' ?>\n" \
"<staff>" \
"<employee>" \
" <name>Henry Joseph</name>" \
" <hiredate>2007-01-09</hiredate>" \
"</employee>" \
"<employee>" \
" <name>Irvin Joseph</name>" \
" <hiredate>2003-06-12-03:05</hiredate>" \
"</employee>" \
"<employee>" \
" <name>Izzy Joseph</name>" \
" <hiredate>1998-11-03</hiredate>" \
"</employee>" \
"<employee>" \
" <name>Basil Joseph</name>" \
" <hiredate>1998-11-03</hiredate>" \
"</employee>" \
"<employee>" \
" <name>Mark Joseph</name>" \
" <hiredate>2004-07-12-08:00</hiredate>" \
"</employee>" \
"<employee>" \
" <name>Jim Susoy</name>" \
" <hiredate>2004-07-12-08:00</hiredate>" \
"</employee>" \
"</staff>";
"{\"staff\": {\n" \
" \"employee\": [\n" \
" {\"name\":\"Henry Joseph\",\n" \
" \"hiredate\":\"2007-01-09\"},\n" \
" {\"name\":\"Irvin Joseph\",\n" \
" \"hiredate\":\"2003-06-12-03:00\"},\n" \
" {\"name\":\"Izzy Joseph\",\n" \
" \"hiredate\":\"1998-11-03:00\"},\n" \
" {\"name\":\"Basil Joseph\",\n" \
" \"hiredate\":\"1998-11-03\"},\n" \
" {\"name\":\"Mark Joseph\",\n" \
" \"hiredate\":\"2004-07-12-08:00\"},\n" \
" {\"name\":\"Jim Susoy\",\n" \
" \"hiredate\":\"2004-07-12-08:00\"}]\n" \
" } }";
{
printf( "Error: p6IXSLT Initialize failed-1\n" );
return err;
}
{
printf( "Error: p6IXSLT Initialize failed-2\n" );
return err;
}
if (NULL != (pObj = new (std::nothrow) CFileStream() ))
{
pObj->initialize( "example-xslt2-1.txt" );
if (
P6FAILED( err = pObj->queryInterface( IID_p6IDataStream, (
P6VOID**)&pOutStream1 )))
{
delete pObj;
return err;
}
}
if (NULL != (pObj = new (std::nothrow) CFileStream() ))
{
pObj->initialize( "example-xslt2-2.txt" );
if (
P6FAILED( err = pObj->queryInterface( IID_p6IDataStream, (
P6VOID**)&pOutStream2 )))
{
delete pObj;
return err;
}
}
return err;
}
int main(int argc,char *argv[])
{
{
{
err = runXSLT( cpDataStream );
printf( "runXSLT result: [ %x ]\n", err );
}
else printf("ERROR: Failed to initialize the loader [ %x ]\n", err );
}
else printf( "ERROR: Failed to create CConsoleStream [ %x ]\n", err );
return err;
}