Embedding/API question
msqrd
msqrd at lanl.gov
Fri Aug 2 00:16:53 EDT 2002
Andrew - sure - thanks!
C part:
void get_value(char *Block, char *VarName, int *Value, int *counter)
{
char *ccstr;
/*retrieve function - tmode is python module that has been loaded*/
get_method = PyObject_GetAttrString(tmod, "get_value");
if (get_method == NULL)
error("Can't get python_input.get_value()");
method_args = Py_BuildValue("(ssi)", Block, VarName, counter);
if (method_args == NULL)
error("Can't build arguments lists");
py_object = PyObject_CallObject(get_method,method_args);
if (py_object == NULL)
error("Error calling python_input.get_value()");
/*convert to C*/
/* things work here great if I am returning a string! but not anything
like (8,8,8)*/
PyArg_Parse(py_object, "s", &ccstr);
printf ("here it is %s\n", ccstr);
Py_DECREF(get_method);
Py_DECREF(py_object);
Py_DECREF(method_args);
Py_DECREF(tmod);
return;
}
python part:
#!/usr/bin/python2.1
from UISF import *
# This function's purpose is to look up a variable in a
# python dictionary associated with the blocktype in question
def get_value(blocktype, var, count):
for block in NameListList.TheNameList.ListofNameLists:
if block.BlockType == blocktype:
if block.ID == count:
val = block.__dict__[var]
return val
"Andrew Wilkinson" <ajw126NO at SPAMyork.ac.uk> wrote in message
news:s4U19.2559$sH3.82946 at newsfep1-win.server.ntli.net...
> Can you post some code? That'd make it a lot easier to spot any mistakes.
>
> Andrew Wilkinson
>
> "Michelle L. Murillo" <msqrd at lanl.gov> wrote in message
> news:215127f6.0207301417.65343257 at posting.google.com...
> > Hi - I have successfully used PyArg_Parse and
> > PyInt_AsLong to parse data from python into C. The
> > data are being returned to C from a python script
> > that does a look up into a dictionary. I can
> > successfully return and print out an integer and
> > a string. But what I can't figure out is how to
> > get PyArg_Parse (or which ever API works) to
> > correctly parse a python tuple - that is we
> > have a value in the dictionary that is in the
> > form of (8,8,8). If I make this a string all
> > works fine - but with out the quotes all that
> > is returned and printed out is garbage.
> >
> > Any ideas?
> >
> > TIA
> > Michelle
>
>
More information about the Python-list
mailing list