MongoDB-Async
view release on metacpan or search on metacpan
xs/Cursor.xs view on Meta::CPAN
CODE:
Newxz(cursor, 1, mongo_cursor);
// attach a mongo_cursor* to the MongoDB::Async::Cursor
perl_mongo_attach_ptr_to_instance(self, cursor, &cursor_vtbl);
bool
has_next (self)
SV *self
PREINIT:
mongo_cursor *cursor;
CODE:
cursor = get_cursor(self);
RETVAL = has_next(self, cursor, SvIV( perl_mongo_call_reader(self, "_limit") ) );
OUTPUT:
RETVAL
SV *
next (self)
SV *self
PREINIT:
mongo_cursor *cursor;
CODE:
SV *client_sv = perl_mongo_call_reader( self, "_client" );
RETVAL = next(self, get_cursor(self) , SvIV( perl_mongo_call_reader(self, "_limit") ),client_sv );
if(!RETVAL){
RETVAL = newSV(0);
}
OUTPUT:
RETVAL
SV *
reset (self)
SV *self
PREINIT:
mongo_cursor *cursor;
CODE:
cursor = (mongo_cursor*)perl_mongo_get_ptr_from_instance(self, &cursor_vtbl);
cursor->buf.pos = cursor->buf.start;
cursor->at = 0;
cursor->num = 0;
cursor->started_iterating = 0;
hv_store(SvRV(self), "started_iterating", strlen("started_iterating"), newSViv(0), 0);;
RETVAL = SvREFCNT_inc(self);
OUTPUT:
RETVAL
SV *
data (self)
SV *self
PREINIT:
SV* nextval;
PPCODE:
mongo_cursor *cursor = get_cursor(self);
int limit = SvIV( perl_mongo_call_reader(self, "_limit") );
AV *ret = newAV();
SV *client_sv = perl_mongo_call_reader( self, "_client" );
while(nextval = next(self, cursor, limit, client_sv) ){
av_push(ret, nextval);
};
ST(0) = sv_2mortal(newRV_noinc(ret));
XSRETURN(1);
SV *
info (self)
SV *self
PREINIT:
mongo_cursor *cursor;
HV *hv;
CODE:
cursor = (mongo_cursor*)perl_mongo_get_ptr_from_instance(self, &cursor_vtbl);
hv = newHV();
hv_store(hv, "flag", strlen("flag"), newSViv(cursor->flag), 0);
hv_store(hv, "cursor_id", strlen("cursor_id"),
newSViv(cursor->cursor_id), 0);
hv_store(hv, "start", strlen("start"), newSViv(cursor->start), 0);
hv_store(hv, "at", strlen("at"), newSViv(cursor->at), 0);
hv_store(hv, "num", strlen("num"), newSViv(cursor->num), 0);
RETVAL = newRV_noinc((SV*)hv);
OUTPUT:
RETVAL
SV *
_started_iterating(self, value)
SV *self
int value
PREINIT:
mongo_cursor *cursor;
CODE:
cursor = (mongo_cursor*)perl_mongo_get_ptr_from_instance(self, &cursor_vtbl);
RETVAL = newSViv(cursor->started_iterating);
cursor->started_iterating = value;
OUTPUT:
RETVAL
void
DESTROY (self)
SV *self
PREINIT:
mongo_link *link;
( run in 0.693 second using v1.01-cache-2.11-cpan-5511b514fd6 )