// Borland C++ Builder
// Copyright (c) 1995, 2005 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Soaplinked.pas' rev: 10.00

#ifndef SoaplinkedHPP
#define SoaplinkedHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <Sysinit.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <Rio.hpp>	// Pascal unit
#include <Typinfo.hpp>	// Pascal unit
#include <Webnode.hpp>	// Pascal unit
#include <Soappasinv.hpp>	// Pascal unit
#include <Intfinfo.hpp>	// Pascal unit
#include <Wsdlintf.hpp>	// Pascal unit
#include <Soapattachintf.hpp>	// Pascal unit
#include <Xmldoc.hpp>	// Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Soaplinked
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TLinkedWebNode;
class PASCALIMPLEMENTATION TLinkedWebNode : public Classes::TComponent 
{
	typedef Classes::TComponent inherited;
	
private:
	Soappasinv::TSoapPascalInvoker* FInvoker;
	Typinfo::TTypeInfo *IntfInfo;
	TMetaClass* FClass;
	AnsiString FMimeBoundary;
	Intfinfo::TIntfMethEntry FMethIntf;
	
protected:
	AnsiString __fastcall GetMimeBoundary();
	void __fastcall SetMimeBoundary(AnsiString Value);
	virtual Classes::TStream* __fastcall GetResponseStream(void);
	
public:
	__fastcall virtual TLinkedWebNode(Classes::TComponent* AOwner);
	__fastcall virtual ~TLinkedWebNode(void);
	virtual void __fastcall BeforeExecute(const Intfinfo::TIntfMetaData &IntfMetaData, const Intfinfo::TIntfMethEntry &MethodMetaData, int MethodIndex, Soapattachintf::_di_IMimeAttachmentHandler AttachHandler);
	virtual void __fastcall Execute(const AnsiString DataMsg, Classes::TStream* Resp)/* overload */;
	virtual void __fastcall Execute(const Classes::TStream* Request, Classes::TStream* Response)/* overload */;
	Classes::TStream* __fastcall Execute(const Classes::TStream* Request)/* overload */;
	__property Soappasinv::TSoapPascalInvoker* Invoker = {read=FInvoker};
	__property AnsiString MimeBoundary = {read=GetMimeBoundary, write=SetMimeBoundary};
private:
	void *__IWebNode;	/* Webnode::IWebNode */
	
public:
	operator IWebNode*(void) { return (IWebNode*)&__IWebNode; }
	
};


class DELPHICLASS TLogLinkedWebNode;
class PASCALIMPLEMENTATION TLogLinkedWebNode : public TLinkedWebNode 
{
	typedef TLinkedWebNode inherited;
	
private:
	AnsiString FReqFile;
	AnsiString FRespFile;
	
protected:
	virtual Classes::TStream* __fastcall GetResponseStream(void);
	
public:
	__fastcall virtual TLogLinkedWebNode(Classes::TComponent* AOwner);
	__fastcall virtual ~TLogLinkedWebNode(void);
	virtual void __fastcall Execute(const Classes::TStream* Request, Classes::TStream* Response)/* overload */;
	
__published:
	__property AnsiString ReqFile = {read=FReqFile, write=FReqFile};
	__property AnsiString RespFile = {read=FRespFile, write=FRespFile};
	
/* Hoisted overloads: */
	
public:
	inline void __fastcall  Execute(const AnsiString DataMsg, Classes::TStream* Resp){ TLinkedWebNode::Execute(DataMsg, Resp); }
	inline Classes::TStream* __fastcall  Execute(const Classes::TStream* Request){ return TLinkedWebNode::Execute(Request); }
	
};


class DELPHICLASS TLinkedRIO;
class PASCALIMPLEMENTATION TLinkedRIO : public Rio::TRIO 
{
	typedef Rio::TRIO inherited;
	
private:
	TLinkedWebNode* FLinkedWebNode;
	
protected:
	virtual Classes::TStream* __fastcall GetResponseStream(Wsdlintf::TWebServiceBindingType BindingType);
	
public:
	virtual HRESULT __stdcall QueryInterface(const GUID &IID, /* out */ void *Obj);
	/**
	 * Template function to ease querying for a
	 * smart-Interface-object
	 */
	template <typename T>
	HRESULT __stdcall QueryInterface(DelphiInterface<T>& smartIntf)
	{
	  return QueryInterface(__uuidof(T), reinterpret_cast<void*>(static_cast<T**>(&smartIntf)));
	}
	__fastcall virtual TLinkedRIO(Classes::TComponent* AOwner)/* overload */;
	__fastcall TLinkedRIO(Classes::TComponent* AOwner, AnsiString ReqFile, AnsiString RespFile)/* overload */;
	__fastcall virtual ~TLinkedRIO(void);
	__property TLinkedWebNode* WebNode = {read=FLinkedWebNode};
};


//-- var, const, procedure ---------------------------------------------------

}	/* namespace Soaplinked */
using namespace Soaplinked;
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Soaplinked
