# HG changeset patch # User Mike Miller # Date 1471292195 25200 # Node ID cee203ea62459ae62a052b1b50bceb9986ccad3a # Parent 5c63651b0ec41d4875b5f934966975f360142c7f Rename oct-py-util.cc from pytave_utils.cc * oct-py-util.cc, oct-py-util.h: Rename and reindent contents. * Makefile.am (COMMON_SOURCE_FILES, PYTAVE_HEADER_FILES): Update to use new names. * pycall.cc, pyeval.cc, pyexec.cc, python_to_octave.cc: Include "oct-py-util.h". diff -r 5c63651b0ec4 -r cee203ea6245 Makefile.am --- a/Makefile.am Sat Aug 13 23:59:49 2016 -0700 +++ b/Makefile.am Mon Aug 15 13:16:35 2016 -0700 @@ -31,8 +31,8 @@ exceptions.cc \ octave_to_python.cc \ oct-py-types.cc \ - python_to_octave.cc \ - pytave_utils.cc + oct-py-util.cc \ + python_to_octave.cc DOC_FILES = \ INSTALL.md \ @@ -50,9 +50,9 @@ config.h \ exceptions.h \ oct-py-types.h \ + oct-py-util.h \ octave_to_python.h \ - python_to_octave.h \ - pytave_utils.h + python_to_octave.h PY_FILES = \ package/__init__.py \ diff -r 5c63651b0ec4 -r cee203ea6245 oct-py-util.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oct-py-util.cc Mon Aug 15 13:16:35 2016 -0700 @@ -0,0 +1,98 @@ +/* + +Copyright (C) 2016 Abhinav Tripathi + +This file is part of Pytave. + +Pytave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +Pytave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Pytave; see the file COPYING. If not, see +. + +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include + +#include "oct-py-util.h" + +using namespace boost::python; + +namespace pytave +{ + +void +get_builtins_module (boost::python::object& builtins_module) +{ +#if PY_VERSION_HEX >= 0x03000000 + builtins_module = import ("builtins"); +#else + builtins_module = import ("__builtin__"); +#endif +} + +void +get_object_from_python (const octave_value& oct_value, + boost::python::object& py_object) +{ + bool by_name; + if (oct_value.is_string ()) + by_name = true; + else if (oct_value.is_object () && oct_value.class_name () == "pyobject") + by_name = false; + else + { + py_object = boost::python::object(); //None + return; + } + + object main_module = import ("__main__"); + object builtins_module; + get_builtins_module (builtins_module); + + if (by_name) + { + std::string module; + std::string func = oct_value.string_value (); + + size_t idx = func.rfind ("."); + if (idx != std::string::npos) + { + module = func.substr (0, idx); + func = func.substr (idx + 1); + } + + object mod; + if (module.empty ()) + { + if (PyObject_HasAttrString (main_module.ptr (), func.c_str ())) + mod = main_module; + else + mod = builtins_module; + } + else + mod = import (module.c_str ()); + py_object = mod.attr (func.c_str ()); + } + else + { + octave_value_list tmp = feval ("getid", ovl (oct_value), 1); + std::string hexid = tmp(0).string_value (); + py_object = main_module.attr ("__InOct__")[hexid]; + } +} + +} diff -r 5c63651b0ec4 -r cee203ea6245 oct-py-util.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/oct-py-util.h Mon Aug 15 13:16:35 2016 -0700 @@ -0,0 +1,42 @@ +/* + +Copyright (C) 2016 Abhinav Tripathi + +This file is part of Pytave. + +Pytave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +Pytave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Pytave; see the file COPYING. If not, see +. + +*/ + +#if ! defined (pytave_oct_py_util_h) +#define pytave_oct_py_util_h + +#include + +class octave_value; + +namespace pytave +{ + +void +get_builtins_module (boost::python::object& builtins_module); + +void +get_object_from_python (const octave_value& oct_value, + boost::python::object& py_object); + +} + +#endif diff -r 5c63651b0ec4 -r cee203ea6245 pycall.cc --- a/pycall.cc Sat Aug 13 23:59:49 2016 -0700 +++ b/pycall.cc Mon Aug 15 13:16:35 2016 -0700 @@ -33,9 +33,9 @@ #define PYTAVE_DO_DECLARE_SYMBOL #include "arrayobjectdefs.h" #include "exceptions.h" +#include "oct-py-util.h" #include "octave_to_python.h" #include "python_to_octave.h" -#include "pytave_utils.h" using namespace boost::python; diff -r 5c63651b0ec4 -r cee203ea6245 pyeval.cc --- a/pyeval.cc Sat Aug 13 23:59:49 2016 -0700 +++ b/pyeval.cc Mon Aug 15 13:16:35 2016 -0700 @@ -34,8 +34,8 @@ #define PYTAVE_DO_DECLARE_SYMBOL #include "arrayobjectdefs.h" #include "exceptions.h" +#include "oct-py-util.h" #include "python_to_octave.h" -#include "pytave_utils.h" using namespace boost::python; diff -r 5c63651b0ec4 -r cee203ea6245 pyexec.cc --- a/pyexec.cc Sat Aug 13 23:59:49 2016 -0700 +++ b/pyexec.cc Mon Aug 15 13:16:35 2016 -0700 @@ -33,8 +33,8 @@ #define PYTAVE_DO_DECLARE_SYMBOL #include "arrayobjectdefs.h" #include "exceptions.h" +#include "oct-py-util.h" #include "python_to_octave.h" -#include "pytave_utils.h" using namespace boost::python; diff -r 5c63651b0ec4 -r cee203ea6245 pytave_utils.cc --- a/pytave_utils.cc Sat Aug 13 23:59:49 2016 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* - -Copyright (C) 2016 Abhinav Tripathi - -This file is part of Pytave. - -Pytave is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 3 of the License, or (at your -option) any later version. - -Pytave is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with Pytave; see the file COPYING. If not, see -. - -*/ - -#if defined (HAVE_CONFIG_H) -# include -#endif - -#include -#include - -#include "pytave_utils.h" - -using namespace boost::python; - -namespace pytave -{ - void get_builtins_module (boost::python::object& builtins_module) - { -#if PY_VERSION_HEX >= 0x03000000 - builtins_module = import ("builtins"); -#else - builtins_module = import ("__builtin__"); -#endif - } - - void get_object_from_python (const octave_value& oct_value, - boost::python::object& py_object) - { - bool by_name; - if (oct_value.is_string ()) - by_name = true; - else if (oct_value.is_object () && oct_value.class_name () == "pyobject") - by_name = false; - else - { - py_object = boost::python::object(); //None - return; - } - - object main_module = import ("__main__"); - object builtins_module; - get_builtins_module (builtins_module); - - if (by_name) - { - std::string module; - std::string func = oct_value.string_value (); - - size_t idx = func.rfind ("."); - if (idx != std::string::npos) - { - module = func.substr (0, idx); - func = func.substr (idx + 1); - } - - object mod; - if (module.empty ()) - { - if (PyObject_HasAttrString (main_module.ptr (), func.c_str ())) - mod = main_module; - else - mod = builtins_module; - } - else - mod = import (module.c_str ()); - py_object = mod.attr (func.c_str ()); - } - else - { - octave_value_list tmp = feval ("getid", ovl (oct_value), 1); - std::string hexid = tmp(0).string_value (); - py_object = main_module.attr ("__InOct__")[hexid]; - } - } -} diff -r 5c63651b0ec4 -r cee203ea6245 pytave_utils.h --- a/pytave_utils.h Sat Aug 13 23:59:49 2016 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* - -Copyright (C) 2016 Abhinav Tripathi - -This file is part of Pytave. - -Pytave is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 3 of the License, or (at your -option) any later version. - -Pytave is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with Pytave; see the file COPYING. If not, see -. - -*/ - -#if ! defined (pytave_utils_h) -#define pytave_utils_h - -#include - -namespace pytave -{ - void get_builtins_module (boost::python::object& builtins_module); - void get_object_from_python (const octave_value& oct_value, - boost::python::object& py_object); -} - -#endif diff -r 5c63651b0ec4 -r cee203ea6245 python_to_octave.cc --- a/python_to_octave.cc Sat Aug 13 23:59:49 2016 -0700 +++ b/python_to_octave.cc Mon Aug 15 13:16:35 2016 -0700 @@ -41,8 +41,8 @@ #include "arrayobjectdefs.h" #include "exceptions.h" #include "oct-py-types.h" +#include "oct-py-util.h" #include "python_to_octave.h" -#include "pytave_utils.h" using namespace boost::python;