962 lines · 26.0 KB · C
RawDownload
# 1 "runarray.m"struct _PRIVATE { struct _PRIVATE *isa; };typedef struct _PRIVATE *id;struct _SHARED {  id isa;  id clsSuper;  char *clsName;  char *clsTypes;  short clsSizInstance;  short clsSizDict;  struct _SLT *clsDispTable;  long clsStatus;  struct modDescriptor *clsMod;  unsigned clsVersion;  id clsCats;  id *clsGlbl;};extern id  (* _imp(id,char*))();extern id  (* _impSuper(id,char*))();extern struct modDescriptor  *_OBJCBIND_runarray(void);static char **selTransTbl;struct _SLT {char *_cmd;id (*_imp)();};struct modDescriptor {  char *modName;  char *modVersion;  long modStatus;  char *modMinSel;  char *modMaxSel;  id *modClsLst;  short modSelRef;  char **modSelTbl;  struct methodDescriptor *modMapTbl;};extern struct modDescriptor runarray_modDesc; # 1 "../../util/stdarg.h"#include <stdarg.h> # 1 "../../util/assert.h"#include <assert.h> # 1 "../../util/ctype.h"#include <ctype.h> # 1 "../../util/stdlib.h"#include <stdlib.h> # 1 "../../util/stdio.h"#include <stdio.h> # 1 "../../util/stdio.h"#include <stdio.h> # 1 "../../util/stddef.h"#include <stddef.h> # 53 "../../include/objcrt/objcrt.h"typedef char*SEL;typedef char*STR;typedef char BOOL;typedef FILE*IOD;typedef id SHR;# 62 "../../include/objcrt/objcrt.h"typedef id(*IMP)();  typedef void(*ARGIMP)(id,SEL,void*);# 85 "../../include/objcrt/objcrt.h"extern BOOL msgFlag;extern FILE*msgIOD;extern FILE*dbgIOD;extern BOOL allocFlag;extern BOOL dbgFlag;extern BOOL noCacheFlag;extern BOOL noNilRcvr;# 98 "../../include/objcrt/objcrt.h"SEL selUid(STR);STR selName(SEL);void dbg(char*fmt,...);void prnstack(FILE*file);void loadobjc(void*modPtr);void unloadobjc(void*modPtr);# 107 "../../include/objcrt/objcrt.h"IMP fwdimp(id,SEL,IMP);IMP fwdimpSuper(id,SEL,IMP);void fwdmsg(id,SEL,void*,ARGIMP);id selptrfwd(id,SEL,id,id,id,id);  id idincref(id obj);id idassign(id*lhs,id rhs);id iddecref(id obj); extern id(*_fileIn)(FILE*);extern BOOL(*_fileOut)(FILE*,id);extern BOOL(*_storeOn)(STR,id);extern id(*_readFrom)(STR);void setfilein(id(*f)(FILE*));void setfileout(BOOL(*f)(FILE*,id)); extern id(*_showOn)(id,unsigned); void*OC_Malloc(size_t);void*OC_MallocAtomic(size_t);void*OC_Calloc(size_t);void*OC_Realloc(void*,size_t);void*OC_Free(void*data);# 1 "../../util/string.h"#include <string.h> # 31 "ordcltn.h"typedef struct objcol{int count;int capacity;id*ptr;}*objcol_t;# 28 "intarray.h"typedef struct intary{int capacity;int*ptr;}*intary_t;# 28 "runarray.h"struct RunArray_PRIVATE { # 42 "../../include/objcrt/Object.h"id isa;# 46 "../../include/objcrt/Object.h"unsigned short attr;unsigned short objID;# 30 "runarray.h"id runs;id values;unsigned size;int laststart;int lastend;int lastsegment;}; # 28 "runarray.h"extern id  RunArray; # 28 "runarray.h"extern struct _SHARED _RunArray;extern struct _SHARED __RunArray;  # 36 "runarray.m"static id i_RunArray_reset(struct RunArray_PRIVATE *self,SEL _cmd){self->laststart= -1;return(id)self;} static id i_RunArray_check(struct RunArray_PRIVATE *self,SEL _cmd){id objcT0; # 44 "runarray.m"int i,n;id attrs;unsigned s;unsigned totalsize=0; (void)0; for(i=0,n=(objcT0=self->values,(*(unsigned(*)(id,SEL))_imp(objcT0,selTransTbl[0]))(objcT0,selTransTbl[0]));i<n;i++){id objcT1,objcT2; # 53 "runarray.m"attrs=(objcT1=self->values,(*(id(*)(id,SEL,unsigned))_imp(objcT1,selTransTbl[1]))(objcT1,selTransTbl[1],i));(void)0;s=(objcT2=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT2,selTransTbl[2]))(objcT2,selTransTbl[2],i));(void)0;totalsize+=s;} (void)0;return(id)self;} # 35 "intarray.h"extern id  IntArray; # 39 "ordcltn.h"extern id  OrdCltn; # 64 "runarray.m"static id c_RunArray_new(struct RunArray_PRIVATE *self,SEL _cmd){id objcT3,objcT4,objcT5,objcT6; # 66 "runarray.m"return(objcT3=(objcT4=__RunArray.clsSuper,(*_impSuper(objcT4,selTransTbl[3]))((id)self,selTransTbl[3])),(*_imp(objcT3,selTransTbl[4]))(objcT3,selTransTbl[4],(objcT5=IntArray,(*_imp(objcT5,selTransTbl[3]))(objcT5,selTransTbl[3])),(objcT6=OrdCltn,(*_imp(objcT6,selTransTbl[3]))(objcT6,selTransTbl[3]))));} static id i_RunArray_free(struct RunArray_PRIVATE *self,SEL _cmd){id objcT7,objcT8,objcT9,objcT10,objcT11; # 71 "runarray.m"(objcT7=self->values,(*(id(*)(id,SEL,SEL))_imp(objcT7,selTransTbl[5]))(objcT7,selTransTbl[5],selTransTbl[6]));(objcT8=(objcT9=self->values,(*_imp(objcT9,selTransTbl[6]))(objcT9,selTransTbl[6])),(*_imp(objcT8,selTransTbl[7]))(objcT8,selTransTbl[7]));(objcT10=self->runs,(*_imp(objcT10,selTransTbl[7]))(objcT10,selTransTbl[7]));return(objcT11=_RunArray.clsSuper,(*_impSuper(objcT11,selTransTbl[7]))((id)self,selTransTbl[7]));}  static id i_RunArray_values(struct RunArray_PRIVATE *self,SEL _cmd){return self->values;} static id i_RunArray_runs(struct RunArray_PRIVATE *self,SEL _cmd){return self->runs;} static id i_RunArray_runs_values_(struct RunArray_PRIVATE *self,SEL _cmd,id r,id v){id objcT12;self-># 90 "runarray.m"runs=r;self->values=v;(objcT12=(id)self,(*_imp(objcT12,selTransTbl[8]))(objcT12,selTransTbl[8]));return(id)self;} # 28 "outofbnd.h"extern id  OutOfBounds; # 28 "notfound.h"extern id  NotFound; # 96 "runarray.m"static id i_RunArray_at_(struct RunArray_PRIVATE *self,SEL _cmd,unsigned i){id objcT17,objcT20; # 98 "runarray.m"int j,n;unsigned p; if(i>=self->size){id objcT13; # 103 "runarray.m"(objcT13=OutOfBounds,(*_imp(objcT13,selTransTbl[9]))(objcT13,selTransTbl[9]));return(id)0;}# 109 "runarray.m"if(self->laststart!= -1){id objcT14; # 111 "runarray.m"if(self->laststart<=i&&i<self->lastend)return(objcT14=self->values,(*(id(*)(id,SEL,unsigned))_imp(objcT14,selTransTbl[1]))(objcT14,selTransTbl[1],self->lastsegment));if(i==self->lastend){id objcT15,objcT16;self-># 115 "runarray.m"lastsegment++;self->laststart=self->lastend;self->lastend=self->laststart+(objcT15=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT15,selTransTbl[2]))(objcT15,selTransTbl[2],self->lastsegment));return(objcT16=self->values,(*(id(*)(id,SEL,unsigned))_imp(objcT16,selTransTbl[1]))(objcT16,selTransTbl[1],self->lastsegment));}}# 124 "runarray.m"for(j=0,p=0,n=(objcT17=self->values,(*(unsigned(*)(id,SEL))_imp(objcT17,selTransTbl[0]))(objcT17,selTransTbl[0]));j<n;j++){id objcT18; # 126 "runarray.m"unsigned q=p+(objcT18=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT18,selTransTbl[2]))(objcT18,selTransTbl[2],j));if(p<=i&&i<q){id objcT19;self-># 129 "runarray.m"laststart=p;self->lastend=q;self->lastsegment=j;return(objcT19=self->values,(*(id(*)(id,SEL,unsigned))_imp(objcT19,selTransTbl[1]))(objcT19,selTransTbl[1],j));}p=q;} (objcT20=NotFound,(*_imp(objcT20,selTransTbl[9]))(objcT20,selTransTbl[9]));return(id)0;} static unsigned i_RunArray_runLengthAt_(struct RunArray_PRIVATE *self,SEL _cmd,unsigned i){id objcT23,objcT25; # 143 "runarray.m"int j,n;unsigned p; if(i>=self->size){id objcT21; # 148 "runarray.m"(objcT21=OutOfBounds,(*_imp(objcT21,selTransTbl[9]))(objcT21,selTransTbl[9]));return 0;}# 154 "runarray.m"if(self->laststart!= -1){if(self->laststart<=i&&i<self->lastend)return self->lastend-i;if(i==self->lastend){id objcT22;self-># 160 "runarray.m"lastsegment++;self->laststart=self->lastend;self->lastend=self->laststart+(objcT22=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT22,selTransTbl[2]))(objcT22,selTransTbl[2],self->lastsegment));return self->lastend-i;}}# 169 "runarray.m"for(j=0,p=0,n=(objcT23=self->values,(*(unsigned(*)(id,SEL))_imp(objcT23,selTransTbl[0]))(objcT23,selTransTbl[0]));j<n;j++){id objcT24; # 171 "runarray.m"unsigned q=p+(objcT24=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT24,selTransTbl[2]))(objcT24,selTransTbl[2],j));if(p<=i&&i<q){self->laststart=p;self->lastend=q;self->lastsegment=j;return self->lastend-i;}p=q;} (objcT25=NotFound,(*_imp(objcT25,selTransTbl[9]))(objcT25,selTransTbl[9]));return 0;}  static unsigned i_RunArray_size(struct RunArray_PRIVATE *self,SEL _cmd){return self->size;} static id i_RunArray_calcsize(struct RunArray_PRIVATE *self,SEL _cmd){id objcT26; # 194 "runarray.m"int i,n;int totalsize=0; (void)0; for(i=0,n=(objcT26=self->values,(*(unsigned(*)(id,SEL))_imp(objcT26,selTransTbl[0]))(objcT26,selTransTbl[0]));i<n;i++){id objcT27; # 201 "runarray.m"int s=(objcT27=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT27,selTransTbl[2]))(objcT27,selTransTbl[2],i)); totalsize+=s;}self-> size=totalsize;return(id)self;} static id i_RunArray_setsize_(struct RunArray_PRIVATE *self,SEL _cmd,unsigned newsize){if(self->size==newsize)return(id)self; if(self->size<newsize){id objcT28,objcT29,objcT30,objcT31,objcT32;id objcT33; # 217 "runarray.m"int n=(objcT28=self->values,(*(unsigned(*)(id,SEL))_imp(objcT28,selTransTbl[0]))(objcT28,selTransTbl[0]));int m=(objcT29=self->runs,(*(unsigned(*)(id,SEL))_imp(objcT29,selTransTbl[10]))(objcT29,selTransTbl[10]));if(m<(n+1))(objcT30=self->runs,(*(id(*)(id,SEL,unsigned))_imp(objcT30,selTransTbl[11]))(objcT30,selTransTbl[11],(2*m+1)));(objcT31=self->values,(*_imp(objcT31,selTransTbl[12]))(objcT31,selTransTbl[12],(objcT32=OrdCltn,(*_imp(objcT32,selTransTbl[3]))(objcT32,selTransTbl[3]))));(objcT33=self->runs,(*(int(*)(id,SEL,unsigned,int))_imp(objcT33,selTransTbl[13]))(objcT33,selTransTbl[13],n,(newsize-self->size)));self->size=newsize;}else{id objcT34; # 227 "runarray.m"(objcT34=(id)self,(*(id(*)(id,SEL,SEL))_imp(objcT34,selTransTbl[14]))(objcT34,selTransTbl[14],_cmd));} (void)0;return(id)self;} static id i_RunArray_addAttribute_to_(struct RunArray_PRIVATE *self,SEL _cmd,id attrib,id v){id objcT35,objcT36,objcT41; # 236 "runarray.m"int n=(objcT35=v,(*(unsigned(*)(id,SEL))_imp(objcT35,selTransTbl[0]))(objcT35,selTransTbl[0])); (objcT36=attrib,(*_imp(objcT36,selTransTbl[8]))(objcT36,selTransTbl[8]));while(n--){id objcT37,objcT38; # 241 "runarray.m"if((objcT37=attrib,(*(BOOL(*)(id,SEL,id))_imp(objcT37,selTransTbl[15]))(objcT37,selTransTbl[15],(objcT38=v,(*(id(*)(id,SEL,unsigned))_imp(objcT38,selTransTbl[1]))(objcT38,selTransTbl[1],n))))){id objcT39,objcT40; # 243 "runarray.m"id atb=(objcT39=v,(*(id(*)(id,SEL,unsigned))_imp(objcT39,selTransTbl[16]))(objcT39,selTransTbl[16],n)); (objcT40=atb,(*_imp(objcT40,selTransTbl[7]))(objcT40,selTransTbl[7])); }}if((objcT41=attrib,(*(BOOL(*)(id,SEL))_imp(objcT41,selTransTbl[17]))(objcT41,selTransTbl[17]))){id objcT42; # 251 "runarray.m"(objcT42=v,(*_imp(objcT42,selTransTbl[12]))(objcT42,selTransTbl[12],attrib)); }else{id objcT43; # 256 "runarray.m"(objcT43=attrib,(*_imp(objcT43,selTransTbl[7]))(objcT43,selTransTbl[7])); }return(id)self;} static id i_RunArray_breakat_(struct RunArray_PRIVATE *self,SEL _cmd,int i){id objcT44,objcT55; # 264 "runarray.m"int j,k,p,n; for(j=0,p=0,n=(objcT44=self->values,(*(unsigned(*)(id,SEL))_imp(objcT44,selTransTbl[0]))(objcT44,selTransTbl[0]));j<n;j++){id objcT45; # 268 "runarray.m"unsigned q=p+(objcT45=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT45,selTransTbl[2]))(objcT45,selTransTbl[2],j)); if(p==i||q==i)return(id)self;if(p<i&&q>i){id objcT46,objcT47,objcT48,objcT49,objcT50;id objcT51,objcT52,objcT53,objcT54; # 274 "runarray.m"int m=(objcT46=self->runs,(*(unsigned(*)(id,SEL))_imp(objcT46,selTransTbl[10]))(objcT46,selTransTbl[10]));id v=(objcT47=(objcT48=self->values,(*(id(*)(id,SEL,unsigned))_imp(objcT48,selTransTbl[1]))(objcT48,selTransTbl[1],j)),(*_imp(objcT47,selTransTbl[18]))(objcT47,selTransTbl[18])); if(m<(n+1))(objcT49=self->runs,(*(id(*)(id,SEL,unsigned))_imp(objcT49,selTransTbl[11]))(objcT49,selTransTbl[11],(2*m+1)));(objcT50=self->values,(*(id(*)(id,SEL,unsigned,id))_imp(objcT50,selTransTbl[19]))(objcT50,selTransTbl[19],j,v));k=n;while( --k>=j)(objcT51=self->runs,(*(int(*)(id,SEL,unsigned,int))_imp(objcT51,selTransTbl[13]))(objcT51,selTransTbl[13],k+1,(objcT52=self->runs,(*(int(*)(id,SEL,unsigned))_imp(objcT52,selTransTbl[2]))(objcT52,selTransTbl[2],k))));(objcT53=self->runs,(*(int(*)(id,SEL,unsigned,int))_imp(objcT53,selTransTbl[13]))(objcT53,selTransTbl[13],j,i-p));(objcT54=self->runs,(*(int(*)(id,SEL,unsigned,int))_imp(objcT54,selTransTbl[13]))(objcT54,selTransTbl[13],j+1,q-i));return(id)self;}p=q;}return(objcT55=(id)self,(*(id(*)(id,SEL,STR,...))_imp(objcT55,selTransTbl[20]))(objcT55,selTransTbl[20],"Error in run computation"));} static id i_RunArray_addAttribute_from_size_(struct RunArray_PRIVATE *self,SEL _cmd,id attrib,unsigned p,unsigned s){id objcT61,objcT62,objcT69,objcT70,objcT75; # 294 "runarray.m"

Lines 1–500 of 962.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t