#include "platform_guard.h" #include #include #include #include "common.h" #include "function/read_file.h" #include "function/write_file.h" #include "function/read_directory.h" #include "function/generate.h" #include "function/external_command.h" namespace InputXSLT { PlatformGuard::PlatformGuard(const std::vector& path): include_resolver_(path) { xercesc::XMLPlatformUtils::Initialize(); xalan::XalanTransformer::initialize(); const xalan::XalanDOMString customNamespace( "function.inputxslt.application" ); xalan::XalanTransformer::installExternalFunctionGlobal( customNamespace, xalan::XalanDOMString("read-file"), InputXSLT::FunctionReadFile(&this->include_resolver_) ); xalan::XalanTransformer::installExternalFunctionGlobal( customNamespace, xalan::XalanDOMString("write-file"), InputXSLT::FunctionWriteFile(&this->include_resolver_) ); xalan::XalanTransformer::installExternalFunctionGlobal( customNamespace, xalan::XalanDOMString("read-directory"), InputXSLT::FunctionReadDirectory(&this->include_resolver_) ); xalan::XalanTransformer::installExternalFunctionGlobal( customNamespace, xalan::XalanDOMString("generate"), InputXSLT::FunctionGenerate(&this->include_resolver_) ); xalan::XalanTransformer::installExternalFunctionGlobal( customNamespace, xalan::XalanDOMString("external-command"), InputXSLT::FunctionExternalCommand(&this->include_resolver_) ); } PlatformGuard::~PlatformGuard() { xalan::XalanTransformer::terminate(); } IncludeEntityResolver* PlatformGuard::getEntityResolver() { return &this->include_resolver_; } }