Author: kkaempf
Date: Mon Aug 4 18:50:39 2008
New Revision: 10740
URL: http://svn.opensuse.org/viewcvs/zypp?rev=10740&view=rev
Log:
enable more Python, still incomplete
Modified:
trunk/sat-solver/bindings/repo.i
trunk/sat-solver/bindings/satsolver.i
trunk/sat-solver/bindings/solvable.i
Modified: trunk/sat-solver/bindings/repo.i
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/repo.i?rev=10740&r1=10739&r2=10740&view=diff
==============================================================================
--- trunk/sat-solver/bindings/repo.i (original)
+++ trunk/sat-solver/bindings/repo.i Mon Aug 4 18:50:39 2008
@@ -10,6 +10,8 @@
%extend Repo {
Repo( Pool *pool, const char *reponame )
{ return repo_create( pool, reponame ); }
+ ~Repo()
+ {}
int size()
{ return $self->nsolvables; }
@@ -71,8 +73,23 @@
XSolvable *add( XSolvable *xs )
{ return xsolvable_add( $self, xs ); }
+#if defined(SWIGRUBY)
void each()
{ repo_xsolvables_iterate( $self, generic_xsolvables_iterate_callback ); }
+#endif
+
+#if defined(SWIGPYTHON)
+ PyObject *__iter__()
+ {
+ fprintf(stderr," Repo.iter()\n");
+ return NULL;
+ }
+ PyObject *next()
+ {
+ fprintf(stderr," Repo.next()\n");
+ return NULL;
+ }
+#endif
#if defined(SWIGRUBY)
/* %rename is rejected by swig for [] */
Modified: trunk/sat-solver/bindings/satsolver.i
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/satsolver.i?rev=10740&r1=10739&r2=10740&view=diff
==============================================================================
--- trunk/sat-solver/bindings/satsolver.i (original)
+++ trunk/sat-solver/bindings/satsolver.i Mon Aug 4 18:50:39 2008
@@ -22,7 +22,28 @@
/* HELPER CODE */
/*=============================================================*/
+#if defined(SWIGPYTHON)
+#define Swig_Test(x) (x == Py_None)
+#define Swig_True Py_True
+#define Swig_False Py_False
+#define Swig_Null Py_None
+#define Swig_Type PyObject*
+#define Swig_Int(x) PyInt_FromLong(x)
+#define Swig_String(x) PyString_FromString(x)
+#define Swig_Array() PyList_New(0)
+#define Swig_Append(x,y) PyList_Append(x,y)
+#endif
+
#if defined(SWIGRUBY)
+#define Swig_Test(x) NIL_P(x)
+#define Swig_True Qtrue
+#define Swig_False Qfalse
+#define Swig_Null Qnil
+#define Swig_Type VALUE
+#define Swig_Int(x) INT2FIX(x)
+#define Swig_String(x) rb_str_new2(x)
+#define Swig_Array() rb_ary_new()
+#define Swig_Append(x,y) rb_ary_push(x,y)
#include
#include
#endif
Modified: trunk/sat-solver/bindings/solvable.i
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/solvable.i?rev=10740&r1=10739&r2=10740&view=diff
==============================================================================
--- trunk/sat-solver/bindings/solvable.i (original)
+++ trunk/sat-solver/bindings/solvable.i Mon Aug 4 18:50:39 2008
@@ -4,8 +4,6 @@
%{
-#if defined(SWIGRUBY)
-
/*
* iterating over attributes of a (x)solvable ('yield' in Ruby)
*/
@@ -13,7 +11,7 @@
static int
xsolvable_each_attr_callback( Solvable *s, Repodata *data, Repokey *key, KeyValue *kv )
{
- static VALUE value = Qnil;
+ static Swig_Type value = Swig_Null;
/*
* !! keep the order of case statements according to knownid.h !!
@@ -22,68 +20,71 @@
switch( key->type )
{
case REPOKEY_TYPE_VOID:
- value = Qtrue;
+ value = Swig_True;
break;
case REPOKEY_TYPE_CONSTANT:
case REPOKEY_TYPE_NUM:
case REPOKEY_TYPE_U32:
- value = INT2FIX( key->size );
+ value = Swig_Int( key->size );
break;
case REPOKEY_TYPE_CONSTANTID:
- value = INT2FIX( key->size );
+ value = Swig_Int( key->size );
break;
case REPOKEY_TYPE_ID:
if (data->localpool)
- value = rb_str_new2( stringpool_id2str( &data->spool, kv->id ) );
+ value = Swig_String( stringpool_id2str( &data->spool, kv->id ) );
else
- value = rb_str_new2( id2str( data->repo->pool, kv->id ) );
+ value = Swig_String( id2str( data->repo->pool, kv->id ) );
break;
case REPOKEY_TYPE_DIR:
- value = Qnil;
+ value = Swig_Null;
break;
case REPOKEY_TYPE_STR:
- value = rb_str_new2( kv->str );
+ value = Swig_String( kv->str );
break;
case REPOKEY_TYPE_IDARRAY:
- if (NIL_P(value))
- value = rb_ary_new(); /* create new Array on first call */
+ if (Swig_Test(value))
+ value = Swig_Array(); /* create new Array on first call */
if (data->localpool)
- rb_ary_push( value, rb_str_new2( stringpool_id2str( &data->spool, kv->id ) ) );
+ Swig_Append( value, Swig_String( stringpool_id2str( &data->spool, kv->id ) ) );
else
- rb_ary_push( value, rb_str_new2( id2str( data->repo->pool, kv->id ) ) );
+ Swig_Append( value, Swig_String( id2str( data->repo->pool, kv->id ) ) );
if (kv->eof)
break; /* yield ! */
return 0; /* continue loop */
break;
case REPOKEY_TYPE_REL_IDARRAY:
- value = Qnil;
+ value = Swig_Null;
break;
case REPOKEY_TYPE_DIRSTRARRAY:
- value = rb_str_new2( repodata_dir2str(data,kv->id, kv->str) );
+ value = Swig_String( repodata_dir2str(data,kv->id, kv->str) );
break;
case REPOKEY_TYPE_DIRNUMNUMARRAY:
- value = rb_ary_new();
- rb_ary_push( value, rb_str_new2( repodata_dir2str(data, kv->id, 0) ) );
- rb_ary_push( value, INT2FIX(kv->num) );
- rb_ary_push( value, INT2FIX(kv->num2) );
+ value = Swig_Array();
+ Swig_Append( value, Swig_String( repodata_dir2str(data, kv->id, 0) ) );
+ Swig_Append( value, Swig_Int(kv->num) );
+ Swig_Append( value, Swig_Int(kv->num2) );
break;
case REPOKEY_TYPE_MD5:
case REPOKEY_TYPE_SHA1:
case REPOKEY_TYPE_SHA256:
- value = rb_str_new2( repodata_chk2str(data, key->type, (unsigned char *)kv->str));
+ value = Swig_String( repodata_chk2str(data, key->type, (unsigned char *)kv->str));
break;
case REPOKEY_TYPE_COUNTED:
- value = rb_str_new2( kv->eof == 0 ? "open" : kv->eof == 1 ? "next" : "close" );
+ value = Swig_String( kv->eof == 0 ? "open" : kv->eof == 1 ? "next" : "close" );
break;
default:
- value = Qnil;
+ value = Swig_Null;
break;
}
- VALUE result = rb_ary_new();
- rb_ary_push( result, rb_str_new2( id2str( data->repo->pool, key->name ) ) );
- rb_ary_push( result, value );
+ Swig_Type result = Swig_Array();
+ Swig_Append( result, Swig_String( id2str( data->repo->pool, key->name ) ) );
+ Swig_Append( result, value );
+#if defined(SWIGRUBY)
rb_yield( result );
+#endif
+
return 0;
}
@@ -95,7 +96,7 @@
static int
xsolvable_attr_lookup_callback( void *cbdata, Solvable *s, Repodata *data, Repokey *key, KeyValue *kv )
{
- VALUE *result = (VALUE *)cbdata;
+ Swig_Type *result = (Swig_Type *)cbdata;
/*
* !! keep the order of case statements according to knownid.h !!
@@ -104,67 +105,67 @@
switch( key->type )
{
case REPOKEY_TYPE_VOID:
- *result = Qtrue;
+ *result = Swig_True;
break;
case REPOKEY_TYPE_CONSTANT:
- *result = INT2FIX( key->size );
+ *result = Swig_Int( key->size );
break;
case REPOKEY_TYPE_CONSTANTID:
- *result = INT2FIX( key->size );
+ *result = Swig_Int( key->size );
break;
case REPOKEY_TYPE_ID:
if (data->localpool)
- *result = rb_str_new2( stringpool_id2str( &data->spool, kv->id ) );
+ *result = Swig_String( stringpool_id2str( &data->spool, kv->id ) );
else
- *result = rb_str_new2( id2str( data->repo->pool, kv->id ) );
+ *result = Swig_String( id2str( data->repo->pool, kv->id ) );
break;
case REPOKEY_TYPE_NUM:
- *result = INT2FIX( kv->num );
+ *result = Swig_Int( kv->num );
break;
case REPOKEY_TYPE_U32:
- *result = INT2FIX( kv->num );
+ *result = Swig_Int( kv->num );
break;
case REPOKEY_TYPE_DIR:
- *result = Qnil; /*FIXME*/
+ *result = Swig_Null; /*FIXME*/
break;
case REPOKEY_TYPE_STR:
- *result = rb_str_new2( kv->str );
+ *result = Swig_String( kv->str );
break;
case REPOKEY_TYPE_IDARRAY:
- if (NIL_P(*result))
- *result = rb_ary_new(); /* create new Array on first call */
+ if (Swig_Test(*result))
+ *result = Swig_Array(); /* create new Array on first call */
if (data->localpool)
- rb_ary_push( *result, rb_str_new2( stringpool_id2str( &data->spool, kv->id ) ) );
+ Swig_Append( *result, Swig_String( stringpool_id2str( &data->spool, kv->id ) ) );
else
- rb_ary_push( *result, rb_str_new2( id2str( data->repo->pool, kv->id ) ) );
+ Swig_Append( *result, Swig_String( id2str( data->repo->pool, kv->id ) ) );
return kv->eof?1:0;
break;
case REPOKEY_TYPE_REL_IDARRAY:
- *result = Qnil; /*FIXME*/
+ *result = Swig_Null; /*FIXME*/
break;
case REPOKEY_TYPE_DIRSTRARRAY:
- *result = Qnil; /*FIXME*/
+ *result = Swig_Null; /*FIXME*/
break;
case REPOKEY_TYPE_DIRNUMNUMARRAY:
- *result = Qnil; /*FIXME*/
+ *result = Swig_Null; /*FIXME*/
break;
case REPOKEY_TYPE_MD5:
- *result = Qnil; /*FIXME*/
+ *result = Swig_Null; /*FIXME*/
break;
case REPOKEY_TYPE_SHA1:
- *result = Qnil; /*FIXME*/
+ *result = Swig_Null; /*FIXME*/
break;
case REPOKEY_TYPE_SHA256:
- *result = Qnil; /*FIXME*/
+ *result = Swig_Null; /*FIXME*/
break;
default:
- *result = Qnil;
+ *result = Swig_Null;
return 0;
break;
}
return 1;
}
-#endif /* SWIGRUBY */
+
%}
@@ -205,7 +206,9 @@
void set_vendor(const char *vendor)
{ xsolvable_solvable($self)->vendor = str2id( $self->pool, vendor, 1 ); }
+#if defined(SWIGRUBY)
%rename("to_s") asString();
+#endif
const char *asString()
{
if ( $self->id == ID_NULL ) return "";
@@ -294,6 +297,7 @@
* Attributes (from Repodata / Repokey)
*/
+
#if defined(SWIGRUBY)
/*
@@ -302,9 +306,13 @@
/* %rename is rejected by swig for [] */
%alias attr "[]";
-
VALUE attr( VALUE attrname )
+#endif
+#if defined(SWIGPYTHON)
+ PyObject *attr( const char *name )
+#endif
{
+#if defined(SWIGRUBY)
char *name;
if (SYMBOL_P(attrname)) {
@@ -317,22 +325,22 @@
}
else
name = StringValuePtr( attrname );
-
+#endif
if (!name)
- rb_raise( rb_eArgError, "Solvable::[] called with empty arg" );
-
+ SWIG_exception( SWIG_ValueError, "Attribute name missing" );
+
/* key existing in pool ? */
Id key;
key = str2id( $self->pool, name, 0);
if (key == ID_NULL)
- rb_raise( rb_eArgError, "No such attribute '%s'", name );
-
- VALUE result = Qnil;
+ SWIG_exception( SWIG_ValueError, "No such attribute name" );
+
+ Swig_Type result = Swig_Null;
Solvable *s = xsolvable_solvable($self);
if (repo_lookup( s, key, xsolvable_attr_lookup_callback, &result ))
return result;
-
- return Qnil;
+fail:
+ return Swig_Null;
}
/*
@@ -352,9 +360,16 @@
/*
* check existance of attribute
*/
+
+#if defined(SWIGRUBY)
%rename( "attr?" ) attr_exists( VALUE attrname );
VALUE attr_exists( VALUE attrname )
+#endif
+#if defined(SWIGPYTHON)
+ PyObject *attr_exists( const char *name )
+#endif
{
+#if defined(SWIGRUBY)
char *name;
if (SYMBOL_P(attrname)) {
@@ -367,16 +382,14 @@
}
else
name = StringValuePtr( attrname );
+#endif
if (!name)
- return Qfalse;
-
+ return Swig_False;
/* key existing in pool ? */
Id key;
key = str2id( $self->pool, name, 0);
- return (key == ID_NULL) ? Qfalse : Qtrue;
+ return (key == ID_NULL) ? Swig_False : Swig_True;
}
-
-#endif /* SWIGRUBY */
}
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org