diff package/pytave.py @ 0:4da14cce0890 pytave-branch

First launchpad.net check in.
author David Grundberg <c04dgg@cs.umu.se>
date Fri, 17 Oct 2008 12:05:46 +0200
parents
children d95e9d46f538
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package/pytave.py	Fri Oct 17 12:05:46 2008 +0200
@@ -0,0 +1,111 @@
+# -*- coding:utf-8 -*-
+#
+# Copyright 2008 David Grundberg, HÃ¥kan Fors Nilsson
+#
+# 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 2 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.  If not, see <http://www.gnu.org/licenses/>.
+
+"""Python to Octave bridge"""
+
+import _pytave
+
+_pytave.init()
+(OctaveError, ValueConvertError, ObjectConvertError) \
+				  = _pytave.get_exceptions();
+
+def feval(nargout, funcname, *arguments):
+
+	"""Executes an Octave function called funcname.
+
+	The function is set to return nargout values. Returned values are
+	stored in a tuple. If the nargout argument is less than or equal
+	to 0, an empty tuple is returned.
+
+	M-files are searched for in the Octave path.
+
+	See also the Octave documentation for the builtin Octave function
+	feval.
+
+	Type conversions
+	****************
+	
+	The following type conversions are supported:
+
+	Python to Octave
+	================
+	
+	Objects:
+		int (32-bit)        int32
+		float (64-bit)      double
+		str                 string
+		
+	Numeric Array:
+		UBYTE, SBYTE,       matrix of correct type
+		USHORT, SHORT,      -''-
+		UINT, SINT,         -''-
+		LONG,               -''-
+		DOUBLE              -''-
+
+	All other objects causes a pytave.ObjectConvertError to be
+	raised. This exception inherits TypeError.
+	
+	Octave to Python
+	================
+	
+	Scalar values to objects:
+		bool                bool
+		real scalar         float (64-bit)
+		string, sq_string   str
+		str                 string
+		
+	Matrix values to Numeric arrays:
+		int64               LONG
+		int32, uint32       INT, UINT
+		int16, uint16       SHORT, USHORT
+		int8, unint8        SBYTE, UBYTE
+
+	All other values causes a pytave.ValueConvertError to be
+	raised. This exception inherits TypeError.
+
+	Errors
+	******
+
+	Octave runtime errors are encapsulated into
+	pytave.OctaveError exceptions, base class RuntimeError.
+
+	"""
+
+	return _pytave.feval(nargout, funcname, arguments)
+
+def addpath(*arguments):
+	"""See Octave documentation"""
+	return _pytave.feval(1, "addpath", arguments)[0]
+
+def rmpath(*paths):
+	"""See Octave documentation"""
+	return _pytave.feval(1, "rmpath", paths)[0]
+
+def path(*paths):
+	"""See Octave documentation"""
+	return _pytave.feval(1, "path", paths)[0]
+
+# Emacs
+#	Local Variables:
+#	fill-column:70
+#	coding:utf-8
+#	indent-tabs-mode:t
+#	tab-width:3
+#	End:
+# vim: set textwidth=70 noexpandtab tabstop=3 :