/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield 
 *
 * This library is open source and may be redistributed and/or modified under  
 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or 
 * (at your option) any later version.  The full license is in LICENSE file
 * included with this distribution, and on the openscenegraph.org website.
 * 
 * This library 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 
 * OpenSceneGraph Public License for more details.
*/
//osgIntrospection - Copyright (C) 2005 Marco Jez

#ifndef OSGINTROSPECTION_EXPORTHDR
#define OSGINTROSPECTION_EXPORTHDR 1

#include <osg/Config>

#if defined(_MSC_VER) && defined(OSG_DISABLE_MSVC_WARNINGS)
    #pragma warning( disable : 4251 )
    #pragma warning( disable : 4121 )
    #pragma warning( disable : 4180 )
    #pragma warning( disable : 4702 )
#endif

#if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || defined( __BCPLUSPLUS__)  || defined( __MWERKS__)
    #  if defined( OSG_LIBRARY_STATIC )
    #    define OSGINTROSPECTION_EXPORT
    #  elif defined( OSGINTROSPECTION_LIBRARY )
    #    define OSGINTROSPECTION_EXPORT   __declspec(dllexport)
    #  else
    #    define OSGINTROSPECTION_EXPORT   __declspec(dllimport)
    #  endif
#else
    #  define OSGINTROSPECTION_EXPORT
#endif  

// set up define for whether member templates are supported by VisualStudio compilers.
#ifdef _MSC_VER
# if (_MSC_VER < 1300)
#  error Your compiler doesn't support member templates. The reflection framework can't be compiled.
# endif
#endif

/**

\namespace osgIntrospection

The osgIntrospection library provides the an introspection/reflection framework for non intrusive
run-time querying and calling of class properties and methods.

osgIntrospection is ideal for providing non native language binding to the OpenSceneGraph, convenient means
for editing properties in a generic way, such as required in scene graph editors,
and also facilitates the automatic serealization of objects.

osgIntrospection can be used to provide introspection support to 3rd Party libraries without the need to
modify them to add this support, the wrappers providing the actual binding can be
automatically generated by parsing header files via gen_wrapper utility.  All the
core OpenSceneGraph libraries have pre built wrappers available for you use.
*/

/**

\namespace Properties

Properties is a set of helper definations used by the osgIntrospectoin wrappers.

*/

#endif
