<?php
class SOAP_Interop_GroupI {

    function echoString($inputString)
    {
        if (isset($inputString->inputString)) {
          return array("return"=>$inputString->inputString);
        } else {
          return $inputString;
        }
    }

    function echoInteger($inputInteger)
    {
      return array("return"=>$inputInteger->inputInteger);
    }

    function echoFloat($inputFloat)
    {
      return array("return"=>$inputFloat->inputFloat);
    }

    function echoVoid()
    {
    }

    function echoBase64($inputBase64)
    {
        if (isset($inputBase64->inputBase64)) {
          return array("return"=>$inputBase64->inputBase64);
        } else {
          return $inputBase64;
        }
    }

    function echoDate($timeInstant)
    {
      return array("return"=>$timeInstant->inputDate);
    }

    function echoComplexType($inputComplexType)
    {
        if (isset($inputComplexType->inputComplexType)) {
          return array("return"=>$inputComplexType->inputComplexType);
        } else {
          return $inputComplexType;
        }
    }

    function echoIntegerMultiOccurs($input)
    {
        if (isset($input->inputIntegerMultiOccurs->int)) {
          return array("return"=>$input->inputIntegerMultiOccurs->int);
        } else {
          return array();
        }
    }

    function echoFloatMultiOccurs($input)
    {
        if (isset($input->inputFloatMultiOccurs->float)) {
          return array("return"=>$input->inputFloatMultiOccurs->float);
        } else {
          return array();
        }
    }

    function echoStringMultiOccurs($input)
    {
        if (isset($input->inputStringMultiOccurs->string)) {
          return array("return"=>$input->inputStringMultiOccurs->string);
        } else {
          return array();
        }
    }

    function echoComplexTypeMultiOccurs($input)
    {
        if (isset($input->inputComplexTypeMultiOccurs->SOAPComplexType)) {
          return array("return"=>$input->inputComplexTypeMultiOccurs->SOAPComplexType);
        } else {
          return array();
        }
    }

    function echoHexBinary($hb)
    {
        if (isset($hb->inputHexBinary)) {
          return array("return"=>$hb->inputHexBinary);
        } else {
          return $hb;
        }
    }

    function echoDecimal($dec)
    {
      return array("return"=>$dec->inputDecimal);
    }

    function echoBoolean($boolean)
    {
      return array("return"=>$boolean->inputBoolean);
    }

    function echoComplexTypeAsSimpleTypes($input)
    {
        if (isset($input->inputComplexType)) {
          $ret = array("outputInteger" => $input->inputComplexType->varInt,
                       "outputFloat"   => $input->inputComplexType->varFloat);
          if (isset($input->inputComplexType->varString)) {
            $ret["outputString"] = $input->inputComplexType->varString;
          }
          return $ret;
        } else {
          return array();
        }
      }

    function echoSimpleTypesAsComplexType($input)
    {
      $ret = array("varInt"   => $input->inputInteger,
                   "varFloat" => $input->inputFloat);
      if (isset($input->inputString)) {
        $ret["varString"] = $input->inputString;
      }
      return array("return"=>$ret);
    }

    function echoNestedComplexType($inputComplexType)
    {
        if (isset($inputComplexType->inputComplexType)) {
          return array("return"=>$inputComplexType->inputComplexType);
        } else {
          return $inputComplexType;
        }
    }

    function echoNestedMultiOccurs($inputComplexType)
    {
        if (isset($inputComplexType->inputComplexType)) {
          return array("return"=>$inputComplexType->inputComplexType);
        } else {
          return $inputComplexType;
        }
    }

    function echoChoice($input)
    {
        if (isset($input->inputChoice)) {
          return array("return"=>$input->inputChoice);
        } else {
          return $input;
        }
    }

    function echoEnum($input)
    {
      return array("return"=>$input->inputEnum);
    }

    function echoAnyType($input)
    {
        if (isset($input->inputAnyType)) {
          return array("return"=>$input->inputAnyType);
        } else {
          return $input;
        }
    }

    function echoAnyElement($input)
    {
        if (isset($input->inputAny)) {
          return array("return"=>$input->inputAny);
        } else {
          return $input;
        }
    }

    function echoVoidSoapHeader()
    {
    }

    function echoMeStringRequest($input)
    {
      return new SoapHeader("http://soapinterop.org/","echoMeStringResponse",$input);
    }

    function echoMeComplexTypeRequest($input)
    {
      return new SoapHeader("http://soapinterop.org/","echoMeComplexTypeResponse",$input);
    }

}

$server = new SoapServer(dirname(__FILE__)."/round4_groupI_xsd.wsdl");
$server->setClass("SOAP_Interop_GroupI");
$server->handle($HTTP_RAW_POST_DATA);
?>
