Files
lammps/src/lmppython.h
2022-10-24 11:08:26 -04:00

58 lines
1.7 KiB
C++

/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifndef LMP_PYTHON_H
#define LMP_PYTHON_H
#include "pointers.h"
namespace LAMMPS_NS {
class PythonInterface {
public:
virtual ~PythonInterface() = default;
virtual void command(int, char **) = 0;
virtual void invoke_function(int, char *) = 0;
virtual int find(const char *) = 0;
virtual int variable_match(const char *, const char *, int) = 0;
virtual char *long_string(int ifunc) = 0;
virtual int execute_string(char *) = 0;
virtual int execute_file(char *) = 0;
virtual bool has_minimum_version(int major, int minor) = 0;
};
class Python : protected Pointers {
public:
Python(class LAMMPS *);
~Python() override;
void command(int, char **);
void invoke_function(int, char *);
int find(const char *);
int variable_match(const char *, const char *, int);
char *long_string(int ifunc);
int execute_string(char *);
int execute_file(char *);
bool has_minimum_version(int major, int minor);
bool is_enabled() const;
void init();
static void finalize();
private:
PythonInterface *impl;
};
} // namespace LAMMPS_NS
#endif