text: /*
   * megamol101.cpp
   * Copyright (C) 2009-2015 by MegaMol Team
   * Alle Rechte vorbehalten.
   */
  
  #include "stdafx.h"
  #include "megamol101/megamol101.h"
  
  #include "mmcore/api/MegaMolCore.std.h"
  #include "mmcore/utility/plugins/Plugin200Instance.h"
  #include "mmcore/versioninfo.h"
  #include "vislib/vislibversion.h"
  
  #include "ASCIISphereLoader.h"
  #include "SimplestSphereRenderer.h"
  #include "SimplestSphereRenderer_2.h"
  #include "SphereColoringModule.h"
  #include "CallSpheres.h"
  
  
  /* anonymous namespace hides this type from any other object files */
  namespace {
  /** Implementing the instance class of this plugin */
  class plugin_instance : public ::megamol::core::utility::plugins::Plugin200Instance {
  public:
      /** ctor */
      plugin_instance(void)
          : ::megamol::core::utility::plugins::Plugin200Instance(
  
                /* machine-readable plugin assembly name */
                "megamol101", // TODO: Change this!
  
                /* human-readable plugin description */
                "Describing megamol101 (TODO: Change this!)"){
  
                // here we could perform addition initialization
            };
      /** Dtor */
      virtual ~plugin_instance(void) {
          // here we could perform addition de-initialization
      }
      /** Registers modules and calls */
      virtual void registerClasses(void) {
  
          // register modules here:
  
          //
          // TODO: Register your plugin's modules here
          // like:
          //   this->module_descriptions.RegisterAutoDescription<megamol::megamol101::MyModule1>();
          //   this->module_descriptions.RegisterAutoDescription<megamol::megamol101::MyModule2>();
          //   ...
          //
          this->module_descriptions.RegisterAutoDescription<megamol::megamol101::ASCIISphereLoader>();
          this->module_descriptions.RegisterAutoDescription<megamol::megamol101::SimplestSphereRenderer>();
          this->module_descriptions.RegisterAutoDescription<megamol::megamol101::SimplestSphereRenderer_2>();
          this->module_descriptions.RegisterAutoDescription<megamol::megamol101::SphereColoringModule>();
  
          // register calls here:
  
          //
          // TODO: Register your plugin's calls here
          // like:
          //   this->call_descriptions.RegisterAutoDescription<megamol::megamol101::MyCall1>();
          //   this->call_descriptions.RegisterAutoDescription<megamol::megamol101::MyCall2>();
          //   ...
          //
          this->call_descriptions.RegisterAutoDescription<megamol::megamol101::CallSpheres>();
      }
      MEGAMOLCORE_PLUGIN200UTIL_IMPLEMENT_plugininstance_connectStatics
  };
  } // namespace
  
  
  /*
   * mmplgPluginAPIVersion
   */
  MEGAMOL101_API int mmplgPluginAPIVersion(void){MEGAMOLCORE_PLUGIN200UTIL_IMPLEMENT_mmplgPluginAPIVersion}
  
  
  /*
   * mmplgGetPluginCompatibilityInfo
   */
  MEGAMOL101_API ::megamol::core::utility::plugins::PluginCompatibilityInfo* mmplgGetPluginCompatibilityInfo(
      ::megamol::core::utility::plugins::ErrorCallback onError) {
      // compatibility information with core and vislib
      using ::megamol::core::utility::plugins::LibraryVersionInfo;
      using ::megamol::core::utility::plugins::PluginCompatibilityInfo;
  
      PluginCompatibilityInfo* ci = new PluginCompatibilityInfo;
      ci->libs_cnt = 2;
      ci->libs = new LibraryVersionInfo[2];
  
      SetLibraryVersionInfo(
          ci->libs[0], "MegaMolCore", MEGAMOL_CORE_MAJOR_VER, MEGAMOL_CORE_MINOR_VER, MEGAMOL_CORE_COMP_REV,
          0
  #if defined(DEBUG) || defined(_DEBUG)
              | MEGAMOLCORE_PLUGIN200UTIL_FLAGS_DEBUG_BUILD
  #endif
  #if defined(MEGAMOL_CORE_DIRTY) && (MEGAMOL_CORE_DIRTY != 0)
              | MEGAMOLCORE_PLUGIN200UTIL_FLAGS_DIRTY_BUILD
  #endif
      );
  
      SetLibraryVersionInfo(ci->libs[1], "vislib", vislib::VISLIB_VERSION_MAJOR, vislib::VISLIB_VERSION_MINOR,
          vislib::VISLIB_VERSION_REVISION,
          0
  #if defined(DEBUG) || defined(_DEBUG)
              | MEGAMOLCORE_PLUGIN200UTIL_FLAGS_DEBUG_BUILD
  #endif
  #if defined(VISLIB_DIRTY_BUILD) && (VISLIB_DIRTY_BUILD != 0)
              | MEGAMOLCORE_PLUGIN200UTIL_FLAGS_DIRTY_BUILD
  #endif
      );
      //
      // If you want to test additional compatibilties, add the corresponding versions here
      //
  
      return ci;
  }
  
  
  /*
   * mmplgReleasePluginCompatibilityInfo
   */
  MEGAMOL101_API
  void mmplgReleasePluginCompatibilityInfo(::megamol::core::utility::plugins::PluginCompatibilityInfo* ci){
      // release compatiblity data on the correct heap
      MEGAMOLCORE_PLUGIN200UTIL_IMPLEMENT_mmplgReleasePluginCompatibilityInfo(ci)}
  
  
  /*
   * mmplgGetPluginInstance
   */
  MEGAMOL101_API ::megamol::core::utility::plugins::AbstractPluginInstance* mmplgGetPluginInstance(
      ::megamol::core::utility::plugins::ErrorCallback onError){
      MEGAMOLCORE_PLUGIN200UTIL_IMPLEMENT_mmplgGetPluginInstance(plugin_instance, onError)}
  
  
  /*
   * mmplgReleasePluginInstance
   */
  MEGAMOL101_API void mmplgReleasePluginInstance(::megamol::core::utility::plugins::AbstractPluginInstance* pi) {
      MEGAMOLCORE_PLUGIN200UTIL_IMPLEMENT_mmplgReleasePluginInstance(pi)
  }
  