text: #pragma once
  
  // Description: C++18 Object interface for CFInt HostNode.
  
  /*
   *	org.msscf.msscf.CFInt
   *
   *	Copyright (c) 2020 Mark Stephen Sobkow
   *	
   *	MSS Code Factory CFSec 2.13 Security Essentials
   *	
   *	Copyright 2020-2021 Mark Stephen Sobkow
   *	
   *		This file is part of MSS Code Factory.
   *	
   *		MSS Code Factory is available under dual commercial license from Mark Stephen
   *		Sobkow, or under the terms of the GNU General Public License, Version 3
   *		or later.
   *	
   *	    MSS Code Factory is free software: you can redistribute it and/or modify
   *	    it under the terms of the GNU General Public License as published by
   *	    the Free Software Foundation, either version 3 of the License, or
   *	    (at your option) any later version.
   *	
   *	    MSS Code Factory is distributed in the hope that it will be useful,
   *	    but WITHOUT ANY WARRANTY; without even the implied warranty of
   *	    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   *	    GNU General Public License for more details.
   *	
   *	    You should have received a copy of the GNU General Public License
   *	    along with MSS Code Factory.  If not, see <https://www.gnu.org/licenses/>.
   *	
   *	Donations to support MSS Code Factory can be made at
   *	https://www.paypal.com/paypalme2/MarkSobkow
   *	
   *	Please contact Mark Stephen Sobkow at mark.sobkow@gmail.com for commercial licensing.
   *
   *	Manufactured by MSS Code Factory 2.12
   */
  
  #include <cflib/ICFLibPublic.hpp>
  #include <cfint/ICFIntPublic.hpp>
  #include <cfsec/CFSecHostNodeBuff.hpp>
  
  namespace cfint {
  	class ICFIntSchemaObj;
  }
  
  namespace cfsec {
  	class ICFSecClusterObj;
  	class ICFSecClusterEditObj;
  	class ICFSecClusterTableObj;
  }
  
  namespace cfint { 
  	class ICFIntClusterObj;
  	class ICFIntClusterEditObj;
  	class ICFIntClusterTableObj;
  }
  
  namespace cfsec {
  	class ICFSecHostNodeObj;
  	class ICFSecHostNodeEditObj;
  	class ICFSecHostNodeTableObj;
  }
  
  namespace cfint { 
  	class ICFIntHostNodeObj;
  	class ICFIntHostNodeEditObj;
  	class ICFIntHostNodeTableObj;
  }
  
  namespace cfsec {
  	class ICFSecISOCcyObj;
  	class ICFSecISOCcyEditObj;
  	class ICFSecISOCcyTableObj;
  }
  
  namespace cfint { 
  	class ICFIntISOCcyObj;
  	class ICFIntISOCcyEditObj;
  	class ICFIntISOCcyTableObj;
  }
  
  namespace cfsec {
  	class ICFSecISOCtryObj;
  	class ICFSecISOCtryEditObj;
  	class ICFSecISOCtryTableObj;
  }
  
  namespace cfint { 
  	class ICFIntISOCtryObj;
  	class ICFIntISOCtryEditObj;
  	class ICFIntISOCtryTableObj;
  }
  
  namespace cfsec {
  	class ICFSecISOCtryCcyObj;
  	class ICFSecISOCtryCcyEditObj;
  	class ICFSecISOCtryCcyTableObj;
  }
  
  namespace cfint { 
  	class ICFIntISOCtryCcyObj;
  	class ICFIntISOCtryCcyEditObj;
  	class ICFIntISOCtryCcyTableObj;
  }
  
  namespace cfsec {
  	class ICFSecISOCtryLangObj;
  	class ICFSecISOCtryLangEditObj;
  	class ICFSecISOCtryLangTableObj;
  }
  
  namespace cfint { 
  	class ICFIntISOCtryLangObj;
  	class ICFIntISOCtryLangEditObj;
  	class ICFIntISOCtryLangTableObj;
  }
  
  namespace cfsec {
  	class ICFSecISOLangObj;
  	class ICFSecISOLangEditObj;
  	class ICFSecISOLangTableObj;
  }
  
  namespace cfint { 
  	class ICFIntISOLangObj;
  	class ICFIntISOLangEditObj;
  	class ICFIntISOLangTableObj;
  }
  
  namespace cfsec {
  	class ICFSecISOTZoneObj;
  	class ICFSecISOTZoneEditObj;
  	class ICFSecISOTZoneTableObj;
  }
  
  namespace cfint { 
  	class ICFIntISOTZoneObj;
  	class ICFIntISOTZoneEditObj;
  	class ICFIntISOTZoneTableObj;
  	class ICFIntLicenseObj;
  	class ICFIntLicenseEditObj;
  	class ICFIntLicenseTableObj;
  	class ICFIntMajorVersionObj;
  	class ICFIntMajorVersionEditObj;
  	class ICFIntMajorVersionTableObj;
  	class ICFIntMimeTypeObj;
  	class ICFIntMimeTypeEditObj;
  	class ICFIntMimeTypeTableObj;
  	class ICFIntMinorVersionObj;
  	class ICFIntMinorVersionEditObj;
  	class ICFIntMinorVersionTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecAppObj;
  	class ICFSecSecAppEditObj;
  	class ICFSecSecAppTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecAppObj;
  	class ICFIntSecAppEditObj;
  	class ICFIntSecAppTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecDeviceObj;
  	class ICFSecSecDeviceEditObj;
  	class ICFSecSecDeviceTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecDeviceObj;
  	class ICFIntSecDeviceEditObj;
  	class ICFIntSecDeviceTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecFormObj;
  	class ICFSecSecFormEditObj;
  	class ICFSecSecFormTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecFormObj;
  	class ICFIntSecFormEditObj;
  	class ICFIntSecFormTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecGroupObj;
  	class ICFSecSecGroupEditObj;
  	class ICFSecSecGroupTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecGroupObj;
  	class ICFIntSecGroupEditObj;
  	class ICFIntSecGroupTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecGroupFormObj;
  	class ICFSecSecGroupFormEditObj;
  	class ICFSecSecGroupFormTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecGroupFormObj;
  	class ICFIntSecGroupFormEditObj;
  	class ICFIntSecGroupFormTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecGrpIncObj;
  	class ICFSecSecGrpIncEditObj;
  	class ICFSecSecGrpIncTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecGrpIncObj;
  	class ICFIntSecGrpIncEditObj;
  	class ICFIntSecGrpIncTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecGrpMembObj;
  	class ICFSecSecGrpMembEditObj;
  	class ICFSecSecGrpMembTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecGrpMembObj;
  	class ICFIntSecGrpMembEditObj;
  	class ICFIntSecGrpMembTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecSessionObj;
  	class ICFSecSecSessionEditObj;
  	class ICFSecSecSessionTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecSessionObj;
  	class ICFIntSecSessionEditObj;
  	class ICFIntSecSessionTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSecUserObj;
  	class ICFSecSecUserEditObj;
  	class ICFSecSecUserTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSecUserObj;
  	class ICFIntSecUserEditObj;
  	class ICFIntSecUserTableObj;
  }
  
  namespace cfsec {
  	class ICFSecServiceObj;
  	class ICFSecServiceEditObj;
  	class ICFSecServiceTableObj;
  }
  
  namespace cfint { 
  	class ICFIntServiceObj;
  	class ICFIntServiceEditObj;
  	class ICFIntServiceTableObj;
  }
  
  namespace cfsec {
  	class ICFSecServiceTypeObj;
  	class ICFSecServiceTypeEditObj;
  	class ICFSecServiceTypeTableObj;
  }
  
  namespace cfint { 
  	class ICFIntServiceTypeObj;
  	class ICFIntServiceTypeEditObj;
  	class ICFIntServiceTypeTableObj;
  	class ICFIntSubProjectObj;
  	class ICFIntSubProjectEditObj;
  	class ICFIntSubProjectTableObj;
  }
  
  namespace cfsec {
  	class ICFSecSysClusterObj;
  	class ICFSecSysClusterEditObj;
  	class ICFSecSysClusterTableObj;
  }
  
  namespace cfint { 
  	class ICFIntSysClusterObj;
  	class ICFIntSysClusterEditObj;
  	class ICFIntSysClusterTableObj;
  }
  
  namespace cfsec {
  	class ICFSecTSecGroupObj;
  	class ICFSecTSecGroupEditObj;
  	class ICFSecTSecGroupTableObj;
  }
  
  namespace cfint { 
  	class ICFIntTSecGroupObj;
  	class ICFIntTSecGroupEditObj;
  	class ICFIntTSecGroupTableObj;
  }
  
  namespace cfsec {
  	class ICFSecTSecGrpIncObj;
  	class ICFSecTSecGrpIncEditObj;
  	class ICFSecTSecGrpIncTableObj;
  }
  
  namespace cfint { 
  	class ICFIntTSecGrpIncObj;
  	class ICFIntTSecGrpIncEditObj;
  	class ICFIntTSecGrpIncTableObj;
  }
  
  namespace cfsec {
  	class ICFSecTSecGrpMembObj;
  	class ICFSecTSecGrpMembEditObj;
  	class ICFSecTSecGrpMembTableObj;
  }
  
  namespace cfint { 
  	class ICFIntTSecGrpMembObj;
  	class ICFIntTSecGrpMembEditObj;
  	class ICFIntTSecGrpMembTableObj;
  }
  
  namespace cfsec {
  	class ICFSecTenantObj;
  	class ICFSecTenantEditObj;
  	class ICFSecTenantTableObj;
  }
  
  namespace cfint { 
  	class ICFIntTenantObj;
  	class ICFIntTenantEditObj;
  	class ICFIntTenantTableObj;
  	class ICFIntTldObj;
  	class ICFIntTldEditObj;
  	class ICFIntTldTableObj;
  	class ICFIntTopDomainObj;
  	class ICFIntTopDomainEditObj;
  	class ICFIntTopDomainTableObj;
  	class ICFIntTopProjectObj;
  	class ICFIntTopProjectEditObj;
  	class ICFIntTopProjectTableObj;
  	class ICFIntURLProtocolObj;
  	class ICFIntURLProtocolEditObj;
  	class ICFIntURLProtocolTableObj;
  	class ICFIntHostNodeEditObj;
  }
  
  #include <cfsecobj/ICFSecSecUserObj.hpp>
  
  #include <cfsecobj/ICFSecHostNodeObj.hpp>
  
  namespace cfint {
  
  	class ICFIntHostNodeObj
  	: public virtual cflib::ICFLibAnyObj
  	{
  	public:
  		ICFIntHostNodeObj();
  		virtual ~ICFIntHostNodeObj();
  		virtual const std::string& getClassName() const = 0;
  		virtual const classcode_t getClassCode() const = 0;
  		virtual bool implementsClassCode( const classcode_t value ) const = 0;
  		virtual const std::string getGenDefName() = 0;
  		virtual cflib::ICFLibAnyObj* getObjScope() = 0;
  		virtual std::string getObjName() = 0;
  		virtual std::string getObjQualifiedName() = 0;
  		virtual std::string getObjFullName() = 0;
  		virtual cflib::ICFLibAnyObj* getNamedObject( const classcode_t* qualifyingClassCode, const std::string& objName ) = 0;
  		virtual cflib::ICFLibAnyObj* getNamedObject( const std::string& objName ) = 0;
  		virtual cflib::ICFLibAnyObj* getObjQualifier( const classcode_t* qualifyingClassCode ) = 0;
  		virtual std::string toString() = 0;
  		virtual cfsec::ICFSecSecUserObj* getCreatedBy() = 0;
  		virtual const std::chrono::system_clock::time_point& getCreatedAt() = 0;
  		virtual cfsec::ICFSecSecUserObj* getUpdatedBy() = 0;
  		virtual const std::chrono::system_clock::time_point& getUpdatedAt() = 0;
  		virtual int32_t getRequiredRevision() const = 0;
  		virtual cfsec::ICFSecHostNodeObj* realize() = 0;
  
  		virtual cfsec::ICFSecHostNodeObj* read( bool forceRead = false ) = 0;
  
  		virtual cfsec::ICFSecHostNodeEditObj* beginEdit() = 0;
  
  		virtual void endEdit() = 0;
  
  		virtual cfsec::ICFSecHostNodeEditObj* getEdit() = 0;
  
  		virtual cfsec::ICFSecHostNodeTableObj* getHostNodeTable() = 0;
  
  		virtual cfsec::ICFSecSchemaObj* getSchema() = 0;
  
  		virtual cfsec::CFSecHostNodeBuff* getBuff() = 0;
  		virtual void setBuff( cfsec::CFSecHostNodeBuff* value ) = 0;
  
  		inline cfsec::CFSecHostNodeBuff* getHostNodeBuff() {
  			return( static_cast<cfsec::CFSecHostNodeBuff*>( getBuff() ) );
  		};
  
  		inline cfsec::CFSecHostNodeBuff* getHostNodeEditBuff() {
  			return( dynamic_cast<cfsec::CFSecHostNodeBuff*>( getBuff() ) );
  		};
  
  		virtual cfsec::CFSecHostNodePKey* getPKey() = 0;
  		virtual void setPKey( cfsec::CFSecHostNodePKey* value ) = 0;
  
  		virtual bool getIsNew() = 0;
  		virtual void setIsNew( bool value ) = 0;
  
  		virtual const int64_t getRequiredClusterId() = 0;
  		virtual const int64_t* getRequiredClusterIdReference() = 0;
  
  		virtual const int64_t getRequiredHostNodeId() = 0;
  		virtual const int64_t* getRequiredHostNodeIdReference() = 0;
  
  		virtual const std::string& getRequiredDescription() = 0;
  		virtual const std::string* getRequiredDescriptionReference() = 0;
  
  		virtual const std::string& getRequiredHostName() = 0;
  		virtual const std::string* getRequiredHostNameReference() = 0;
  
  		virtual cfsec::ICFSecClusterObj* getRequiredContainerCluster( bool forceRead = false ) = 0;
  
  		virtual std::vector<cfsec::ICFSecServiceObj*> getOptionalComponentsService( bool forceRead = false ) = 0;
  
  		virtual void copyPKeyToBuff() = 0;
  
  		virtual void copyBuffToPKey() = 0;
  
  	};
  }
  