#ifndef H_coral_LANG_SMD01_H
#define H_coral_LANG_SMD01_H
// This file is part of the Coral project.
// Please read the copyright notice in the LICENSE file.

#include <coral/core/CorePrimitives.h>
#include <coral/core/ElementDefinition.h>
#include <coral/core/PrimitiveProperties.h>
#include <coral/core/util/simple_lang_creator.h>

NAMESPACE_BEGIN(coral);
NAMESPACE_BEGIN(SMD01);

#if defined(_WIN32) || defined(__WIN32__) || defined(__MINGW32__)
# ifdef COMPILING_SMD01
#  define EXPORT_MM __declspec(dllexport)
# else
#  define EXPORT_MM __declspec(dllimport)
# endif
#else
# define EXPORT_MM
#endif

extern EXPORT_MM coral::Language* language;

#ifndef SWIG

extern EXPORT_MM coral::ElementDefinition* ref_counted;
extern EXPORT_MM coral::ElementDefinition* Named;
extern EXPORT_MM coral::ElementDefinition* Property;
extern EXPORT_MM coral::ElementDefinition* AbstractElementDefinition;
extern EXPORT_MM coral::ElementDefinition* Operation;
extern EXPORT_MM coral::ElementDefinition* Package;
extern EXPORT_MM coral::ElementDefinition* DatatypeDefinition;
extern EXPORT_MM coral::ElementDefinition* EnumerationDefinition;
extern EXPORT_MM coral::ElementDefinition* ElementDefinition;
extern EXPORT_MM coral::ElementDefinition* Language;
extern EXPORT_MM coral::EnumerationDefinition* PropertyType;

extern bool EXPORT_MM init_language() throw ();
#endif

NAMESPACE_END();
NAMESPACE_END();

#endif

