VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "c_TestAnyImplTie"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
'Generated by IDL2VB v120. Copyright (c) 1999 Martin.Both
'Source File Name: ../demos/grid/grid.idl
'Target File Name: c_TestAnyImplTie.cls

Option Explicit

'You can use this class as a tie to your servant or as a servant example.
'Using as a tie:
' Your servant has to implement c_TestAny
' To activate a servant via tie write following:
'  Dim oTestAnyImplTie As c_TestAnyImplTie
'  Set oTestAnyImplTie = New c_TestAnyImplTie
'  Call oTestAnyImplTie.setDelegate(oServant)
'  Call oOrb.Connect(oTestAnyImplTie)
'Using as a servant example:
' Rename class to c_TestAnyImpl and save the file as c_TestAnyImpl.cls.
' Remove delegate stuff and write your own servant operations.
' To activate a servant write following:
'  Dim oTestAnyImpl As c_TestAnyImpl
'  Set oTestAnyImpl = New c_TestAnyImpl
'  Call oOrb.Connect(oTestAnyImpl)

Implements cOrbSkeleton
Implements c_TestAny

'interface ::TestAny
Const sTypeId As String = "IDL:TestAny:1.0"
Private oObjRef As cOrbObjRef
Private oDelegate As c_TestAny

'Each tie contains a delegate object, to which all operations are forwarded.
'You can remove this if you use this class as an example for your servant.
Public Sub setDelegate(ByVal Delegate As c_TestAny)
    Set oDelegate = Delegate
End Sub

Public Function getDelegate() As c_TestAny
    Set getDelegate = oDelegate
End Function

Friend Property Get ObjRef() As cOrbObjRef
    Set ObjRef = oObjRef
End Property

Friend Property Get This() As c_TestAny
    Dim oObj As cOrbObject
    Set oObj = New c_TestAny
    If oObj.setObjRef(oObjRef, False) Then
        Set This = Nothing
    Else
        Set This = oObj
    End If
End Property

Private Property Get cOrbSkeleton_TypeId(ByVal Item As Integer) As String
    Select Case Item
    Case 0: cOrbSkeleton_TypeId = sTypeId
    Case 1: cOrbSkeleton_TypeId = "IDL:omg.org/CORBA/Object:1.0"
    End Select
End Property

Private Property Get cOrbSkeleton_ObjRef() As cOrbObjRef
    Set cOrbSkeleton_ObjRef = oObjRef
End Property

Private Property Set cOrbSkeleton_ObjRef(ByVal newObjRef As cOrbObjRef)
    Set oObjRef = newObjRef
End Property

'Helper
Private Function cOrbSkeleton_execute(ByVal sOperation As String, _
    ByVal oIn As cOrbStream, ByVal oOut As cOrbStream) As Long
    On Error GoTo ErrHandler
    Dim oImpl_ As c_TestAny
    Set oImpl_ = IIf(oDelegate Is Nothing, Me, oDelegate)
    Select Case sOperation
    Case "print"
        Dim a1_what As cOrbAny
        Set a1_what = oIn.readAny()
        Dim printFunc As cOrbAny
        Set printFunc = oImpl_.printFunc(a1_what)
        Call oOut.writeAny(printFunc)
    Case Else
        Call VBOrb.raiseBADOPERATION(1, VBOrb.CompletedNO, sOperation)
    End Select
    cOrbSkeleton_execute = 0 'NO_EXCEPTION
    Exit Function
ErrHandler:
    Call VBOrb.ErrReraise(Err, "TestAny.execute(" & sOperation & ")")
End Function

'Implements c_TestAny

'print()
Private Function c_TestAny_printFunc(ByVal what As cOrbAny) As cOrbAny
    On Error GoTo ErrHandler
    'Please write your own code here if using as servant example
    If oDelegate Is Nothing Then
        Call VBOrb.raiseNOIMPLEMENT(0, VBOrb.CompletedNO)
    Else
        Set c_TestAny_printFunc = oDelegate.printFunc(what)
    End If
    Exit Function
ErrHandler:
    Set c_TestAny_printFunc = Nothing
    Call VBOrb.ErrReraise(Err, "printFunc")
End Function
