Date *Date_fromSerialization(Date *self, UArray *serialization) { self->tv.tv_sec = UArray_longAt_(serialization, 0); self->tv.tv_usec = UArray_longAt_(serialization, 1); self->tz.tz_minuteswest = UArray_longAt_(serialization, 2); self->tz.tz_dsttime = UArray_longAt_(serialization, 3); return self; }
IoObject *IoDirectory_itemForDirent_(IoDirectory *self, struct dirent *dp) { IoSymbol *pathString; int isDir; UArray *path = IoSeq_rawUArray(DATA(self)->path); UArray *ba = UArray_clone(path); /* printf("IoDirectory_itemForDirent_ path = \"%s\" %i\n", p, path->itemSize); printf("IoDirectory_itemForDirent_ ba = \"%s\" %i\n", UArray_asCString(ba), ba->itemSize); */ if (UArray_size(ba) && !IS_PATH_SEPERATOR(UArray_longAt_(ba, UArray_size(ba) - 1))) { UArray_appendCString_(ba, IO_PATH_SEPARATOR); } UArray_appendCString_(ba, dp->d_name); pathString = IoState_symbolWithUArray_copy_(IOSTATE, ba, 0); isDir = isDirectory(dp, CSTRING(pathString)); if (isDir) { return IoDirectory_newWithPath_(IOSTATE, pathString); } return IoFile_newWithPath_(IOSTATE, pathString); }
IO_METHOD(IoSeq, at) { /*doc Sequence at(aNumber) Returns a value at the index specified by aNumber. Returns nil if the index is out of bounds. */ size_t i = IoMessage_locals_sizetArgAt_(m, locals, 0); UArray *a = DATA(self); //IOASSERT((i < UArray_size(DATA(self))), "index out of bounds"); if(i >= UArray_size(DATA(self))) return IONIL(self); if(UArray_isFloatType(a)) { return IONUMBER(UArray_doubleAt_(a, i)); } else { return IONUMBER(UArray_longAt_(a, i)); } }