diff --git a/doc/sphinx/cython/importing.rst b/doc/sphinx/cython/importing.rst index 45f91b237..ac46889f1 100644 --- a/doc/sphinx/cython/importing.rst +++ b/doc/sphinx/cython/importing.rst @@ -47,3 +47,4 @@ Utility Functions ----------------- .. autofunction:: add_directory +.. autofunction:: get_data_directories diff --git a/include/cantera/base/global.h b/include/cantera/base/global.h index ffcbeda0f..4beb38744 100644 --- a/include/cantera/base/global.h +++ b/include/cantera/base/global.h @@ -114,6 +114,9 @@ std::string findInputFile(const std::string& name); //! @copydoc Application::addDataDirectory void addDirectory(const std::string& dir); + +//! @copydoc Application::getDataDirectories +std::string getDataDirectories(const std::string& sep); //@} //! Delete and free all memory associated with the application diff --git a/interfaces/cython/cantera/_cantera.pxd b/interfaces/cython/cantera/_cantera.pxd index c120069f2..18ee8eaac 100644 --- a/interfaces/cython/cantera/_cantera.pxd +++ b/interfaces/cython/cantera/_cantera.pxd @@ -47,6 +47,7 @@ cdef extern from "cantera/base/stringUtils.h" namespace "Cantera": cdef extern from "cantera/base/global.h" namespace "Cantera": cdef void CxxAddDirectory "Cantera::addDirectory" (string) + cdef string CxxGetDataDirectories "Cantera::getDataDirectories" (string) cdef size_t CxxNpos "Cantera::npos" cdef void CxxAppdelete "Cantera::appdelete" () cdef XML_Node* CxxGetXmlFile "Cantera::get_XML_File" (string) except +translate_exception diff --git a/interfaces/cython/cantera/utils.pyx b/interfaces/cython/cantera/utils.pyx index a93a02996..22daa43ea 100644 --- a/interfaces/cython/cantera/utils.pyx +++ b/interfaces/cython/cantera/utils.pyx @@ -2,6 +2,7 @@ # at http://www.cantera.org/license.txt for license and copyright information. import sys +import os from cpython.ref cimport PyObject cdef int _pythonMajorVersion = sys.version_info[0] @@ -31,6 +32,10 @@ def add_directory(directory): """ Add a directory to search for Cantera data files. """ CxxAddDirectory(stringify(directory)) +def get_data_directories(): + """ Get a list of the directories Cantera searches for data files. """ + return pystr(CxxGetDataDirectories(stringify(os.pathsep))).split(os.pathsep) + __sundials_version__ = '.'.join(str(get_sundials_version())) __version__ = pystr(get_cantera_version()) diff --git a/src/base/application.h b/src/base/application.h index fb264d8bc..68090ba07 100644 --- a/src/base/application.h +++ b/src/base/application.h @@ -9,6 +9,8 @@ #include "cantera/base/config.h" #include "cantera/base/logger.h" +#include + #include #include @@ -265,6 +267,20 @@ public: */ std::string findInputFile(const std::string& name); + //! Get the Cantera data directories + /*! + * This routine returns a string including the names of all the + * directories searched by Cantera for data files. + * + * @param sep Separator to use between directories in the string + * @return A string of directories separated by the input sep + * + * @ingroup inputfiles + */ + std::string getDataDirectories(const std::string& sep) { + return boost::algorithm::join(inputDirs, sep); + } + //! Return a pointer to the XML tree for a Cantera input file. /*! * This routine will find the file and read the XML file into an XML tree diff --git a/src/base/global.cpp b/src/base/global.cpp index c0ceeacce..edbab3862 100644 --- a/src/base/global.cpp +++ b/src/base/global.cpp @@ -137,6 +137,11 @@ void addDirectory(const std::string& dir) app()->addDataDirectory(dir); } +std::string getDataDirectories(const std::string& sep) +{ + return app()->getDataDirectories(sep); +} + std::string findInputFile(const std::string& name) { return app()->findInputFile(name);