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

#ifndef SMD0SYSTEMMODELING__SMD0MODELELEMENTDELEGATE_HXX
#define SMD0SYSTEMMODELING__SMD0MODELELEMENTDELEGATE_HXX

#include <common/tc_deprecation_macros.h>
#include <Smd0sysmodeling/Smd0ModelElement.hxx>

#include <Smd0sysmodeling/libsmd0sysmodeling_exports.h>

namespace smd0systemmodeling
{
    class Smd0ModelElementDelegate;
}
namespace smd0systemmodeling
{
    class Smd0ModelElementImpl;
}
namespace smd0systemmodeling
{
    class Smd0ModelElement;
}
namespace smd0systemmodeling
{
    class Smd0ModelElementGenImpl;
}

namespace smd0systemmodeling_alias = ::smd0systemmodeling;


class  SMD0SYSMODELING_API smd0systemmodeling_alias::Smd0ModelElementDelegate
{
public:
    //  Method to initialize this Class
    static int initializeClass();

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

    //  Method to create the Smd0ModelElementImpl pointer
    static Smd0ModelElementImpl*  createImpl( Smd0ModelElement&  ifObj );

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



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

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


private:
    friend class  ::smd0systemmodeling::Smd0ModelElementGenImpl;

};

#include <Smd0sysmodeling/libsmd0sysmodeling_undef.h>
#endif  //  SMD0SYSTEMMODELING__SMD0MODELELEMENTDELEGATE_HXX
