IoObject *IoTokyoCabinetPrefixCursor_jump(IoObject *self, IoObject *locals, IoMessage *m) { /*doc TokyoCabinetPrefixCursor jump(key) Move cursor to record before key. Returns self */ IoSeq *key = IoMessage_locals_seqArgAt_(m, locals, 0); int result; UArray *p; IoSeq *prefix = IoObject_getSlot_(self, IOSYMBOL("prefix")); IOASSERT(ISSEQ(prefix), "prefix must be a sequence"); p = UArray_clone(IoSeq_rawUArray(prefix)); UArray_appendPath_(p, IoSeq_rawUArray(key)); result = tcbdbcurjump(TokyoCabinetPrefixCursor(self), (const void *)UArray_bytes(p), (int)UArray_sizeInBytes(p)); UArray_free(p); IOASSERT(TokyoCabinetPrefixCursor(self), "invalid TokyoCabinetPrefixCursor"); return IOBOOL(self, result); }
IoObject *IoDirectory_justFullPath(IoDirectory *self, IoSymbol *name) { UArray *fullPath = UArray_clone(IoSeq_rawUArray(DATA(self)->path)); UArray_appendPath_(fullPath, IoSeq_rawUArray(name)); return IoState_symbolWithUArray_copy_(IOSTATE, fullPath, 0); }