
//**************************************************************************/
// Copyright (c) 2008 Autodesk, Inc.
// All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk license
// agreement provided at the time of installation or download, or which
// otherwise accompanies this software in either electronic or hard copy form.
//
//**************************************************************************/
// DESCRIPTION:
// CREATED: October 2008
//**************************************************************************/

#ifndef __MUDBOX_DLLINTERFACE_H__
#define __MUDBOX_DLLINTERFACE_H__

#if defined(WIN32) || defined(WIN64)
#define MUDBOX_DLLEXPORT   __declspec(dllexport)
#define MUDBOX_DLLIMPORT   __declspec(dllimport)
#define MUDBOX_DLLINTERNAL
#elif defined(__GNUC__)
#define MUDBOX_DLLEXPORT   __attribute__ ((visibility("default")))
#define MUDBOX_DLLIMPORT   __attribute__ ((visibility("default")))
#define MUDBOX_DLLINTERNAL __attribute__ ((visibility("hidden")))
#else
#define MUDBOX_DLLEXPORT
#define MUDBOX_DLLIMPORT
#define MUDBOX_DLLINTERNAL
#endif

#if defined(COMPILING_MUDBOX_DLL)
#define MBDLL_DECL MUDBOX_DLLEXPORT
#else
#define MBDLL_DECL MUDBOX_DLLIMPORT
#endif

// On Windows, Template Declaration requires no special argument to be passed 
// On Unixes, however, we need to declare them as exported because, internally,
// it is using the typeinfo pointers instead of class names to perform dynamic_cast.
#if defined(WIN32)
#define MBDLL_TEMPLATE_DECL
#else
#define MBDLL_TEMPLATE_DECL MBDLL_DECL
#endif

#endif
