From 60089ffc76da688d8f75a11349a13340f556e513 Mon Sep 17 00:00:00 2001 From: Alexey Shvetsov Date: Thu, 14 Jul 2016 10:00:04 +0300 Subject: [PATCH] Uncrustify all Signed-off-by: Alexey Shvetsov --- src/sip/commandline/cmdlineoptionsmodule.sip | 86 ++--- src/sip/commandline/cmdlineparser.sip | 18 +- src/sip/definitions.sip | 89 ++--- src/sip/options/abstractoption.sip | 38 +-- src/sip/options/basicoptions.sip | 56 +-- src/sip/options/filenameoption.sip | 42 +-- src/sip/options/ioptionsbehavior.sip | 32 +- src/sip/options/ioptionscontainer.sip | 22 +- src/sip/options/options.sip | 42 +-- src/sip/options/pyoptionsholder.sip | 318 ++++++++++-------- src/sip/options/selectionoption.sip | 28 +- src/sip/selection/Selection.sip | 1 - src/sip/selection/selection.sip | 140 ++++---- src/sip/string.sip | 20 +- src/sip/topology/atoms.sip | 106 +++--- src/sip/topology/pstringlistwrapper.sip | 27 +- src/sip/topology/topology.sip | 8 +- .../trajectoryanalysis/TrajectoryAnalysis.sip | 2 +- src/sip/trajectoryanalysis/analysisdata.sip | 96 +++--- src/sip/trajectoryanalysis/analysismodule.sip | 162 ++++----- .../trajectoryanalysis/analysissettings.sip | 84 ++--- src/sip/trajectoryanalysis/cmdlinerunner.sip | 16 +- src/sip/trajectoryanalysis/runnercommon.sip | 68 ++-- .../gromacs/analysisdata/paralleloptions.h | 6 +- .../gromacs/trajectoryanalysis/runnercommon.h | 32 +- 25 files changed, 807 insertions(+), 732 deletions(-) diff --git a/src/sip/commandline/cmdlineoptionsmodule.sip b/src/sip/commandline/cmdlineoptionsmodule.sip index 348ccda..5f6cb94 100644 --- a/src/sip/commandline/cmdlineoptionsmodule.sip +++ b/src/sip/commandline/cmdlineoptionsmodule.sip @@ -34,24 +34,24 @@ */ class ICommandLineOptionsModuleSettings /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include #include -using gmx::ICommandLineOptionsModuleSettings; -%End -public: - virtual void setHelpText(const char *help) = 0; - %MethodCode + using gmx::ICommandLineOptionsModuleSettings; + %End + public: + virtual void setHelpText(const char *help) = 0; + %MethodCode const char *const helpText[] = {a0}; sipCpp->setHelpText(helpText); - %End - virtual void addOptionsBehavior( - IOptionsBehavior *behavior /Transfer/) = 0; - %MethodCode - sipCpp->addOptionsBehavior(std::shared_ptr(a0)); - %End -private: - virtual ~ICommandLineOptionsModuleSettings(); + %End + virtual void addOptionsBehavior( + IOptionsBehavior *behavior /Transfer/) = 0; + %MethodCode + sipCpp->addOptionsBehavior(std::shared_ptr < IOptionsBehavior > (a0)); + %End + private: + virtual ~ICommandLineOptionsModuleSettings(); }; // This class is needed by Pipeline python implementation. @@ -63,47 +63,47 @@ private: #include namespace pygmx { - class DummyOptionsModuleSettings : public gmx::ICommandLineOptionsModuleSettings { - public: - virtual void setHelpText(const gmx::ConstArrayRef&) {}; - virtual void addOptionsBehavior(const std::shared_ptr&) {}; + class DummyOptionsModuleSettings: public gmx::ICommandLineOptionsModuleSettings { + public: + virtual void setHelpText(const gmx::ConstArrayRef < const char* > &) {}; + virtual void addOptionsBehavior(const std::shared_ptr < gmx::IOptionsBehavior > &) {}; }; } %End -class DummyOptionsModuleSettings : public ICommandLineOptionsModuleSettings { -%TypeHeaderCode +class DummyOptionsModuleSettings: public ICommandLineOptionsModuleSettings { + %TypeHeaderCode #include -using gmx::ICommandLineOptionsModuleSettings; -using pygmx::DummyOptionsModuleSettings; -%End -private: - virtual void setHelpText(const char *); - virtual void addOptionsBehavior(IOptionsBehavior* /Transfer/); + using gmx::ICommandLineOptionsModuleSettings; + using pygmx::DummyOptionsModuleSettings; + %End + private: + virtual void setHelpText(const char *); + virtual void addOptionsBehavior(IOptionsBehavior* /Transfer/); }; class CommandLineModuleSettings /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -using gmx::CommandLineModuleSettings; -%End + using gmx::CommandLineModuleSettings; + %End }; -class ICommandLineOptionsModule /VirtualErrorHandler=vehandler/ { -%TypeHeaderCode +class ICommandLineOptionsModule /VirtualErrorHandler = vehandler/ { + %TypeHeaderCode #include -using gmx::ICommandLineOptionsModule; -%End -public: - virtual void init(CommandLineModuleSettings *settings) = 0; - virtual void initOptions(IOptionsContainer *options, ICommandLineOptionsModuleSettings *settings) = 0; - virtual void optionsFinished() = 0; - virtual int run() = 0; - static int runAsMain(SIP_PYOBJECT mod, SIP_PYLIST argv, const char *name, const char *description); - %MethodCode - auto runner = [a0, a2, a3] (int argc, char **argv) -> int { - return ICommandLineOptionsModule::runAsMain(argc, argv, a2, a3, PyFactory(sipType_ICommandLineOptionsModule, a0)); + using gmx::ICommandLineOptionsModule; + %End + public: + virtual void init(CommandLineModuleSettings *settings) = 0; + virtual void initOptions(IOptionsContainer *options, ICommandLineOptionsModuleSettings *settings) = 0; + virtual void optionsFinished() = 0; + virtual int run() = 0; + static int runAsMain(SIP_PYOBJECT mod, SIP_PYLIST argv, const char *name, const char *description); + %MethodCode + auto runner = [a0, a2, a3] (int argc, char **argv)->int { + return ICommandLineOptionsModule::runAsMain(argc, argv, a2, a3, PyFactory < gmx::ICommandLineOptionsModule > (sipType_ICommandLineOptionsModule, a0)); }; sipRes = argv_wrapper(a1, runner); - %End + %End }; diff --git a/src/sip/commandline/cmdlineparser.sip b/src/sip/commandline/cmdlineparser.sip index 4dd0cbb..64501f4 100644 --- a/src/sip/commandline/cmdlineparser.sip +++ b/src/sip/commandline/cmdlineparser.sip @@ -34,18 +34,18 @@ */ class CommandLineParser /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -using gmx::CommandLineParser; -%End -public: - CommandLineParser(Options *options); - void parse(SIP_PYLIST argv); - %MethodCode - auto runner = [sipCpp] (int argc, char **argv) -> int { + using gmx::CommandLineParser; + %End + public: + CommandLineParser(Options *options); + void parse(SIP_PYLIST argv); + %MethodCode + auto runner = [sipCpp] (int argc, char **argv)->int { sipCpp->parse(&argc, argv); return 0; }; argv_wrapper(a0, runner); - %End + %End }; diff --git a/src/sip/definitions.sip b/src/sip/definitions.sip index bdcda46..2342cd7 100644 --- a/src/sip/definitions.sip +++ b/src/sip/definitions.sip @@ -33,95 +33,102 @@ * the research papers on the package. Check out http://www.gromacs.org. */ -%Exception gmx::GromacsException(SIP_Exception) /Default/ { -%TypeHeaderCode +%Exception gmx::GromacsException(SIP_Exception) /Default/ +{ + %TypeHeaderCode #include -%End -%RaiseCode + %End + %RaiseCode std::string detail = formatExceptionMessageToString(sipExceptionRef); SIP_BLOCK_THREADS PyErr_SetString(sipException_gmx_GromacsException, detail.data()); SIP_UNBLOCK_THREADS -%End + %End }; // This MappedType makes sure that unique_ptr does not get destructed while wrapped pointer is still needed. // A class called 'TYPEPointer' needs to be created for every use. -template -%MappedType std::unique_ptr /NoRelease/ { +template < TYPE > +%MappedType std::unique_ptr < TYPE > /NoRelease/ { -%ConvertFromTypeCode + %ConvertFromTypeCode PyObject *wrp = sipConvertFromType(sipCpp->get(), sipType_TYPE, NULL); PyObject *ptr = sipConvertFromNewType(sipCpp, sipType_TYPEPointer, wrp); // ptr is created only to bind wrp's ownership to it GMX_UNUSED_VALUE(ptr); return wrp; -%End + %End -%ConvertToTypeCode + %ConvertToTypeCode // Make it impossible to convert into this type if (!sipIsErr) + { return 0; + } GMX_ASSERT(true, "Converting something into unique_ptr. This should not happen!"); return 0; -%End + %End }; %VirtualErrorHandler vehandler - SIP_RELEASE_GIL(sipGILState); +SIP_RELEASE_GIL(sipGILState); - PyErr_PrintEx(1); - GMX_THROW(gmx::InternalError("Python virtual overload raised an exception, see traceback")); +PyErr_PrintEx(1); +GMX_THROW(gmx::InternalError("Python virtual overload raised an exception, see traceback")); %End %ModuleHeaderCode #include -int argv_wrapper(PyObject *, const std::function &); -template class PyFactory; +int argv_wrapper(PyObject *, const std::function < int(int, char**) > &); +template < typename T > class PyFactory; %End // This is put into UnitPostIncludeCode so that sip* declarations are available. %UnitPostIncludeCode #include #include -template class PyFactory { -public: - PyFactory(const sipTypeDef *sipType, PyObject *mod) : sipType_(sipType), mod(mod) {} ; - std::unique_ptr operator () () { - int iserr = 0; - int can = sipCanConvertToType(mod, sipType_, 0); - - if (!can) - GMX_THROW(gmx::APIError("Provided python object can not be converted to type required by runAsMain-like function")); - - T *module = (T*) sipConvertToType( - mod, sipType_, NULL, 0, NULL, &iserr); - return std::unique_ptr(module); - } -private: - const sipTypeDef *sipType_; - PyObject *mod; +template < typename T > class PyFactory { + public: + PyFactory(const sipTypeDef *sipType, PyObject *mod) : sipType_(sipType), mod(mod) { + }; + std::unique_ptr < T > operator () () { + int iserr = 0; + int can = sipCanConvertToType(mod, sipType_, 0); + + if (!can) + { + GMX_THROW(gmx::APIError("Provided python object can not be converted to type required by runAsMain-like function")); + } + + T *module = (T*) sipConvertToType( + mod, sipType_, NULL, 0, NULL, &iserr); + return std::unique_ptr < T > (module); + } + private: + const sipTypeDef *sipType_; + PyObject *mod; }; %End %ModuleCode -int argv_wrapper(PyObject *py_argv, const std::function &runner) { - int argc = PyList_GET_SIZE(py_argv); +int argv_wrapper(PyObject *py_argv, const std::function < int(int, char**) > &runner) +{ + int argc = PyList_GET_SIZE(py_argv); char **argv = new char *[argc + 1]; - bool to_free[argc]; + bool to_free[argc]; std::fill(to_free, to_free+argc, false); // Convert the list. // TODO: Use something better than AsLatin1String to avoid unicode errors for (int a = 0; a < argc; ++a) { - PyObject *arg_obj = PyList_GET_ITEM(py_argv, a); - const char *arg = sipString_AsLatin1String(&arg_obj); + PyObject *arg_obj = PyList_GET_ITEM(py_argv, a); + const char *arg = sipString_AsLatin1String(&arg_obj); if (arg) { @@ -134,7 +141,7 @@ int argv_wrapper(PyObject *py_argv, const std::function &runne arg = "unknown"; } - argv[a] = const_cast(arg); + argv[a] = const_cast < char * > (arg); } argv[argc] = NULL; @@ -142,8 +149,12 @@ int argv_wrapper(PyObject *py_argv, const std::function &runne int result = runner(argc, argv); for (int i = 0; i < argc; i++) + { if (to_free[i]) + { free(argv[i]); + } + } delete[] argv; return result; diff --git a/src/sip/options/abstractoption.sip b/src/sip/options/abstractoption.sip index 1723663..e6b0396 100644 --- a/src/sip/options/abstractoption.sip +++ b/src/sip/options/abstractoption.sip @@ -33,27 +33,27 @@ * the research papers on the package. Check out http://www.gromacs.org. */ -class AbstractOption /NoDefaultCtors,Abstract/ { -%TypeHeaderCode +class AbstractOption /NoDefaultCtors, Abstract/ { + %TypeHeaderCode #include -using gmx::AbstractOption; -%End + using gmx::AbstractOption; + %End }; -template class OptionTemplate : AbstractOption /NoDefaultCtors/ { -%TypeHeaderCode +template < T, U > class OptionTemplate: AbstractOption /NoDefaultCtors/ { + %TypeHeaderCode #include -using namespace gmx; -%End -public: - U& description(const char * /KeepReference/); - U& hidden(bool = true); - U& required(bool = true); - U& allowMultiple(bool = true); - // FIXME - // These function do not work, because they store pointer to argument, which then is garbage collected in python. - // Different combinations of Factory, KeepReference and Transfer annotations do not help. - // Use third argument of PyOptionsHolder's methods instead. - U& defaultValue(const T&); - U& defaultValueIfSet(const T&); + using namespace gmx; + %End + public: + U &description(const char * /KeepReference/); + U &hidden(bool = true); + U &required(bool = true); + U &allowMultiple(bool = true); + // FIXME + // These function do not work, because they store pointer to argument, which then is garbage collected in python. + // Different combinations of Factory, KeepReference and Transfer annotations do not help. + // Use third argument of PyOptionsHolder's methods instead. + U &defaultValue(const T &); + U &defaultValueIfSet(const T &); }; diff --git a/src/sip/options/basicoptions.sip b/src/sip/options/basicoptions.sip index 91d56c9..ae674a3 100644 --- a/src/sip/options/basicoptions.sip +++ b/src/sip/options/basicoptions.sip @@ -34,44 +34,44 @@ */ %ModuleHeaderCode -typedef gmx::OptionTemplate DoubleOptionTemplate; -typedef gmx::OptionTemplate IntegerOptionTemplate; -typedef gmx::OptionTemplate StringOptionTemplate; -typedef gmx::OptionTemplate BooleanOptionTemplate; +typedef gmx::OptionTemplate < double, gmx::DoubleOption > DoubleOptionTemplate; +typedef gmx::OptionTemplate < int, gmx::IntegerOption > IntegerOptionTemplate; +typedef gmx::OptionTemplate < std::string, gmx::StringOption > StringOptionTemplate; +typedef gmx::OptionTemplate < bool, gmx::BooleanOption > BooleanOptionTemplate; %End class std::string; -typedef OptionTemplate DoubleOptionTemplate; -typedef OptionTemplate IntegerOptionTemplate; -typedef OptionTemplate StringOptionTemplate; -typedef OptionTemplate BooleanOptionTemplate; +typedef OptionTemplate < double, DoubleOption > DoubleOptionTemplate; +typedef OptionTemplate < int, IntegerOption > IntegerOptionTemplate; +typedef OptionTemplate < std::string, StringOption > StringOptionTemplate; +typedef OptionTemplate < bool, BooleanOption > BooleanOptionTemplate; -class DoubleOption : DoubleOptionTemplate /NoDefaultCtors/ { -%TypeHeaderCode +class DoubleOption: DoubleOptionTemplate /NoDefaultCtors/ { + %TypeHeaderCode #include "gromacs/options/basicoptions.h" -using gmx::DoubleOption; -%End + using gmx::DoubleOption; + %End }; -class IntegerOption : IntegerOptionTemplate /NoDefaultCtors/ { -%TypeHeaderCode +class IntegerOption: IntegerOptionTemplate /NoDefaultCtors/ { + %TypeHeaderCode #include "gromacs/options/basicoptions.h" -using gmx::IntegerOption; -%End + using gmx::IntegerOption; + %End }; -class StringOption : StringOptionTemplate /NoDefaultCtors/ { -%TypeHeaderCode +class StringOption: StringOptionTemplate /NoDefaultCtors/ { + %TypeHeaderCode #include "gromacs/options/basicoptions.h" -using gmx::StringOption; -%End -public: - StringOption& defaultValue(const char *); - %MethodCode - sipRes = &sipCpp->defaultValue(std::string(a0)); + using gmx::StringOption; %End + public: + StringOption &defaultValue(const char *); + %MethodCode + sipRes = &sipCpp->defaultValue(std::string(a0)); + %End }; -class BooleanOption : BooleanOptionTemplate /NoDefaultCtors/ { -%TypeHeaderCode +class BooleanOption: BooleanOptionTemplate /NoDefaultCtors/ { + %TypeHeaderCode #include "gromacs/options/basicoptions.h" -using gmx::BooleanOption; -%End + using gmx::BooleanOption; + %End }; diff --git a/src/sip/options/filenameoption.sip b/src/sip/options/filenameoption.sip index 995ea8a..c734780 100644 --- a/src/sip/options/filenameoption.sip +++ b/src/sip/options/filenameoption.sip @@ -36,11 +36,11 @@ %ModuleHeaderCode #include "gromacs/options/filenameoption.h" #include "gromacs/fileio/filetypes.h" -typedef gmx::OptionTemplate FileNameOptionTemplate; +typedef gmx::OptionTemplate < std::string, gmx::FileNameOption > FileNameOptionTemplate; using namespace gmx; // needed for compilation of enum %End -typedef OptionTemplate FileNameOptionTemplate; +typedef OptionTemplate < std::string, FileNameOption > FileNameOptionTemplate; enum OptionFileType { eftUnknown, eftTopology, eftTrajectory, eftPDB, @@ -68,27 +68,27 @@ enum { efNR }; -class FileNameOption : FileNameOptionTemplate /NoDefaultCtors/ { -%TypeHeaderCode +class FileNameOption: FileNameOptionTemplate /NoDefaultCtors/ { + %TypeHeaderCode #include "gromacs/options/filenameoption.h" -using gmx::FileNameOption; -%End -public: - FileNameOption& filetype(OptionFileType); - FileNameOption& legacyType(int); - FileNameOption& inputFile(); - FileNameOption& outputFile(); - FileNameOption& inputOutputFile(); - FileNameOption& readWriteFlags(bool, bool); - FileNameOption& libraryFile(bool = true); - FileNameOption& defaultBasename(const char* /KeepReference/); - FileNameOption& defaultType(int); + using gmx::FileNameOption; + %End + public: + FileNameOption &filetype(OptionFileType); + FileNameOption &legacyType(int); + FileNameOption &inputFile(); + FileNameOption &outputFile(); + FileNameOption &inputOutputFile(); + FileNameOption &readWriteFlags(bool, bool); + FileNameOption &libraryFile(bool = true); + FileNameOption &defaultBasename(const char* /KeepReference/); + FileNameOption &defaultType(int); }; -class FileNameOptionManager : public IOptionManager /NoDefaultCtors/ { -%TypeHeaderCode +class FileNameOptionManager: public IOptionManager /NoDefaultCtors/ { + %TypeHeaderCode #include -%End -public: - FileNameOptionManager(); + %End + public: + FileNameOptionManager(); }; diff --git a/src/sip/options/ioptionsbehavior.sip b/src/sip/options/ioptionsbehavior.sip index 58d9ecf..89032db 100644 --- a/src/sip/options/ioptionsbehavior.sip +++ b/src/sip/options/ioptionsbehavior.sip @@ -34,24 +34,24 @@ */ class IOptionsBehavior /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -using gmx::IOptionsBehavior; -%End -public: - virtual void initBehavior(Options *options) = 0; - virtual void optionsFinishing(Options *options) = 0; - virtual void optionsFinished() = 0; + using gmx::IOptionsBehavior; + %End + public: + virtual void initBehavior(Options *options) = 0; + virtual void optionsFinishing(Options *options) = 0; + virtual void optionsFinished() = 0; }; -class TimeUnitBehavior : public IOptionsBehavior /NoDefaultCtors/ { -%TypeHeaderCode +class TimeUnitBehavior: public IOptionsBehavior /NoDefaultCtors/ { + %TypeHeaderCode #include -using gmx::TimeUnitBehavior; -%End -public: - TimeUnitBehavior(); - virtual void initBehavior(Options *options); - virtual void optionsFinishing(Options *options); - virtual void optionsFinished(); + using gmx::TimeUnitBehavior; + %End + public: + TimeUnitBehavior(); + virtual void initBehavior(Options *options); + virtual void optionsFinishing(Options *options); + virtual void optionsFinished(); }; diff --git a/src/sip/options/ioptionscontainer.sip b/src/sip/options/ioptionscontainer.sip index d1012b8..b12e3f5 100644 --- a/src/sip/options/ioptionscontainer.sip +++ b/src/sip/options/ioptionscontainer.sip @@ -36,18 +36,18 @@ class OptionInfo /NoDefaultCtors/; class IOptionsContainer /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -using gmx::IOptionsContainer; -%End + using gmx::IOptionsContainer; + %End -public: - virtual OptionInfo *addOption(const AbstractOption &settings) = 0; - virtual IOptionsContainer *addGroup() = 0; - %MethodCode + public: + virtual OptionInfo *addOption(const AbstractOption &settings) = 0; + virtual IOptionsContainer *addGroup() = 0; + %MethodCode IOptionsContainer &group = sipCpp->addGroup(); - sipRes = &group; - %End -private: - virtual ~IOptionsContainer(); + sipRes = &group; + %End + private: + virtual ~IOptionsContainer(); }; diff --git a/src/sip/options/options.sip b/src/sip/options/options.sip index 6ff25c5..b2f43ce 100644 --- a/src/sip/options/options.sip +++ b/src/sip/options/options.sip @@ -34,35 +34,35 @@ */ class IOptionManager /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -using gmx::IOptionManager; -%End + using gmx::IOptionManager; + %End -protected: - virtual ~IOptionManager(); + protected: + virtual ~IOptionManager(); }; -class Options : public IOptionsContainer { -%TypeHeaderCode +class Options: public IOptionsContainer { + %TypeHeaderCode #include -using gmx::Options; -%End + using gmx::Options; + %End -public: - Options(const char *name, const char *title); - void addManager (IOptionManager *manager); - void addSubSection (Options *section); - void addOption(const AbstractOption &settings); - IOptionsContainer *addGroup(); - %MethodCode + public: + Options(const char *name, const char *title); + void addManager (IOptionManager *manager); + void addSubSection (Options *section); + void addOption(const AbstractOption &settings); + IOptionsContainer *addGroup(); + %MethodCode IOptionsContainer &group = sipCpp->addGroup(); - sipRes = &group; - %End + sipRes = &group; + %End - void finish(); -private: - Options(const Options &other); + void finish(); + private: + Options(const Options &other); }; diff --git a/src/sip/options/pyoptionsholder.sip b/src/sip/options/pyoptionsholder.sip index 0091046..83e36cb 100644 --- a/src/sip/options/pyoptionsholder.sip +++ b/src/sip/options/pyoptionsholder.sip @@ -42,41 +42,41 @@ #include class PyOptionsHolder { -public: - class DuplicateOption : public std::exception { public: - virtual const char* what() const noexcept; - }; - class StringList { - public: - StringList(const std::vector*); - StringList(const std::string*, size_t); - const char* operator[] (size_t); + class DuplicateOption: public std::exception { + public: + virtual const char* what() const noexcept; + }; + class StringList { + public: + StringList(const std::vector < std::string > *); + StringList(const std::string*, size_t); + const char * operator[] (size_t); + private: + const std::string *list; + size_t size; + const std::vector < std::string > *vector; + }; + gmx::DoubleOption doubleOption(const char*, size_t = 1, double* = NULL); + gmx::IntegerOption integerOption(const char*, size_t = 1, int* = NULL); + gmx::StringOption stringOption(const char*, size_t = 1, const char* = NULL); + gmx::BooleanOption booleanOption(const char*, size_t = 1, bool = 0); + gmx::SelectionOption selectionOption(const char*, size_t = 1); + gmx::FileNameOption fileNameOption(const char*, size_t = 1); + PyObject* get_value(const char*); + ~PyOptionsHolder(); private: - const std::string *list; - size_t size; - const std::vector *vector; - }; - gmx::DoubleOption doubleOption(const char*, size_t = 1, double* = NULL); - gmx::IntegerOption integerOption(const char*, size_t = 1, int* = NULL); - gmx::StringOption stringOption(const char*, size_t = 1, const char* = NULL); - gmx::BooleanOption booleanOption(const char*, size_t = 1, bool = 0); - gmx::SelectionOption selectionOption(const char*, size_t = 1); - gmx::FileNameOption fileNameOption(const char*, size_t = 1); - PyObject* get_value(const char*); - ~PyOptionsHolder(); -private: - struct option_value { - void *value; - const char *type; - int *count; - bool vector; - const char *name; - }; - std::map storage; - template U createStorage(const char*, const char*, int, const T* = 0); - template PyObject* buildValue(const char*, const option_value&, const sipTypeDef* = NULL, size_t = 0); - template void deleteStorage(const option_value&); + struct option_value { + void *value; + const char *type; + int *count; + bool vector; + const char *name; + }; + std::map < std::string, option_value > storage; + template < typename T, typename U > U createStorage(const char*, const char*, int, const T* = 0); + template < typename T > PyObject* buildValue(const char*, const option_value &, const sipTypeDef* = NULL, size_t = 0); + template < typename T > void deleteStorage(const option_value &); }; %End @@ -87,7 +87,7 @@ const char* PyOptionsHolder::DuplicateOption::what() const noexcept { return "This option is already defined"; } -PyOptionsHolder::StringList::StringList(const std::vector *vector) : +PyOptionsHolder::StringList::StringList(const std::vector < std::string > *vector) : list(NULL), size(vector->size()), vector(vector) {} @@ -95,47 +95,60 @@ PyOptionsHolder::StringList::StringList(const std::string *list, size_t size) : list(list), size(size), vector(NULL) {} -const char* PyOptionsHolder::StringList::operator[](size_t i) { +const char* PyOptionsHolder::StringList::operator[] (size_t i) { if (i >= size) + { return NULL; + } return vector ? (*vector)[i].data() : list[i].data(); } -template U PyOptionsHolder::createStorage(const char *name, const char *type, int count, const T *def) { +template < typename T, typename U > U PyOptionsHolder::createStorage(const char *name, const char *type, int count, const T *def) +{ if (storage.count(name)) + { throw DuplicateOption(); + } U option(name); option_value value; - value.type = type; + value.type = type; value.count = new int; - value.name = name; + value.name = name; - if (count == 0) { // std::vector of values - auto *store = new std::vector(); + if (count == 0) // std::vector of values + { + auto *store = new std::vector < T > (); option.storeVector(store); option.multiValue(); option.storeCount(value.count); *value.count = 0; - if (def) { + if (def) + { store->push_back(*def); *value.count = 1; } - value.value = store; + value.value = store; value.vector = true; - } else { // exactly `count` values + } + else // exactly `count` values + { auto *store = new T[count]; if (def) + { store[0] = *def; + } option.store(store); if (count > 1) + { option.valueCount(count); + } - value.value = store; + value.value = store; value.vector = false; *value.count = count; } @@ -144,33 +157,41 @@ template U PyOptionsHolder::createStorage(const char *na return option; } -gmx::DoubleOption PyOptionsHolder::doubleOption(const char *name, size_t count, double *def) { - gmx::DoubleOption option = createStorage(name, "d", count, def); +gmx::DoubleOption PyOptionsHolder::doubleOption(const char *name, size_t count, double *def) +{ + gmx::DoubleOption option = createStorage < double, gmx::DoubleOption > (name, "d", count, def); return option; } -gmx::IntegerOption PyOptionsHolder::integerOption(const char *name, size_t count, int *def) { - gmx::IntegerOption option = createStorage(name, "i", count, def); +gmx::IntegerOption PyOptionsHolder::integerOption(const char *name, size_t count, int *def) +{ + gmx::IntegerOption option = createStorage < int, gmx::IntegerOption > (name, "i", count, def); return option; } -gmx::StringOption PyOptionsHolder::stringOption(const char *name, size_t count, const char* def) { +gmx::StringOption PyOptionsHolder::stringOption(const char *name, size_t count, const char* def) +{ std::string *s_def = NULL; if (def) + { s_def = new std::string(def); + } - gmx::StringOption option = createStorage(name, "A", count, s_def); - delete s_def; + gmx::StringOption option = createStorage < std::string, gmx::StringOption > (name, "A", count, s_def); + delete s_def; return option; } // FIXME: Unify with the rest -gmx::BooleanOption PyOptionsHolder::booleanOption(const char *name, size_t count, bool def) { +gmx::BooleanOption PyOptionsHolder::booleanOption(const char *name, size_t count, bool def) +{ if (storage.count(name)) + { throw DuplicateOption(); + } bool *store = new bool; *store = def; @@ -181,154 +202,189 @@ gmx::BooleanOption PyOptionsHolder::booleanOption(const char *name, size_t count return option; } -gmx::SelectionOption PyOptionsHolder::selectionOption(const char *name, size_t count) { - gmx::SelectionOption option = createStorage(name, "S", count); +gmx::SelectionOption PyOptionsHolder::selectionOption(const char *name, size_t count) +{ + gmx::SelectionOption option = createStorage < gmx::Selection, gmx::SelectionOption > (name, "S", count); return option; } -gmx::FileNameOption PyOptionsHolder::fileNameOption(const char *name, size_t count) { - gmx::FileNameOption option = createStorage(name, "f", count); +gmx::FileNameOption PyOptionsHolder::fileNameOption(const char *name, size_t count) +{ + gmx::FileNameOption option = createStorage < std::string, gmx::FileNameOption > (name, "f", count); return option; } -template PyObject* PyOptionsHolder::buildValue(const char *sipType, const PyOptionsHolder::option_value &value, const sipTypeDef *td, size_t size) { +template < typename T > PyObject* PyOptionsHolder::buildValue(const char *sipType, const PyOptionsHolder::option_value &value, const sipTypeDef *td, size_t size) +{ int count = *value.count; - T *store = !value.vector ? (T*) value.value : ((std::vector*) value.value)->data(); + T *store = !value.vector ? (T*) value.value : ((std::vector < T > *)value.value)->data(); - if (count == 1 && !value.vector) { + if (count == 1 && !value.vector) + { if (td) + { return sipConvertFromType(store, td, NULL); + } else + { return sipBuildResult(NULL, sipType, *store); - } else { + } + } + else + { if (td) + { return sipConvertToTypedArray(store, td, NULL, size, count, SIP_READ_ONLY); + } else + { return sipConvertToArray(store, sipType, count, SIP_READ_ONLY); + } } } -PyObject* PyOptionsHolder::get_value(const char *name) { +PyObject* PyOptionsHolder::get_value(const char *name) +{ if (!storage.count(name)) + { return NULL; + } option_value v = storage[name]; - switch (*v.type) { - case 'd': // double - return buildValue("d", v); - break; - case 'i': // int - return buildValue("i", v); - break; - case 'A': // std::string - case 'f': // FileNameOption - if (v.vector) - return sipConvertFromType(new PyOptionsHolder::StringList(((std::vector*) v.value)), sipType_PyOptionsHolder_StringList, Py_None); - else if (*v.count == 1) - return sipBuildResult(NULL, "A", ((std::string*) v.value)->data()); - else - return sipConvertFromType(new PyOptionsHolder::StringList((std::string*) v.value, *v.count), sipType_PyOptionsHolder_StringList, Py_None); - break; - case 'b': // bool - // TODO: support vector bool options - return sipBuildResult(NULL, v.type, *((bool*) v.value)); - break; - case 'S': // Selection - return buildValue(NULL, v, sipType_Selection, sizeof(gmx::Selection)); - break; + switch (*v.type) + { + case 'd': // double + return buildValue < double > ("d", v); + break; + case 'i': // int + return buildValue < int > ("i", v); + break; + case 'A': // std::string + case 'f': // FileNameOption + if (v.vector) + { + return sipConvertFromType(new PyOptionsHolder::StringList(((std::vector < std::string > *)v.value)), sipType_PyOptionsHolder_StringList, Py_None); + } + else if (*v.count == 1) + { + return sipBuildResult(NULL, "A", ((std::string*) v.value)->data()); + } + else + { + return sipConvertFromType(new PyOptionsHolder::StringList((std::string*) v.value, *v.count), sipType_PyOptionsHolder_StringList, Py_None); + } + break; + case 'b': // bool + // TODO: support vector bool options + return sipBuildResult(NULL, v.type, *((bool*) v.value)); + break; + case 'S': // Selection + return buildValue < gmx::Selection > (NULL, v, sipType_Selection, sizeof(gmx::Selection)); + break; } GMX_ASSERT(false, "Some type is not handled in PyOptionsHolder.get_value"); return NULL; } -template void PyOptionsHolder::deleteStorage(const PyOptionsHolder::option_value &value) { +template < typename T > void PyOptionsHolder::deleteStorage(const PyOptionsHolder::option_value &value) +{ if (value.vector) - delete (std::vector *) value.value; + { + delete (std::vector < T > *) value.value; + } else + { delete[] (T*) value.value; + } delete value.count; } -PyOptionsHolder::~PyOptionsHolder() { +PyOptionsHolder::~PyOptionsHolder() +{ for (auto e : storage) - switch (*e.second.type) { + { + switch (*e.second.type) + { case 'd': // double - deleteStorage(e.second); + deleteStorage < double > (e.second); break; case 'i': // int - deleteStorage(e.second); + deleteStorage < int > (e.second); break; case 'A': // std::string case 'f': // FileNameOption (the storage type is still std::string) - deleteStorage(e.second); + deleteStorage < std::string > (e.second); break; case 'b': // bool delete (bool*) e.second.value; break; case 'S': // Selection - deleteStorage(e.second); + deleteStorage < gmx::Selection > (e.second); break; } + } } %End %Exception PyOptionsHolder::DuplicateOption { -%RaiseCode - SIP_BLOCK_THREADS; - PyErr_SetString(PyExc_ValueError, sipExceptionRef.what()); - SIP_UNBLOCK_THREADS; -%End + %RaiseCode + SIP_BLOCK_THREADS; + PyErr_SetString(PyExc_ValueError, sipExceptionRef.what()); + SIP_UNBLOCK_THREADS; + %End }; class PyOptionsHolder { -%TypeHeaderCode + %TypeHeaderCode #include "gromacs/options/basicoptions.h" -%End + %End -public: - class StringList /NoDefaultCtors/ { public: - const char* operator[] (int); + class StringList /NoDefaultCtors/ { + public: + const char* operator[] (int); + %MethodCode + sipRes = (*sipCpp)[a0]; + + if (!sipRes) + { + SIP_BLOCK_THREADS; + PyErr_SetString(PyExc_IndexError, "Index out of range"); + SIP_UNBLOCK_THREADS; + sipIsErr = 1; + } + %End + }; + // These methods are given twice to workaround sip setting 0 for when '*def = NULL' option is not given + DoubleOption doubleOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); + DoubleOption doubleOption(const char *name /KeepReference/, int count, const double *def) throw (PyOptionsHolder::DuplicateOption); + + IntegerOption integerOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); + IntegerOption integerOption(const char *name /KeepReference/, int count, const int *def) throw (PyOptionsHolder::DuplicateOption); + + StringOption stringOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); + StringOption stringOption(const char *name /KeepReference/, int count, const char *def) throw (PyOptionsHolder::DuplicateOption); + + BooleanOption booleanOption(const char *name /KeepReference/, int count = 1, bool def = 0) throw (PyOptionsHolder::DuplicateOption); + + SelectionOption selectionOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); + + FileNameOption fileNameOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); + SIP_PYOBJECT __getitem__(const char *name); %MethodCode - sipRes = (*sipCpp)[a0]; - - if (!sipRes) { - SIP_BLOCK_THREADS; - PyErr_SetString(PyExc_IndexError, "Index out of range"); - SIP_UNBLOCK_THREADS; - sipIsErr = 1; - } - %End - }; - // These methods are given twice to workaround sip setting 0 for when '*def = NULL' option is not given - DoubleOption doubleOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); - DoubleOption doubleOption(const char *name /KeepReference/, int count, const double *def) throw (PyOptionsHolder::DuplicateOption); - - IntegerOption integerOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); - IntegerOption integerOption(const char *name /KeepReference/, int count, const int *def) throw (PyOptionsHolder::DuplicateOption); - - StringOption stringOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); - StringOption stringOption(const char *name /KeepReference/, int count, const char *def) throw (PyOptionsHolder::DuplicateOption); - - BooleanOption booleanOption(const char *name /KeepReference/, int count = 1, bool def = 0) throw (PyOptionsHolder::DuplicateOption); - - SelectionOption selectionOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); - - FileNameOption fileNameOption(const char *name /KeepReference/, int count = 1) throw (PyOptionsHolder::DuplicateOption); - SIP_PYOBJECT __getitem__(const char *name); - %MethodCode sipRes = sipCpp->get_value(a0); - if (!sipRes) { + if (!sipRes) + { SIP_BLOCK_THREADS; PyErr_SetString(PyExc_KeyError, "Invalid option name"); SIP_UNBLOCK_THREADS; sipIsErr = 1; } - %End + %End }; diff --git a/src/sip/options/selectionoption.sip b/src/sip/options/selectionoption.sip index 40daf4a..197b166 100644 --- a/src/sip/options/selectionoption.sip +++ b/src/sip/options/selectionoption.sip @@ -36,23 +36,23 @@ %ModuleHeaderCode #include "gromacs/options/abstractoption.h" #include "gromacs/selection/selectionoption.h" -typedef gmx::OptionTemplate SelectionOptionTemplate; +typedef gmx::OptionTemplate < gmx::Selection, gmx::SelectionOption > SelectionOptionTemplate; %End -typedef OptionTemplate SelectionOptionTemplate; +typedef OptionTemplate < Selection, SelectionOption > SelectionOptionTemplate; -class SelectionOption : SelectionOptionTemplate /NoDefaultCtors/ { -%TypeHeaderCode +class SelectionOption: SelectionOptionTemplate /NoDefaultCtors/ { + %TypeHeaderCode #include "gromacs/selection/selectionoption.h" -using namespace gmx; -%End + using namespace gmx; + %End -public: - SelectionOption& evaluateVelocities(); - SelectionOption& evaluateForces(); - SelectionOption& onlyAtoms(); - SelectionOption& onlyStatic(); - SelectionOption& dynamicMask(); - SelectionOption& allowEmpty(); - SelectionOption& defaultSelectionText(const char*); + public: + SelectionOption &evaluateVelocities(); + SelectionOption &evaluateForces(); + SelectionOption &onlyAtoms(); + SelectionOption &onlyStatic(); + SelectionOption &dynamicMask(); + SelectionOption &allowEmpty(); + SelectionOption &defaultSelectionText(const char*); }; diff --git a/src/sip/selection/Selection.sip b/src/sip/selection/Selection.sip index 47e55dd..74ec09f 100644 --- a/src/sip/selection/Selection.sip +++ b/src/sip/selection/Selection.sip @@ -40,4 +40,3 @@ %Include definitions.sip %Include selection.sip - diff --git a/src/sip/selection/selection.sip b/src/sip/selection/selection.sip index 1dafb43..6a6d45f 100644 --- a/src/sip/selection/selection.sip +++ b/src/sip/selection/selection.sip @@ -46,35 +46,35 @@ enum e_index_t { }; class SelectionPosition /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include "gromacs/selection/selection.h" -using namespace gmx; -%End + using namespace gmx; + %End -public: - e_index_t type(); - SIP_PYOBJECT x(); - %MethodCode + public: + e_index_t type(); + SIP_PYOBJECT x(); + %MethodCode sipRes = array1dToNumpy(3, sipCpp->x()); - %End - SIP_PYOBJECT v(); - %MethodCode + %End + SIP_PYOBJECT v(); + %MethodCode sipRes = array1dToNumpy(3, sipCpp->v()); - %End - SIP_PYOBJECT f(); - %MethodCode + %End + SIP_PYOBJECT f(); + %MethodCode sipRes = array1dToNumpy(3, sipCpp->f()); - %End - double mass(); - double charge(); - int atomCount(); - SIP_PYOBJECT atomIndices(); - %MethodCode + %End + double mass(); + double charge(); + int atomCount(); + SIP_PYOBJECT atomIndices(); + %MethodCode sipRes = iarray1dToNumpy(sipCpp->atomIndices().size(), sipCpp->atomIndices().data()); - %End - bool selected(); - int refId(); - int mappedId(); + %End + bool selected(); + int refId(); + int mappedId(); }; enum e_coverfrac_t { @@ -83,62 +83,62 @@ enum e_coverfrac_t { }; class Selection { -%TypeHeaderCode + %TypeHeaderCode #include "gromacs/selection/selection.h" #include "numpy_conv.h" -using namespace gmx; -%End + using namespace gmx; + %End -public: - bool isValid(); - bool __eq__(const Selection&); - bool __ne__(const Selection&); - const char* name(); - const char* selectionText(); - bool isDynamic(); - e_index_t type(); - bool hasOnlyAtoms(); - int atomCount(); - SIP_PYOBJECT atomIndices(); - %MethodCode + public: + bool isValid(); + bool __eq__(const Selection &); + bool __ne__(const Selection &); + const char* name(); + const char* selectionText(); + bool isDynamic(); + e_index_t type(); + bool hasOnlyAtoms(); + int atomCount(); + SIP_PYOBJECT atomIndices(); + %MethodCode sipRes = iarray1dToNumpy(sipCpp->atomIndices().size(), sipCpp->atomIndices().data()); - %End - int posCount(); - SelectionPosition position(int); - SIP_PYOBJECT coordinates(); - %MethodCode + %End + int posCount(); + SelectionPosition position(int); + SIP_PYOBJECT coordinates(); + %MethodCode sipRes = array2dToNumpy(sipCpp->coordinates().size(), 3, sipCpp->coordinates().data()); - %End - bool hasVelocities(); - SIP_PYOBJECT velocities(); - %MethodCode + %End + bool hasVelocities(); + SIP_PYOBJECT velocities(); + %MethodCode sipRes = array2dToNumpy(sipCpp->velocities().size(), 3, sipCpp->velocities().data()); - %End - bool hasForces(); - SIP_PYOBJECT forces(); - %MethodCode + %End + bool hasForces(); + SIP_PYOBJECT forces(); + %MethodCode sipRes = array2dToNumpy(sipCpp->forces().size(), 3, sipCpp->forces().data()); - %End - SIP_PYOBJECT masses(); - %MethodCode + %End + SIP_PYOBJECT masses(); + %MethodCode sipRes = array1dToNumpy(sipCpp->masses().size(), sipCpp->masses().data()); - %End - SIP_PYOBJECT charges(); - %MethodCode + %End + SIP_PYOBJECT charges(); + %MethodCode sipRes = array1dToNumpy(sipCpp->charges().size(), sipCpp->charges().data()); - %End - SIP_PYOBJECT refIds(); - %MethodCode + %End + SIP_PYOBJECT refIds(); + %MethodCode sipRes = iarray1dToNumpy(sipCpp->refIds().size(), sipCpp->refIds().data()); - %End - SIP_PYOBJECT mappedIds(); - %MethodCode + %End + SIP_PYOBJECT mappedIds(); + %MethodCode sipRes = iarray1dToNumpy(sipCpp->mappedIds().size(), sipCpp->mappedIds().data()); - %End - bool isCoveredFractionDynamic(); - double coveredFraction(); - bool initCoveredFraction(e_coverfrac_t); - void setEvaluateVelocities(bool); - void setEvaluateForces(bool); - void setOriginalId(int, int); + %End + bool isCoveredFractionDynamic(); + double coveredFraction(); + bool initCoveredFraction(e_coverfrac_t); + void setEvaluateVelocities(bool); + void setEvaluateForces(bool); + void setOriginalId(int, int); }; diff --git a/src/sip/string.sip b/src/sip/string.sip index 76c96c8..684940e 100644 --- a/src/sip/string.sip +++ b/src/sip/string.sip @@ -35,21 +35,23 @@ %MappedType std::string { -%TypeHeaderCode + %TypeHeaderCode #include -%End + %End -%ConvertToTypeCode -if (sipIsErr == NULL) - return PyBytes_Check(sipPy); + %ConvertToTypeCode + if (sipIsErr == NULL) + { + return PyBytes_Check(sipPy); + } *sipCppPtr = new std::string(PyBytes_AsString(sipPy), PyBytes_Size(sipPy)); return sipGetState(sipTransferObj); -%End + %End -%ConvertFromTypeCode -return PyBytes_FromStringAndSize(sipCpp->data(),sipCpp->length()); -%End + %ConvertFromTypeCode + return PyBytes_FromStringAndSize(sipCpp->data(), sipCpp->length()); + %End }; diff --git a/src/sip/topology/atoms.sip b/src/sip/topology/atoms.sip index 3f97896..e6922fe 100644 --- a/src/sip/topology/atoms.sip +++ b/src/sip/topology/atoms.sip @@ -35,120 +35,120 @@ struct t_atom { -%TypeHeaderCode + %TypeHeaderCode #include -%End - - double m; double q; /* Mass and charge */ - double mB; double qB; /* Mass and charge for Free Energy calc */ - unsigned short type; /* Atom type */ - unsigned short typeB; /* Atom type for Free Energy calc */ - int ptype; /* Particle type */ - int resind; /* Index into resinfo (in t_atoms) */ - int atomnumber; /* Atomic Number or NOTSET */ - char *elem /NoSetter/; /* Element name */ + %End + + double m; double q; /* Mass and charge */ + double mB; double qB; /* Mass and charge for Free Energy calc */ + unsigned short type; /* Atom type */ + unsigned short typeB; /* Atom type for Free Energy calc */ + int ptype; /* Particle type */ + int resind; /* Index into resinfo (in t_atoms) */ + int atomnumber; /* Atomic Number or NOTSET */ + char *elem /NoSetter/; /* Element name */ }; struct t_resinfo { -%TypeHeaderCode + %TypeHeaderCode #include -%End + %End - SIP_PYOBJECT /* char** */ name /NoSetter/ { /* Pointer to the residue name */ - %GetCode + SIP_PYOBJECT /* char** */ name /NoSetter/ { /* Pointer to the residue name */ + %GetCode sipPy = sipBuildResult(NULL, "A", (sipCpp->name) ? *(sipCpp->name) : NULL); - %End + %End }; - int nr; /* Residue number */ - unsigned char ic; /* Code for insertion of residues */ - int chainnum; /* Iincremented at TER or new chain id */ - char chainid; /* Chain identifier written/read to pdb */ - SIP_PYOBJECT /* char** */ rtp /NoSetter/ { /* rtp building block name (optional) */ - %GetCode + int nr; /* Residue number */ + unsigned char ic; /* Code for insertion of residues */ + int chainnum; /* Iincremented at TER or new chain id */ + char chainid; /* Chain identifier written/read to pdb */ + SIP_PYOBJECT /* char** */ rtp /NoSetter/ { /* rtp building block name (optional) */ + %GetCode sipPy = sipBuildResult(NULL, "A", (sipCpp->rtp) ? *(sipCpp->rtp) : NULL); - %End + %End }; }; struct t_pdbinfo { -%TypeHeaderCode + %TypeHeaderCode #include -%End - - int type; /* PDB record name */ - int atomnr; /* PDB atom number */ - char altloc; /* Alternate location indicator */ - char *atomnm /NoSetter/; /* True atom name including leading spaces */ - double occup; /* Occupancy */ - double bfac; /* B-factor */ - bool bAnisotropic; /* (an)isotropic switch */ + %End + + int type; /* PDB record name */ + int atomnr; /* PDB atom number */ + char altloc; /* Alternate location indicator */ + char *atomnm /NoSetter/; /* True atom name including leading spaces */ + double occup; /* Occupancy */ + double bfac; /* B-factor */ + bool bAnisotropic; /* (an)isotropic switch */ SIP_PYOBJECT /* int * */ uij /NoSetter/ { - %GetCode + %GetCode sipPy = sipConvertToArray(sipCpp->uij, "i", 6, SIP_READ_ONLY); - %End + %End }; }; struct t_grps { -%TypeHeaderCode + %TypeHeaderCode #include -%End + %End int nr; /* Number of different groups */ SIP_PYOBJECT /* int* */ nm_ind /NoSetter/ { - %GetCode + %GetCode sipPy = sipConvertToArray(sipCpp->nm_ind, "i", sipCpp->nr, SIP_READ_ONLY); - %End + %End }; }; struct t_atoms { -%TypeHeaderCode + %TypeHeaderCode #include // Sip creates 'copy_[typename]' functions. In this case it coincides with function from atoms.h, so we need to rename it. #define copy_t_atoms copy_t_atoms_sip -%End + %End int nr; /* Nr of atoms */ t_atom *atom /NoSetter/ { - %GetCode + %GetCode sipPy = sipConvertToTypedArray(sipCpp->atom, sipType_t_atom, NULL, sizeof(t_atom), sipCpp->nr, SIP_READ_ONLY); - %End + %End }; PStringListWrapper atomname /NoSetter/ { - %GetCode + %GetCode PStringListWrapper *wrapper = new PStringListWrapper(sipCpp->atomname, sipCpp->nr); sipPy = sipConvertFromType(wrapper, sipType_PStringListWrapper, Py_None); - %End + %End }; PStringListWrapper atomtype /NoSetter/ { - %GetCode + %GetCode PStringListWrapper *wrapper = new PStringListWrapper(sipCpp->atomtype, sipCpp->nr); sipPy = sipConvertFromType(wrapper, sipType_PStringListWrapper, Py_None); - %End + %End }; PStringListWrapper atomtypeB /NoSetter/ { - %GetCode + %GetCode PStringListWrapper *wrapper = new PStringListWrapper(sipCpp->atomname, sipCpp->nr); sipPy = sipConvertFromType(wrapper, sipType_PStringListWrapper, Py_None); - %End + %End }; int nres; t_resinfo *resinfo /NoSetter/ { - %GetCode + %GetCode sipPy = sipConvertToTypedArray(sipCpp->resinfo, sipType_t_resinfo, NULL, sizeof(t_resinfo), sipCpp->nres, SIP_READ_ONLY); - %End + %End }; // FIXME: how many pdbinfo's are there? t_pdbinfo *pdbinfo /NoSetter/ { - %GetCode + %GetCode sipPy = sipConvertToTypedArray(sipCpp->pdbinfo, sipType_t_pdbinfo, NULL, sizeof(t_pdbinfo), sipCpp->nres, SIP_READ_ONLY); - %End + %End }; }; diff --git a/src/sip/topology/pstringlistwrapper.sip b/src/sip/topology/pstringlistwrapper.sip index 330aaaf..1d02b08 100644 --- a/src/sip/topology/pstringlistwrapper.sip +++ b/src/sip/topology/pstringlistwrapper.sip @@ -38,37 +38,40 @@ %ModuleHeaderCode class PStringListWrapper { -public: - PStringListWrapper(char ***stringList, size_t size); - const char* operator[] (size_t i); -private: - char ***stringList; - size_t size; + public: + PStringListWrapper(char ***stringList, size_t size); + const char* operator[] (size_t i); + private: + char ***stringList; + size_t size; }; %End %ModuleCode PStringListWrapper::PStringListWrapper(char ***stringList, size_t size) : stringList(stringList), size(size) - {} +{} const char* PStringListWrapper::operator[] (size_t i) { if (i >= size) + { return NULL; + } return *stringList[i]; } %End class PStringListWrapper /NoDefaultCtors/ { -public: - const char* operator[] (int i); - %MethodCode + public: + const char* operator[] (int i); + %MethodCode sipRes = (*sipCpp)[a0]; - if (!sipRes) { + if (!sipRes) + { SIP_BLOCK_THREADS; PyErr_SetString(PyExc_IndexError, "Index out of range"); SIP_UNBLOCK_THREADS; sipIsErr = 1; } - %End + %End }; diff --git a/src/sip/topology/topology.sip b/src/sip/topology/topology.sip index 34c38b0..042c16a 100644 --- a/src/sip/topology/topology.sip +++ b/src/sip/topology/topology.sip @@ -36,15 +36,15 @@ struct t_topology { -%TypeHeaderCode + %TypeHeaderCode #include -%End + %End SIP_PYOBJECT name /NoSetter/ { // Name of the topology - %GetCode + %GetCode // name is stored as char**, when the outer pointer is null, let sip wrap it as None sipPy = sipBuildResult(NULL, "A", (sipCpp->name) ? *(sipCpp->name) : NULL); - %End + %End }; //t_idef idef; [> The interaction function definition <] t_atoms atoms; /* The atoms */ diff --git a/src/sip/trajectoryanalysis/TrajectoryAnalysis.sip b/src/sip/trajectoryanalysis/TrajectoryAnalysis.sip index 6ff73d6..45a16ad 100644 --- a/src/sip/trajectoryanalysis/TrajectoryAnalysis.sip +++ b/src/sip/trajectoryanalysis/TrajectoryAnalysis.sip @@ -50,5 +50,5 @@ %Include cmdlinerunner.sip %PostInitialisationCode - import_array(); +import_array(); %End diff --git a/src/sip/trajectoryanalysis/analysisdata.sip b/src/sip/trajectoryanalysis/analysisdata.sip index 5eb1eff..34a02a6 100644 --- a/src/sip/trajectoryanalysis/analysisdata.sip +++ b/src/sip/trajectoryanalysis/analysisdata.sip @@ -1,64 +1,64 @@ class AbstractAnalysisData /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End -public: - bool isMultipoint() const; - int dataSetCount() const; - int columnCount(int dataSet) const; - int columnCount() const; - virtual int frameCount() const = 0; - AnalysisDataFrameRef tryGetDataFrame(int index) const; - AnalysisDataFrameRef getDataFrame(int index) const; - bool requestStorage(int nframes); + %End + public: + bool isMultipoint() const; + int dataSetCount() const; + int columnCount(int dataSet) const; + int columnCount() const; + virtual int frameCount() const = 0; + AnalysisDataFrameRef tryGetDataFrame(int index) const; + AnalysisDataFrameRef getDataFrame(int index) const; + bool requestStorage(int nframes); }; class AnalysisDataFrameRef /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End -public: - bool isValid() const; - //const AnalysidDataFrameHeader& header() const; - int frameIndex() const; - double x() const; - double dx() const; - int pointSetCount() const; - AnalysisDataPointSetRef pointSet(int index) const; - double y(int i) const; - double dy(int i) const; - bool present(int i) const; - bool allPresent() const; + %End + public: + bool isValid() const; + //const AnalysidDataFrameHeader& header() const; + int frameIndex() const; + double x() const; + double dx() const; + int pointSetCount() const; + AnalysisDataPointSetRef pointSet(int index) const; + double y(int i) const; + double dy(int i) const; + bool present(int i) const; + bool allPresent() const; }; class AnalysisDataFrameHeader /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End -public: - bool isValid() const; - int index() const; - double x() const; - double dx() const; + %End + public: + bool isValid() const; + int index() const; + double x() const; + double dx() const; }; class AnalysisDataPointSetRef /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End -public: - const AnalysisDataFrameHeader& header() const; - int frameIndex() const; - double x() const; - double dx() const; - int dataSetIndex() const; - int firstColumn() const; - int columnCount() const; - int lastColumn() const; - //const std::vector& values() const; - double y(int i) const; - double dy(int i) const; - bool present(int i) const; - bool allPresent() const; + %End + public: + const AnalysisDataFrameHeader &header() const; + int frameIndex() const; + double x() const; + double dx() const; + int dataSetIndex() const; + int firstColumn() const; + int columnCount() const; + int lastColumn() const; + //const std::vector& values() const; + double y(int i) const; + double dy(int i) const; + bool present(int i) const; + bool allPresent() const; }; diff --git a/src/sip/trajectoryanalysis/analysismodule.sip b/src/sip/trajectoryanalysis/analysismodule.sip index 80b1d4d..8eeb27d 100644 --- a/src/sip/trajectoryanalysis/analysismodule.sip +++ b/src/sip/trajectoryanalysis/analysismodule.sip @@ -35,141 +35,141 @@ struct t_trxframe { -%TypeHeaderCode + %TypeHeaderCode #include #include "numpy_conv.h" -%End + %End int not_ok; - bool bDouble; - int natoms; - bool bTitle; - const char *title; - bool bStep; - int step; - bool bTime; - double time; - bool bLambda; - bool bFepState; - double lambda; - int fep_state; - bool bAtoms; - t_atoms *atoms; - bool bPrec; - double prec; - bool bX; + bool bDouble; + int natoms; + bool bTitle; + const char *title; + bool bStep; + int step; + bool bTime; + double time; + bool bLambda; + bool bFepState; + double lambda; + int fep_state; + bool bAtoms; + t_atoms *atoms; + bool bPrec; + double prec; + bool bX; SIP_PYOBJECT x /NoSetter/ { - %GetCode + %GetCode sipPy = array2dToNumpy(sipCpp->natoms, 3, sipCpp->x); - %End + %End }; - bool bV; + bool bV; SIP_PYOBJECT v /NoSetter/ { - %GetCode + %GetCode sipPy = array2dToNumpy(sipCpp->natoms, 3, sipCpp->v); - %End + %End }; - bool bF; + bool bF; SIP_PYOBJECT f /NoSetter/ { - %GetCode + %GetCode sipPy = array2dToNumpy(sipCpp->natoms, 3, sipCpp->f); - %End + %End }; - bool bBox; + bool bBox; SIP_PYOBJECT box /NoSetter/ { - %GetCode + %GetCode sipPy = array2dToNumpy(3, 3, sipCpp->box); - %End + %End }; - bool bPBC; - int ePBC; - bool bIndex; + bool bPBC; + int ePBC; + bool bIndex; SIP_PYOBJECT index /NoSetter/ { - %GetCode + %GetCode sipPy = array1dToNumpy(sipCpp->natoms, sipCpp->index); - %End + %End }; }; struct t_pbc { -%TypeHeaderCode + %TypeHeaderCode #include #include "numpy_conv.h" -%End + %End int ePBC; - int ndim_ePBC; - int ePBCDX; - int dim; + int ndim_ePBC; + int ePBCDX; + int dim; SIP_PYOBJECT box /NoSetter/ { - %GetCode + %GetCode sipPy = array2dToNumpy(3, 3, sipCpp->box); - %End + %End }; SIP_PYOBJECT fbox_diag /NoSetter/ { - %GetCode + %GetCode sipPy = array1dToNumpy(3, sipCpp->fbox_diag); - %End + %End }; SIP_PYOBJECT hbox_diag /NoSetter/ { - %GetCode + %GetCode sipPy = array1dToNumpy(3, sipCpp->hbox_diag); - %End + %End }; SIP_PYOBJECT mhbox_diag /NoSetter/ { - %GetCode + %GetCode sipPy = array1dToNumpy(3, sipCpp->mhbox_diag); - %End + %End }; double max_cutoff2; - int ntric_vec; + int ntric_vec; /*ivec tric_shift[MAX_NTRICVEC];*/ /*rvec tric_vec[MAX_NTRICVEC];*/ }; class AnalysisDataParallelOptions /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End -public: - AnalysisDataParallelOptions(); + %End + public: + AnalysisDataParallelOptions(); }; class TrajectoryAnalysisModuleDataPointer; class TrajectoryAnalysisModuleData /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -using namespace gmx; -%End + using namespace gmx; + %End -public: - virtual void finish() = 0; + public: + virtual void finish() = 0; }; class TrajectoryAnalysisModulePointer; -class TrajectoryAnalysisModule /VirtualErrorHandler=vehandler/ { -%TypeHeaderCode +class TrajectoryAnalysisModule /VirtualErrorHandler = vehandler/ { + %TypeHeaderCode #include -using namespace gmx; -%End -public: - virtual void initOptions(IOptionsContainer *options, TrajectoryAnalysisSettings *settings) = 0; - virtual void optionsFinished(TrajectoryAnalysisSettings *settings); - virtual void initAnalysis(const TrajectoryAnalysisSettings &settings, const TopologyInformation &top) = 0; - virtual void initAfterFirstFrame(const TrajectoryAnalysisSettings &settings, const t_trxframe &fr); - // Discarding the virtual for now - std::unique_ptr startFrames (const AnalysisDataParallelOptions &opt, const SelectionCollection &selections); - virtual void analyzeFrame(int frnr, const t_trxframe &fr /NoCopy/, t_pbc *pbc, TrajectoryAnalysisModuleData *pdata ) = 0; - virtual void finishFrames(TrajectoryAnalysisModuleData *pdata); - virtual void finishAnalysis(int nframes) = 0; - virtual void writeOutput() = 0; - int datasetCount() const; - void finishFrameSerial(int frameIndex); - AbstractAnalysisData& datasetFromIndex(int index) const; - AbstractAnalysisData& datasetFromName(const char *name) const; -protected: - TrajectoryAnalysisModule(); -private: - TrajectoryAnalysisModule(const TrajectoryAnalysisModule &other); + using namespace gmx; + %End + public: + virtual void initOptions(IOptionsContainer *options, TrajectoryAnalysisSettings *settings) = 0; + virtual void optionsFinished(TrajectoryAnalysisSettings *settings); + virtual void initAnalysis(const TrajectoryAnalysisSettings &settings, const TopologyInformation &top) = 0; + virtual void initAfterFirstFrame(const TrajectoryAnalysisSettings &settings, const t_trxframe &fr); + // Discarding the virtual for now + std::unique_ptr < TrajectoryAnalysisModuleData > startFrames (const AnalysisDataParallelOptions &opt, const SelectionCollection &selections); + virtual void analyzeFrame(int frnr, const t_trxframe &fr /NoCopy/, t_pbc *pbc, TrajectoryAnalysisModuleData *pdata ) = 0; + virtual void finishFrames(TrajectoryAnalysisModuleData *pdata); + virtual void finishAnalysis(int nframes) = 0; + virtual void writeOutput() = 0; + int datasetCount() const; + void finishFrameSerial(int frameIndex); + AbstractAnalysisData &datasetFromIndex(int index) const; + AbstractAnalysisData &datasetFromName(const char *name) const; + protected: + TrajectoryAnalysisModule(); + private: + TrajectoryAnalysisModule(const TrajectoryAnalysisModule &other); }; diff --git a/src/sip/trajectoryanalysis/analysissettings.sip b/src/sip/trajectoryanalysis/analysissettings.sip index 494a05b..3e10d37 100644 --- a/src/sip/trajectoryanalysis/analysissettings.sip +++ b/src/sip/trajectoryanalysis/analysissettings.sip @@ -34,55 +34,55 @@ */ class TrajectoryAnalysisSettings { -%TypeHeaderCode + %TypeHeaderCode #include -using namespace gmx; -%End + using namespace gmx; + %End -public: - enum { - efRequireTop = 1, - efUseTopX = 2, - efNoUserPBC = 16, - efNoUserRmPBC = 32 - }; + public: + enum { + efRequireTop = 1, + efUseTopX = 2, + efNoUserPBC = 16, + efNoUserRmPBC = 32 + }; - TrajectoryAnalysisSettings(); - void setOptionsModuleSettings(ICommandLineOptionsModuleSettings *settings); - /* - const TimeUnitManager& timeUnitManager() const; - TimeUnit timeUnit(); - const AnalysisDataPlotSettings& plotSettings() const; - */ - unsigned long flags() const; - bool hasFlag(unsigned long flag) const; - bool hasPBC() const; - bool hasRmPBC() const; - int frflags() const; - void setFlags(unsigned long flags); - void setFlag(unsigned long flag, bool bSet = true); - void setPBC(bool bPBC); - void setRmPBC(bool bRmPBC); - void setFrameFlags(int frflags); - void setHelpText(const char *helpText); - %MethodCode + TrajectoryAnalysisSettings(); + void setOptionsModuleSettings(ICommandLineOptionsModuleSettings *settings); + /* + const TimeUnitManager& timeUnitManager() const; + TimeUnit timeUnit(); + const AnalysisDataPlotSettings& plotSettings() const; + */ + unsigned long flags() const; + bool hasFlag(unsigned long flag) const; + bool hasPBC() const; + bool hasRmPBC() const; + int frflags() const; + void setFlags(unsigned long flags); + void setFlag(unsigned long flag, bool bSet = true); + void setPBC(bool bPBC); + void setRmPBC(bool bRmPBC); + void setFrameFlags(int frflags); + void setHelpText(const char *helpText); + %MethodCode const char *const helpText[] = {a0}; sipCpp->setHelpText(helpText); - %End -private: - TrajectoryAnalysisSettings(const TrajectoryAnalysisSettings &other); + %End + private: + TrajectoryAnalysisSettings(const TrajectoryAnalysisSettings &other); }; class TopologyInformation { -%TypeHeaderCode + %TypeHeaderCode #include -using namespace gmx; -%End -public: - bool hasTopology() const; - bool hasFullTopology() const; - t_topology* topology() const; -private: - TopologyInformation(const TopologyInformation &other); - ~TopologyInformation(); + using namespace gmx; + %End + public: + bool hasTopology() const; + bool hasFullTopology() const; + t_topology* topology() const; + private: + TopologyInformation(const TopologyInformation &other); + ~TopologyInformation(); }; diff --git a/src/sip/trajectoryanalysis/cmdlinerunner.sip b/src/sip/trajectoryanalysis/cmdlinerunner.sip index fd6bf4c..0e3ef23 100644 --- a/src/sip/trajectoryanalysis/cmdlinerunner.sip +++ b/src/sip/trajectoryanalysis/cmdlinerunner.sip @@ -34,16 +34,16 @@ */ class TrajectoryAnalysisCommandLineRunner /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End + %End -public: - static int runAsMain(SIP_PYOBJECT mod, SIP_PYLIST argv); - %MethodCode - auto runner = [a0] (int argc, char **argv) -> int { - return TrajectoryAnalysisCommandLineRunner::runAsMain(argc, argv, PyFactory(sipType_TrajectoryAnalysisModule, a0)); + public: + static int runAsMain(SIP_PYOBJECT mod, SIP_PYLIST argv); + %MethodCode + auto runner = [a0] (int argc, char **argv)->int { + return TrajectoryAnalysisCommandLineRunner::runAsMain(argc, argv, PyFactory < gmx::TrajectoryAnalysisModule > (sipType_TrajectoryAnalysisModule, a0)); }; sipRes = argv_wrapper(a1, runner); - %End + %End }; diff --git a/src/sip/trajectoryanalysis/runnercommon.sip b/src/sip/trajectoryanalysis/runnercommon.sip index 3fef87d..7d67f2f 100644 --- a/src/sip/trajectoryanalysis/runnercommon.sip +++ b/src/sip/trajectoryanalysis/runnercommon.sip @@ -36,50 +36,50 @@ // These classes belong to gromacs.Selection, but will remain here until // t_trxframe and t_pbc are split from TrajectoryAnalysis class SelectionCollection /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End -public: - SelectionCollection(); - void evaluate(t_trxframe *fr, t_pbc *pbc); - void evaluateFinal(int nframes); + %End + public: + SelectionCollection(); + void evaluate(t_trxframe *fr, t_pbc *pbc); + void evaluateFinal(int nframes); }; class ITopologyProvider; -class SelectionOptionBehavior : public IOptionsBehavior /NoDefaultCtors/ { -%TypeHeaderCode +class SelectionOptionBehavior: public IOptionsBehavior /NoDefaultCtors/ { + %TypeHeaderCode #include -using gmx::SelectionOptionBehavior; -using gmx::ITopologyProvider; -%End -public: - SelectionOptionBehavior(SelectionCollection *selections, - ITopologyProvider *topologyProvider); - void initOptions(IOptionsContainer *options); - virtual void initBehavior(Options *options); - virtual void optionsFinishing(Options *options); - virtual void optionsFinished(); + using gmx::SelectionOptionBehavior; + using gmx::ITopologyProvider; + %End + public: + SelectionOptionBehavior(SelectionCollection *selections, + ITopologyProvider *topologyProvider); + void initOptions(IOptionsContainer *options); + virtual void initBehavior(Options *options); + virtual void optionsFinishing(Options *options); + virtual void optionsFinished(); }; class TrajectoryAnalysisRunnerCommon /NoDefaultCtors/ { -%TypeHeaderCode + %TypeHeaderCode #include -%End -public: - explicit TrajectoryAnalysisRunnerCommon(TrajectoryAnalysisSettings *settings); - ~TrajectoryAnalysisRunnerCommon(); + %End + public: + explicit TrajectoryAnalysisRunnerCommon(TrajectoryAnalysisSettings *settings); + ~TrajectoryAnalysisRunnerCommon(); - ITopologyProvider *topologyProvider(); + ITopologyProvider *topologyProvider(); - void initOptions(IOptionsContainer *options, TimeUnitBehavior *timeUnitBehavior); - void optionsFinished(); - void initTopology(); - void initFirstFrame(); - void initFrameIndexGroup(); - bool readNextFrame(); - void initFrame(); + void initOptions(IOptionsContainer *options, TimeUnitBehavior *timeUnitBehavior); + void optionsFinished(); + void initTopology(); + void initFirstFrame(); + void initFrameIndexGroup(); + bool readNextFrame(); + void initFrame(); - bool hasTrajectory() const; - const TopologyInformation &topologyInformation() const; - t_trxframe &frame() const; + bool hasTrajectory() const; + const TopologyInformation &topologyInformation() const; + t_trxframe &frame() const; }; diff --git a/stub_headers/gromacs/analysisdata/paralleloptions.h b/stub_headers/gromacs/analysisdata/paralleloptions.h index ce51098..0d6a0c6 100644 --- a/stub_headers/gromacs/analysisdata/paralleloptions.h +++ b/stub_headers/gromacs/analysisdata/paralleloptions.h @@ -1,8 +1,10 @@ #ifndef PARALLELOPTIONS_H #define PARALLELOPTIONS_H -namespace gmx { -class AnalysisDataParallelOptions { +namespace gmx +{ +class AnalysisDataParallelOptions +{ public: AnalysisDataParallelOptions(); }; diff --git a/stub_headers/gromacs/trajectoryanalysis/runnercommon.h b/stub_headers/gromacs/trajectoryanalysis/runnercommon.h index 28e1304..7a15056 100644 --- a/stub_headers/gromacs/trajectoryanalysis/runnercommon.h +++ b/stub_headers/gromacs/trajectoryanalysis/runnercommon.h @@ -1,26 +1,28 @@ #ifndef RUNNERCOMMON_H #define RUNNERCOMMON_h -namespace gmx { +namespace gmx +{ class ITopologyProvider; -class TrajectoryAnalysisRunnerCommon { +class TrajectoryAnalysisRunnerCommon +{ public: - explicit TrajectoryAnalysisRunnerCommon(TrajectoryAnalysisSettings*); - ~TrajectoryAnalysisRunnerCommon(); + explicit TrajectoryAnalysisRunnerCommon(TrajectoryAnalysisSettings*); + ~TrajectoryAnalysisRunnerCommon(); - ITopologyProvider *topologyProvider(); + ITopologyProvider *topologyProvider(); - void initOptions(IOptionsContainer*, TimeUnitBehavior*); - void optionsFinished(); - void initTopology(); - void initFirstFrame(); - void initFrameIndexGroup(); - bool readNextFrame(); - void initFrame(); + void initOptions(IOptionsContainer*, TimeUnitBehavior*); + void optionsFinished(); + void initTopology(); + void initFirstFrame(); + void initFrameIndexGroup(); + bool readNextFrame(); + void initFrame(); - bool hasTrajectory() const; - const TopologyInformation &topologyInformation() const; - t_trxframe &frame() const; + bool hasTrajectory() const; + const TopologyInformation &topologyInformation() const; + t_trxframe &frame() const; }; } -- 2.22.0