1 #ifndef OPENMM_PLATFORM_H_
2 #define OPENMM_PLATFORM_H_
38 #include "openmm/internal/windowsExport.h"
70 virtual const std::string& getName()
const = 0;
77 virtual double getSpeed()
const = 0;
82 virtual bool supportsDoublePrecision()
const = 0;
86 const std::vector<std::string>& getPropertyNames()
const;
94 virtual const std::string& getPropertyValue(
const Context& context,
const std::string& property)
const;
102 virtual void setPropertyValue(
Context& context,
const std::string& property,
const std::string& value)
const;
110 const std::string& getPropertyDefaultValue(
const std::string& property)
const;
118 void setPropertyDefaultValue(
const std::string& property,
const std::string& value);
126 virtual void contextCreated(
ContextImpl& context,
const std::map<std::string, std::string>& properties)
const;
131 virtual void contextDestroyed(
ContextImpl& context)
const;
140 void registerKernelFactory(
const std::string& name,
KernelFactory* factory);
148 bool supportsKernels(
const std::vector<std::string>& kernelNames)
const ;
165 static void registerPlatform(
Platform* platform);
169 static int getNumPlatforms();
173 static Platform& getPlatform(
int index);
178 static Platform& getPlatformByName(
const std::string& name);
186 static Platform& findPlatform(
const std::vector<std::string>& kernelNames);
199 static void loadPluginLibrary(
const std::string& file);
209 static std::vector<std::string> loadPluginsFromDirectory(
const std::string& directory);
217 static const std::string& getDefaultPluginsDirectory();
221 static const std::string& getOpenMMVersion();
233 std::map<std::string, KernelFactory*> kernelFactories;
234 std::map<std::string, std::string> defaultProperties;
235 static std::vector<Platform*>& getPlatforms();