//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, Val1CfgValDataRevisionDelegate
    Filename:   Val1CfgValDataRevisionDelegate.hxx
    Module:     Val1cfgvalidation
    @BMIDE autogenerated
==================================================================================================*/

#ifndef VAL1CFGVALIDATION__VAL1CFGVALDATAREVISIONDELEGATE_HXX
#define VAL1CFGVALIDATION__VAL1CFGVALDATAREVISIONDELEGATE_HXX

#include <common/tc_deprecation_macros.h>
#include <Val1cfgvalidation/Val1CfgValDataRevision.hxx>

#include <Val1cfgvalidation/libval1cfgvalidation_exports.h>

namespace val1cfgvalidation
{
    class Val1CfgValDataRevisionDelegate;
}
namespace val1cfgvalidation
{
    class Val1CfgValDataRevisionImpl;
}
namespace val1cfgvalidation
{
    class Val1CfgValDataRevision;
}
namespace val1cfgvalidation
{
    class Val1CfgValDataRevisionGenImpl;
}

namespace val1cfgvalidation_alias = ::val1cfgvalidation;


class  VAL1CFGVALIDATION_API val1cfgvalidation_alias::Val1CfgValDataRevisionDelegate
{
public:
    //  Method to initialize this Class
    static int initializeClass();

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

    //  Method to create the Val1CfgValDataRevisionImpl pointer
    static Val1CfgValDataRevisionImpl*  createImpl( Val1CfgValDataRevision&  ifObj );

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


    ///
    /// This operation will return the associated validation results data (not the result objects) after performing the required validation function of this checker on the given target business objects. This operation must be overridden by a validation agent that extends from this class, the specialized implementation of this operation needs to perform the validation using this checker and the given objects to return resultData. If the checker business logic chooses to also update the result(s) and /or create new validation results, then an empty resultData shuld be returned.
    /// @version Teamcenter 12.1
    /// @param agentRevTag - The tag for agent revision.
    /// @param owningObjectToTargetObjectsVec - The map for owning object to its validation target objects vector.
    /// @param resultData - The returned 'resultData' is a vector of structure for result properties name/value pairs. The result property structures may represent a new validation result that is to be created, or an existing validation result that will be updated.
    /// @return - Status. 0 if successful
    ///
    int  val1PerformValidationBase(const Val1CfgValDataRevision &ifObj,  tag_t &agentRevTag, const std::map< tag_t,std::vector< tag_t > > &owningObjectToTargetObjectsVec, std::vector<  ::Teamcenter::CreateInput* > &resultData );



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

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


private:
    friend class  ::val1cfgvalidation::Val1CfgValDataRevisionGenImpl;

};

#include <Val1cfgvalidation/libval1cfgvalidation_undef.h>
#endif  //  VAL1CFGVALIDATION__VAL1CFGVALDATAREVISIONDELEGATE_HXX
