Mailinglist Archive: yast-commit (535 mails)

< Previous Next >
[yast-commit] r41691 - in /trunk/python-bindings/src: YCPDeclarations.h YCPTypes/Code.cc YPython.cc YPythonNamespace.cc
  • From: juhliarik@xxxxxxxxxxxxxxxx
  • Date: Wed, 31 Oct 2007 14:34:34 -0000
  • Message-id: <20071031143434.C0F0D33DB6@xxxxxxxxxxxxxxxx>
Author: juhliarik
Date: Wed Oct 31 15:34:34 2007
New Revision: 41691

URL: http://svn.opensuse.org/viewcvs/yast?rev=41691&view=rev
Log:
added arguments for calling functions from python in YCP via eval
(e.g.Sequencer)

Modified:
trunk/python-bindings/src/YCPDeclarations.h
trunk/python-bindings/src/YCPTypes/Code.cc
trunk/python-bindings/src/YPython.cc
trunk/python-bindings/src/YPythonNamespace.cc

Modified: trunk/python-bindings/src/YCPDeclarations.h
URL:
http://svn.opensuse.org/viewcvs/yast/trunk/python-bindings/src/YCPDeclarations.h?rev=41691&r1=41690&r2=41691&view=diff
==============================================================================
--- trunk/python-bindings/src/YCPDeclarations.h (original)
+++ trunk/python-bindings/src/YCPDeclarations.h Wed Oct 31 15:34:34 2007
@@ -48,7 +48,6 @@
*/
std::vector<cache_function_t *> _cache;

-
/**
* Private construct.
* Call YCPDeclarations::instance() to get pointer to YCPDeclarations
@@ -56,7 +55,6 @@
*/
YCPDeclarations();

-
/**
* Return item from function map which has key key.
* Return borrowed reference!
@@ -88,7 +86,7 @@
const cache_function_t *_getCachedFunction(PyFunctionObject *func) const;

public:
- ~YCPDeclarations();
+ ~YCPDeclarations();

/**
* Return number of parameters in declaration or -1 if function is not
registered.

Modified: trunk/python-bindings/src/YCPTypes/Code.cc
URL:
http://svn.opensuse.org/viewcvs/yast/trunk/python-bindings/src/YCPTypes/Code.cc?rev=41691&r1=41690&r2=41691&view=diff
==============================================================================
--- trunk/python-bindings/src/YCPTypes/Code.cc (original)
+++ trunk/python-bindings/src/YCPTypes/Code.cc Wed Oct 31 15:34:34 2007
@@ -21,12 +21,14 @@

self = (Code *)type->tp_alloc(type, 0);
if (self != NULL){
- self->value = Py_None;
+
+ self->value = PyTuple_New(0);
if (self->value == NULL){
Py_XDECREF(self);
return NULL;
}

+
self->hash = -1;
}

@@ -51,35 +53,38 @@
return -1;
}

- // value:
+ // check if first argument is function
+ tmp = PyTuple_GetItem(args, 0);
+ if (!PyFunction_Check(tmp)) {
+ PyErr_SetString(PyExc_TypeError, ": argument 1 must be function");
+ return -1;
+ }
+ // value
+ value = PyTuple_GetSlice(args, 0, args_size); //args;
+ if (value != NULL) {
+ tmp = self->value;
+ self->value = value;
+ Py_XDECREF(tmp);
+ }
+
+
+
+
+
+ /*
value = PyTuple_GetItem(args, 0);
if (PyFunction_Check(value)){
tmp = PyFunction_GetCode(self->value);
Py_INCREF(value);
self->value = value;
- /*
- printf("Code_init...\n");
- pReturn = PyObject_CallObject(self->value, NULL);
- if (pReturn != NULL)
- printf("Calling value: %d",PyInt_AsLong(pReturn));
- else
- printf("pReturn == NULL");*/
Py_XDECREF(tmp);
} else {
PyErr_SetString(PyExc_TypeError, ": argument 1 must be function");
return -1;
}
- /*
- // value:
- if (args_size > 1){
- value = PyTuple_GetSlice(args, 1, args_size); // return new reference
- if (value != NULL){
- tmp = self->value;
- self->value = value;
- Py_XDECREF(tmp);
- }
- }
+
*/
+
return 0;
}


Modified: trunk/python-bindings/src/YPython.cc
URL:
http://svn.opensuse.org/viewcvs/yast/trunk/python-bindings/src/YPython.cc?rev=41691&r1=41690&r2=41691&view=diff
==============================================================================
--- trunk/python-bindings/src/YPython.cc (original)
+++ trunk/python-bindings/src/YPython.cc Wed Oct 31 15:34:34 2007
@@ -142,7 +142,7 @@
//create python string for name of module
pModuleName = PyString_FromString(module_name.c_str());
//check if dictionary contain "dictionary" for module
- if ( PyDict_Contains(YPython::_pMainDicts, pModuleName) == 0) {
+ if (PyDict_Contains(YPython::_pMainDicts, pModuleName) == 0) {
pMain = PyImport_ImportModule(module_name.c_str());
if (pMain == NULL){
y2error("Can't import module %s", module_name.c_str());
@@ -689,9 +689,20 @@

PyObject * pReturn;
YCPValue result = YCPVoid();
-
+ PyObject * pFunction;
+ PyObject * pArgs = NULL;
+ int args_size;
+
+ args_size = PyTuple_Size(_pFunc);
+
+ if (args_size >=1) {
+ pFunction = PyTuple_GetItem(_pFunc, 0);
+ if (args_size > 1) {
+ pArgs = PyTuple_GetSlice(_pFunc, 1, args_size);
+ }
+ }
if (Py_IsInitialized()) {
- pReturn = PyObject_CallObject(_pFunc, NULL);
+ pReturn = PyObject_CallObject(pFunction, pArgs);
//convert python value to YCPValue
if (pReturn) {
result = YPython::yPython()->PythonTypeToYCPType(pReturn); // create
YCP value

Modified: trunk/python-bindings/src/YPythonNamespace.cc
URL:
http://svn.opensuse.org/viewcvs/yast/trunk/python-bindings/src/YPythonNamespace.cc?rev=41691&r1=41690&r2=41691&view=diff
==============================================================================
--- trunk/python-bindings/src/YPythonNamespace.cc (original)
+++ trunk/python-bindings/src/YPythonNamespace.cc Wed Oct 31 15:34:34 2007
@@ -155,6 +155,7 @@

//Declarations (using YPCDelcarations python module)
YCPDeclarations *decl = YCPDeclarations::instance();
+ //YCPDeclarations *decl = new YCPDeclarations();

FunctionTypePtr sym_tp;
std::vector<constTypePtr> list_of_types;

--
To unsubscribe, e-mail: yast-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: yast-commit+help@xxxxxxxxxxxx

< Previous Next >
This Thread
  • No further messages