/*
* call-seq:
* res[ n ]
*
* Returns the tuple (row) corresponding to _n_. Returns +nil+ if <tt>_n_ >= res.num_tuples</tt>.
*
* Equivalent to <tt>res.result[n]</tt>.
*/
static VALUE
pgresult_aref(argc, argv, obj)
int argc;
VALUE *argv;
VALUE obj;
{
PGresult *result;
VALUE a1, a2, val;
int i, j, nf, nt;
result = get_pgresult(obj);
nt = PQntuples(result);
nf = PQnfields(result);
switch (rb_scan_args(argc, argv, "11", &a1, &a2)) {
case 1:
i = NUM2INT(a1);
if( i >= nt ) return Qnil;
val = rb_ary_new();
for (j=0; j<nf; j++) {
VALUE value = fetch_pgresult(result, i, j);
rb_ary_push(val, value);
}
return val;
case 2:
i = NUM2INT(a1);
if( i >= nt ) return Qnil;
j = NUM2INT(a2);
if( j >= nf ) return Qnil;
return fetch_pgresult(result, i, j);
default:
return Qnil; /* not reached */
}
}