//Copyright 2020 Siemens Digital Industries Software
//==================================================
//Copyright $2020.
//Siemens Product Lifecycle Management Software Inc.
//All Rights Reserved.
//==================================================
//Copyright 2020 Siemens Digital Industries Software

/*==================================================================================================
File description:
    This file contains the declaration for the Business Object, Rlz0M2MSubsetRealizationDelegate
    Filename:   Rlz0M2MSubsetRealizationDelegate.hxx
    Module:     rlz0realization
    @BMIDE autogenerated
==================================================================================================*/

#ifndef TEAMCENTER__REALIZATION__RLZ0M2MSUBSETREALIZATIONDELEGATE_HXX
#define TEAMCENTER__REALIZATION__RLZ0M2MSUBSETREALIZATIONDELEGATE_HXX

#include <common/tc_deprecation_macros.h>
#include <rlz0realization/Rlz0M2MSubsetRealization.hxx>

#include <rlz0realization/librlz0realization_exports.h>

namespace Teamcenter
{
    namespace Realization
    {
        class Rlz0M2MSubsetRealizationDelegate;
    }
}
namespace Teamcenter
{
    namespace Realization
    {
        class Rlz0M2MSubsetRealizationImpl;
    }
}
namespace Teamcenter
{
    namespace Realization
    {
        class Rlz0M2MSubsetRealization;
    }
}
namespace Teamcenter
{
    namespace Realization
    {
        class Rlz0M2MSubsetRealizationGenImpl;
    }
}

namespace Teamcenter_alias = ::Teamcenter;


class  RLZ0REALIZATION_API Teamcenter_alias::Realization::Rlz0M2MSubsetRealizationDelegate
{
public:
    //  Method to initialize this Class
    static int initializeClass();

    //  Method to get the Rlz0M2MSubsetRealizationDelegate instance
    static Rlz0M2MSubsetRealizationDelegate&  getInstance();

    //  Method to create the Rlz0M2MSubsetRealizationImpl pointer
    static Rlz0M2MSubsetRealizationImpl*  createImpl( Rlz0M2MSubsetRealization&  ifObj );

    //  Method to delete the Rlz0M2MSubsetRealizationImpl pointer
    static void deleteImpl( Rlz0M2MSubsetRealizationImpl*  impl );


    ///
    /// Getter for a Tag Property
    /// @version Teamcenter 11.1
    /// @param value - Parameter value
    /// @param isNull - Returns true if the Parameter value is null
    /// @return - Status. 0 if successful
    ///
    int  getRlz0RealizationContainerBase(const Rlz0M2MSubsetRealization &ifObj,  tag_t &value, bool &isNull ) const;


    ///
    /// Getter for a Tag Property
    /// @version Teamcenter 11.1
    /// @param value - Parameter value
    /// @param isNull - Returns true if the Parameter value is null
    /// @return - Status. 0 if successful
    ///
    int  getRlz0SearchCriteriaBase(const Rlz0M2MSubsetRealization &ifObj,  tag_t &value, bool &isNull ) const;


    ///
    /// Setter for a Tag Property
    /// @version Teamcenter 11.1
    /// @param value - Value to be set for the parameter
    /// @param isNull - If true, set the parameter value to null
    /// @return - Status. 0 if successful
    ///
    int  setRlz0RealizationContainerBase(Rlz0M2MSubsetRealization &ifObj,  const tag_t &value, bool isNull );


    ///
    /// Setter for a Tag Property
    /// @version Teamcenter 11.1
    /// @param value - Value to be set for the parameter
    /// @param isNull - If true, set the parameter value to null
    /// @return - Status. 0 if successful
    ///
    int  setRlz0SearchCriteriaBase(Rlz0M2MSubsetRealization &ifObj,  const tag_t &value, bool isNull );


    ///
    /// This operation is to perform action comparisons on custom model to model realized or updated data. This operation also allows to attach an extension as pre and post action where users can write their own ITK implementation.
    /// @version Teamcenter 11.1
    /// @param sourceObjectsList - List of objects from source model.
    /// @param targetObjectsList - List of objects from target model.
    /// @return - Error code will be thrown if the operation is not completed successfully, on success will return zero.
    ///
    int  rlz0M2MRealizationExtnOperationBase(const Rlz0M2MSubsetRealization &ifObj,  const std::vector< tag_t > *sourceObjectsList, std::vector< tag_t > *targetObjectsList );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.2.2
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - This operation returns ITK_ok on success. Otherwise, it will return specific error code.
    ///
    int  fnd0SaveBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );



protected:
    //  Pointer to the instance
    static Rlz0M2MSubsetRealizationDelegate*  m_pInstance;

    Rlz0M2MSubsetRealizationDelegate();
    virtual ~Rlz0M2MSubsetRealizationDelegate();
    static void setInstance( Rlz0M2MSubsetRealizationDelegate*  instance );


private:
    friend class  ::Teamcenter::Realization::Rlz0M2MSubsetRealizationGenImpl;

};

#include <rlz0realization/librlz0realization_undef.h>
#endif  //  TEAMCENTER__REALIZATION__RLZ0M2MSUBSETREALIZATIONDELEGATE_HXX
