Commit a1752463 authored by Peter Eastman's avatar Peter Eastman
Browse files

Fixed errors and warnings under Windows

parent ae2a11aa
......@@ -11,11 +11,6 @@
// other visualization tool to produce an animation of the resulting trajectory.
// -----------------------------------------------------------------------------
// Suppress irrelevant warning from Microsoft's compiler.
#ifdef _MSC_VER
#pragma warning(disable:4251) // no dll interface for some classes
#endif
#include "OpenMM.h"
#include <cstdio>
......
......@@ -202,7 +202,6 @@ int main() {
// Suppress irrelevant warnings from Microsoft's compiler.
#ifdef _MSC_VER
#pragma warning(disable:4996) // sprintf is unsafe
#pragma warning(disable:4251) // no dll interface for some classes
#endif
#include "OpenMM.h"
......
......@@ -160,7 +160,6 @@ int main() {
// Suppress irrelevant warnings from Microsoft's compiler.
#ifdef _MSC_VER
#pragma warning(disable:4996) // sprintf is unsafe
#pragma warning(disable:4251) // no dll interface for some classes
#endif
#include "OpenMM.h"
......
......@@ -170,7 +170,6 @@ int main() {
// Suppress irrelevant warnings from Microsoft's compiler.
#ifdef _MSC_VER
#pragma warning(disable:4996) // sprintf is unsafe
#pragma warning(disable:4251) // no dll interface for some classes
#endif
#include "OpenMM.h"
......
......@@ -42,7 +42,7 @@ ExpressionProgram::ExpressionProgram() : maxArgs(0), stackSize(0) {
ExpressionProgram::ExpressionProgram(const ParsedExpression& expression) : maxArgs(0), stackSize(0) {
buildProgram(expression.getRootNode());
int currentStackSize = 0;
for (int i = 0; i < operations.size(); i++) {
for (int i = 0; i < (int) operations.size(); i++) {
int args = operations[i]->getNumArguments();
if (args > maxArgs)
maxArgs = args;
......@@ -53,7 +53,7 @@ ExpressionProgram::ExpressionProgram(const ParsedExpression& expression) : maxAr
}
ExpressionProgram::~ExpressionProgram() {
for (int i = 0; i < operations.size(); i++)
for (int i = 0; i < (int) operations.size(); i++)
delete operations[i];
}
......@@ -65,7 +65,7 @@ ExpressionProgram& ExpressionProgram::operator=(const ExpressionProgram& program
maxArgs = program.maxArgs;
stackSize = program.stackSize;
operations.resize(program.operations.size());
for (int i = 0; i < operations.size(); i++)
for (int i = 0; i < (int) operations.size(); i++)
operations[i] = program.operations[i]->clone();
return *this;
}
......@@ -93,10 +93,10 @@ double ExpressionProgram::evaluate() const {
}
double ExpressionProgram::evaluate(const std::map<std::string, double>& variables) const {
vector<double> args(maxArgs);
vector<double> args(max(maxArgs, 1));
vector<double> stack(stackSize);
int stackPointer = 0;
for (int i = 0; i < operations.size(); i++) {
for (int i = 0; i < (int) operations.size(); i++) {
int numArgs = operations[i]->getNumArguments();
for (int j = 0; j < numArgs; j++)
args[j] = stack[--stackPointer];
......
......@@ -54,8 +54,9 @@ double ParsedExpression::evaluate(const std::map<std::string, double>& variables
}
double ParsedExpression::evaluate(const ExpressionTreeNode& node, const map<string, double>& variables) {
vector<double> args(node.getChildren().size());
for (int i = 0; i < args.size(); i++)
int numArgs = node.getChildren().size();
vector<double> args(max(numArgs, 1));
for (int i = 0; i < numArgs; i++)
args[i] = evaluate(node.getChildren()[i], variables);
return node.getOperation().evaluate(&args[0], variables);
}
......@@ -84,19 +85,19 @@ ExpressionTreeNode ParsedExpression::preevaluateVariables(const ExpressionTreeNo
return ExpressionTreeNode(new Operation::Constant(iter->second));
}
vector<ExpressionTreeNode> children(node.getChildren().size());
for (int i = 0; i < children.size(); i++)
for (int i = 0; i < (int) children.size(); i++)
children[i] = preevaluateVariables(node.getChildren()[i], variables);
return ExpressionTreeNode(node.getOperation().clone(), children);
}
ExpressionTreeNode ParsedExpression::precalculateConstantSubexpressions(const ExpressionTreeNode& node) {
vector<ExpressionTreeNode> children(node.getChildren().size());
for (int i = 0; i < children.size(); i++)
for (int i = 0; i < (int) children.size(); i++)
children[i] = precalculateConstantSubexpressions(node.getChildren()[i]);
ExpressionTreeNode result = ExpressionTreeNode(node.getOperation().clone(), children);
if (node.getOperation().getId() == Operation::VARIABLE)
return result;
for (int i = 0; i < children.size(); i++)
for (int i = 0; i < (int) children.size(); i++)
if (children[i].getOperation().getId() != Operation::CONSTANT)
return result;
return ExpressionTreeNode(new Operation::Constant(evaluate(result, map<string, double>())));
......@@ -104,7 +105,7 @@ ExpressionTreeNode ParsedExpression::precalculateConstantSubexpressions(const Ex
ExpressionTreeNode ParsedExpression::substituteSimplerExpression(const ExpressionTreeNode& node) {
vector<ExpressionTreeNode> children(node.getChildren().size());
for (int i = 0; i < children.size(); i++)
for (int i = 0; i < (int) children.size(); i++)
children[i] = substituteSimplerExpression(node.getChildren()[i]);
switch (node.getOperation().getId()) {
case Operation::ADD:
......@@ -212,7 +213,7 @@ ParsedExpression ParsedExpression::differentiate(const std::string& variable) co
ExpressionTreeNode ParsedExpression::differentiate(const ExpressionTreeNode& node, const std::string& variable) {
vector<ExpressionTreeNode> childDerivs(node.getChildren().size());
for (int i = 0; i < childDerivs.size(); i++)
for (int i = 0; i < (int) childDerivs.size(); i++)
childDerivs[i] = differentiate(node.getChildren()[i], variable);
return node.getOperation().differentiate(node.getChildren(),childDerivs, variable);
}
......@@ -231,7 +232,7 @@ ostream& Lepton::operator<<(ostream& out, const ExpressionTreeNode& node) {
out << node.getOperation().getName();
if (node.getChildren().size() > 0) {
out << "(";
for (int i = 0; i < node.getChildren().size(); i++) {
for (int i = 0; i < (int) node.getChildren().size(); i++) {
if (i > 0)
out << ", ";
out << node.getChildren()[i];
......
......@@ -76,7 +76,7 @@ ParseToken Parser::getNextToken(string expression, int start) {
if (c == ' ') {
// White space
for (int pos = start+1; pos < expression.size(); pos++) {
for (int pos = start+1; pos < (int) expression.size(); pos++) {
if (expression[pos] != ' ')
return ParseToken(expression.substr(start, pos-start), ParseToken::Whitespace);
}
......@@ -88,7 +88,7 @@ ParseToken Parser::getNextToken(string expression, int start) {
bool foundDecimal = (c == '.');
bool foundExp = false;
int pos;
for (pos = start+1; pos < expression.size(); pos++) {
for (pos = start+1; pos < (int) expression.size(); pos++) {
c = expression[pos];
if (Digits.find(c) != string::npos)
continue;
......@@ -98,7 +98,7 @@ ParseToken Parser::getNextToken(string expression, int start) {
}
if ((c == 'e' || c == 'E') && !foundExp) {
foundExp = true;
if (pos < expression.size()-1 && expression[pos+1] == '-')
if (pos < (int) expression.size()-1 && expression[pos+1] == '-')
pos++;
continue;
}
......@@ -109,7 +109,7 @@ ParseToken Parser::getNextToken(string expression, int start) {
// A variable, function, or left parenthesis
for (int pos = start; pos < expression.size(); pos++) {
for (int pos = start; pos < (int) expression.size(); pos++) {
c = expression[pos];
if (c == '(')
return ParseToken(expression.substr(start, pos-start+1), ParseToken::Function);
......@@ -122,7 +122,7 @@ ParseToken Parser::getNextToken(string expression, int start) {
vector<ParseToken> Parser::tokenize(string expression) {
vector<ParseToken> tokens;
int pos = 0;
while (pos < expression.size()) {
while (pos < (int) expression.size()) {
ParseToken token = getNextToken(expression, pos);
if (token.getType() != ParseToken::Whitespace)
tokens.push_back(token);
......@@ -176,7 +176,7 @@ ExpressionTreeNode Parser::parsePrecedence(const vector<ParseToken>& tokens, int
bool moreArgs;
do {
args.push_back(parsePrecedence(tokens, pos, customFunctions, 0));
moreArgs = (pos < tokens.size() && tokens[pos].getType() == ParseToken::Comma);
moreArgs = (pos < (int) tokens.size() && tokens[pos].getType() == ParseToken::Comma);
if (moreArgs)
pos++;
} while (moreArgs);
......@@ -195,7 +195,7 @@ ExpressionTreeNode Parser::parsePrecedence(const vector<ParseToken>& tokens, int
// Now deal with the next binary operator.
while (pos < tokens.size() && tokens[pos].getType() == ParseToken::Operator) {
while (pos < (int) tokens.size() && tokens[pos].getType() == ParseToken::Operator) {
token = tokens[pos];
int op = Operators.find(token.getText());
int opPrecedence = Precedence[op];
......
......@@ -248,24 +248,10 @@ protected:
const ContextImpl& getContextImpl(const Context& context) const;
std::vector<std::string> platformProperties;
private:
// Retarded visual studio compiler complains about being unable to
// export private stl class members.
// This stanza explains that it should temporarily shut up.
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable:4251)
#endif
std::map<std::string, KernelFactory*> kernelFactories;
std::map<std::string, StreamFactory*> streamFactories;
std::map<std::string, std::string> defaultProperties;
static std::vector<Platform*>& getPlatforms();
#if defined(_MSC_VER)
#pragma warning(pop)
#endif
};
} // namespace OpenMM
......
......@@ -25,10 +25,10 @@
#ifdef _MSC_VER
// We don't want to hear about how sprintf is "unsafe".
#pragma warning(disable:4996)
#if defined(OPENMM_BUILDING_SHARED_LIBRARY)
#define OPENMM_EXPORT __declspec(dllexport)
// Keep MS VC++ quiet about lack of dll export of private members.
#pragma warning(disable:4251)
#if defined(OPENMM_BUILDING_SHARED_LIBRARY)
#define OPENMM_EXPORT __declspec(dllexport)
#elif defined(OPENMM_BUILDING_STATIC_LIBRARY) || defined(OPENMM_USE_STATIC_LIBRARIES)
#define OPENMM_EXPORT
#else
......
......@@ -565,7 +565,7 @@ void ReferenceCalcCustomNonbondedForceKernel::executeForces(ContextImpl& context
if (periodic)
ixn.setPeriodic(periodicBoxSize);
map<string, double> globalParameters;
for (int i = 0; i < globalParameterNames.size(); i++)
for (int i = 0; i < (int) globalParameterNames.size(); i++)
globalParameters[globalParameterNames[i]] = context.getParameter(globalParameterNames[i]);
ixn.calculatePairIxn(numParticles, posData, particleParamArray, exclusionArray, 0, globalParameters, forceData, 0, 0);
ixn.calculateExceptionIxn(numExceptions, exceptionIndexArray, posData, exceptionParamArray, globalParameters, forceData, 0, 0);
......@@ -584,7 +584,7 @@ double ReferenceCalcCustomNonbondedForceKernel::executeEnergy(ContextImpl& conte
if (periodic)
ixn.setPeriodic(periodicBoxSize);
map<string, double> globalParameters;
for (int i = 0; i < globalParameterNames.size(); i++)
for (int i = 0; i < (int) globalParameterNames.size(); i++)
globalParameters[globalParameterNames[i]] = context.getParameter(globalParameterNames[i]);
ixn.calculatePairIxn(numParticles, posData, particleParamArray, exclusionArray, 0, globalParameters, forceData, 0, &energy);
ixn.calculateExceptionIxn(numExceptions, exceptionIndexArray, posData, exceptionParamArray, globalParameters, forceData, 0, &energy);
......
......@@ -53,7 +53,7 @@ ReferenceCustomNonbondedIxn::ReferenceCustomNonbondedIxn(const Lepton::Expressio
// ---------------------------------------------------------------------------------------
for (int i = 0; i < paramNames.size(); i++) {
for (int i = 0; i < (int) paramNames.size(); i++) {
for (int j = 1; j < 3; j++) {
stringstream name;
name << paramNames[i] << j;
......@@ -159,11 +159,11 @@ int ReferenceCustomNonbondedIxn::calculatePairIxn( int numberOfAtoms, RealOpenMM
// Apply the combining rules to compute the force field parameters.
for (int j = 0; j < combiningRules.size(); j++) {
for (int j = 0; j < (int) combiningRules.size(); j++) {
variablesForParams[particleParamNames[j*2]] = atomParameters[pair.first][j];
variablesForParams[particleParamNames[j*2+1]] = atomParameters[pair.second][j];
}
for (int j = 0; j < combiningRules.size(); j++)
for (int j = 0; j < (int) combiningRules.size(); j++)
variablesForForce[paramNames[j]] = combiningRules[j].evaluate(variablesForParams);
calculateOneIxn(pair.first, pair.second, atomCoordinates, variablesForForce, forces, energyByAtom, totalEnergy);
}
......@@ -192,11 +192,11 @@ int ReferenceCustomNonbondedIxn::calculatePairIxn( int numberOfAtoms, RealOpenMM
// Apply the combining rules to compute the force field parameters.
for (int j = 0; j < combiningRules.size(); j++) {
for (int j = 0; j < (int) combiningRules.size(); j++) {
variablesForParams[particleParamNames[j*2]] = atomParameters[ii][j];
variablesForParams[particleParamNames[j*2+1]] = atomParameters[jj][j];
}
for (int j = 0; j < combiningRules.size(); j++)
for (int j = 0; j < (int) combiningRules.size(); j++)
variablesForForce[paramNames[j]] = combiningRules[j].evaluate(variablesForParams);
calculateOneIxn(ii, jj, atomCoordinates, variablesForForce, forces, energyByAtom, totalEnergy);
}
......@@ -229,7 +229,7 @@ void ReferenceCustomNonbondedIxn::calculateExceptionIxn( int numberOfExceptions,
map<string, double> variables = globalParameters;
for (int i = 0; i < numberOfExceptions; i++) {
for (int j = 0; j < combiningRules.size(); j++)
for (int j = 0; j < (int) combiningRules.size(); j++)
variables[paramNames[j]] = parameters[i][j];
calculateOneIxn(atomIndices[i][0], atomIndices[i][1], atomCoordinates, variables, forces, energyByAtom, totalEnergy);
}
......@@ -282,7 +282,7 @@ void ReferenceCustomNonbondedIxn::calculateOneIxn( int ii, int jj, RealOpenMM**
// accumulate forces
variables["r"] = deltaR[ReferenceForce::RIndex];
RealOpenMM dEdR = forceExpression.evaluate(variables)/(deltaR[ReferenceForce::RIndex]);
RealOpenMM dEdR = (RealOpenMM) (forceExpression.evaluate(variables)/(deltaR[ReferenceForce::RIndex]));
for( int kk = 0; kk < 3; kk++ ){
RealOpenMM force = -dEdR*deltaR[kk];
forces[ii][kk] += force;
......@@ -292,7 +292,7 @@ void ReferenceCustomNonbondedIxn::calculateOneIxn( int ii, int jj, RealOpenMM**
// accumulate energies
if( totalEnergy || energyByAtom ) {
RealOpenMM energy = energyExpression.evaluate(variables);
RealOpenMM energy = (RealOpenMM) energyExpression.evaluate(variables);
if( totalEnergy )
*totalEnergy += energy;
if( energyByAtom ){
......
......@@ -445,7 +445,7 @@ int ReferenceLJCoulombIxn::calculateEwaldIxn( int numberOfAtoms, RealOpenMM** at
// accumulate energies
realSpaceEwaldEnergy = atomParameters[ii][QIndex]*atomParameters[jj][QIndex]*inverseR*erfc(alphaR);
realSpaceEwaldEnergy = (RealOpenMM) (atomParameters[ii][QIndex]*atomParameters[jj][QIndex]*inverseR*erfc(alphaR));
vdwEnergy = eps*(sig6-one)*sig6;
if( totalEnergy )
......@@ -484,7 +484,7 @@ int ReferenceLJCoulombIxn::calculateEwaldIxn( int numberOfAtoms, RealOpenMM** at
// accumulate energies
realSpaceEwaldEnergy = atomParameters[ii][QIndex]*atomParameters[jj][QIndex]*inverseR*erf(alphaR);
realSpaceEwaldEnergy = (RealOpenMM) (atomParameters[ii][QIndex]*atomParameters[jj][QIndex]*inverseR*erf(alphaR));
if( totalEnergy )
*totalEnergy -= realSpaceEwaldEnergy;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment