text: /*-----------------------------------------------------------------------
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"; you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
    http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
  -----------------------------------------------------------------------*/
  #pragma once
  
  #include "resqml2/AbstractLocal3dCrs.h"
  
  namespace RESQML2_0_1_NS
  {
  	class LocalTime3dCrs : public RESQML2_NS::AbstractLocal3dCrs
  	{
  	private:
  		void init(COMMON_NS::DataObjectRepository * repo, const std::string & guid, const std::string & title,
  			const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
  			const double & arealRotation,
  			const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom,
  			const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
  			const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const bool & isUpOriented);
  
  		double getZOffset() const {return .0;}
  
  	public:
  
  		/**
  		* Only to be used in partial transfer context
  		*/
  		LocalTime3dCrs(gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject) : RESQML2_NS::AbstractLocal3dCrs(partialObject) {}
  
  		/**
  		* Creates a local depth 3d CRS which is fully identified by means of EPSG code.
  		* @param repo					The repo where the underlying gsoap proxy is going to be created.
  		* @param guid				The guid to set to the local 3d crs. If empty then a new guid will be generated.
  		* @param title				A title for the instance to create.
  		* @param originOrdinal1		The offset of the global 2d crs on its first axis.
  		* @param originOrdinal2		The offset of the global 2d crs on its second axis.
  		* @param originOrdinal3		The offset in depth of the local CRS regarding the depth origin of the vertical CRS.
  		* @param arealRotation		The areal rotation in radians regarding the projected crs.
  		* @param projectedUom		The unit of measure of the projected axis of this instance.
  		* @param projectedEpsgCode	The epsg code of the associated projected CRS.
  		* @param timeUom			The unit of measure of the Z offset of this instance.
  		* @param verticalUom		The unit of measure of the vertical axis of this instance.
  		* @param verticalEpsgCode	The epsg code of the associated vertical CRS.
  		* @param isUpOriented		If true, indicates that the Z offset if an elevation when positive. If false, the Z offset is a depth when positive.
  		*/
  		LocalTime3dCrs(COMMON_NS::DataObjectRepository * repo, const std::string & guid, const std::string & title,
  			const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
  			const double & arealRotation,
  			const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
  			const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
  			const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
  
  		/**
  		* Creates a local depth 3d CRS which is fully unknown.
  		* @param repo					The repo where the underlying gsoap proxy is going to be created.
  		* @param guid					The guid to set to the local 3d crs. If empty then a new guid will be generated.
  		* @param title					A title for the instance to create.
  		* @param originOrdinal1			The offset of the global 2d crs on its first axis.
  		* @param originOrdinal2			The offset of the global 2d crs on its second axis.
  		* @param originOrdinal3			The offset in depth of the local CRS regarding the depth origin of the vertical CRS.
  		* @param arealRotation			The areal rotation in radians regarding the projected crs.
  		* @param projectedUom			The unit of measure of the projected axis of this instance.
  		* @param projectedUnknownReason	Indicates why the projected CRS cannot be provided using EPSG or GML.
  		* @param timeUom				The unit of measure of the Z offset of this instance.
  		* @param verticalUom			The unit of measure of the vertical axis of this instance.
  		* @param verticalUnknownReason	Indicates why the vertical CRS cannot be provided using EPSG or GML.
  		* @param isUpOriented			If true, indicates that the Z offset if an elevation when positive. If false, the Z offset is a depth when positive.
  		*/
  		LocalTime3dCrs(COMMON_NS::DataObjectRepository * repo, const std::string & guid, const std::string & title,
  			const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
  			const double & arealRotation,
  			const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
  			const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
  			const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
  
  		/**
  		* Creates a local depth 3d CRS which is identified by an EPSG code for its projected part and which is unkown for its vertial part.
  		* @param repo					The repo where the underlying gsoap proxy is going to be created.
  		* @param guid					The guid to set to the local 3d crs. If empty then a new guid will be generated.
  		* @param title					A title for the instance to create.
  		* @param originOrdinal1			The offset of the global 2d crs on its first axis.
  		* @param originOrdinal2			The offset of the global 2d crs on its second axis.
  		* @param originOrdinal3			The offset in depth of the local CRS regarding the depth origin of the vertical CRS.
  		* @param arealRotation			The areal rotation in radians regarding the projected crs.
  		* @param projectedUom			The unit of measure of the projected axis of this instance.
  		* @param timeUom				The unit of measure of the Z offset of this instance.
  		* @param projectedEpsgCode		The epsg code of the associated projected CRS.
  		* @param verticalUom			The unit of measure of the vertical axis of this instance.
  		* @param verticalUnknownReason	Indicates why the vertical CRS cannot be provided using EPSG or GML.
  		* @param isUpOriented			If true, indicates that the Z offset if an elevation when positive. If false, the Z offset is a depth when positive.
  		*/
  		LocalTime3dCrs(COMMON_NS::DataObjectRepository * repo, const std::string & guid, const std::string & title,
  			const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
  			const double & arealRotation,
  			const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
  			const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
  			const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
  
  		/**
  		* Creates a local depth 3d CRS which unkown for its projected part and which is identified by an EPSG code for its vertical part.
  		* @param repo					The repo where the underlying gsoap proxy is going to be created.
  		* @param guid					The guid to set to the local 3d crs. If empty then a new guid will be generated.
  		* @param title					A title for the instance to create.
  		* @param originOrdinal1			The offset of the global 2d crs on its first axis.
  		* @param originOrdinal2			The offset of the global 2d crs on its second axis.
  		* @param originOrdinal3			The offset in depth of the local CRS regarding the depth origin of the vertical CRS.
  		* @param arealRotation			The areal rotation in radians regarding the projected crs.
  		* @param projectedUom			The unit of measure of the projected axis of this instance.
  		* @param projectedUnknownReason	Indicates why the projected CRS cannot be provided using EPSG or GML.
  		* @param timeUom				The unit of measure of the Z offset of this instance.
  		* @param verticalUom			The unit of measure of the vertical axis of this instance.
  		* @param verticalEpsgCode		The epsg code of the associated vertical CRS.
  		* @param isUpOriented			If true, indicates that the Z offset if an elevation when positive. If false, the Z offset is a depth when positive.
  		*/
  		LocalTime3dCrs(COMMON_NS::DataObjectRepository * repo, const std::string & guid, const std::string & title,
  			const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
  			const double & arealRotation,
  			const gsoap_resqml2_0_1::eml20__LengthUom & projectedUom, const std::string & projectedUnknownReason,
  			const gsoap_resqml2_0_1::eml20__TimeUom & timeUom,
  			const gsoap_resqml2_0_1::eml20__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
  
  		/**
  		* Creates an instance of this class by wrapping a gsoap instance.
  		*/
  		LocalTime3dCrs(gsoap_resqml2_0_1::_resqml20__LocalTime3dCrs* fromGsoap):
  			AbstractLocal3dCrs(fromGsoap) {}
  
  		/**
  		* Destructor does nothing since the memory is manged by the gsoap context.
  		*/
  		~LocalTime3dCrs() {}
  
  		DLL_IMPORT_OR_EXPORT gsoap_resqml2_0_1::eml20__TimeUom getUnit() const;
  
  		DLL_IMPORT_OR_EXPORT std::string getUnitAsString() const;
  
  		DLL_IMPORT_OR_EXPORT static const char* XML_TAG;
  		DLL_IMPORT_OR_EXPORT virtual std::string getXmlTag() const {return XML_TAG;}
  	};
  }
  