Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
arrays
#3
SA_Alloc
Code:
Copy      Help
;/
function# numelem

;Creates dynamic str array

;EXAMPLE: see function StringToArray


ret calloc(numelem sizeof(str))

SA_Realloc
Code:
Copy      Help
;/
function# str*a numelem

;Resizes dynamic str array


dll msvcrt memset !*dest c count

if(!a) ret calloc(numelem sizeof(str))

int i lena(SA_Len(a)) diff(numelem-lena)

if(diff>0) ;;grow
,a=realloc(a numelem*sizeof(str))
,memset(a+(lena*sizeof(str)) 0 diff*sizeof(str))
else if(diff<0) ;;shrink
,for(i numelem lena) a[i].all
,a=realloc(a numelem*sizeof(str))

ret a

SA_Free
Code:
Copy      Help
;/
function# str*a

;Frees dynamic str array

if(!a) ret

int i
for(i 0 SA_Len(a)) a[i].all
free a

SA_Len
Code:
Copy      Help
;/
function# str*a

;Returns number of elements in dynamic str array

dll# msvcrt _msize !*v

if(a) ret _msize(a)/sizeof(str)

_____________________

StringToArray
Code:
Copy      Help
;/
function# $s [$delim] [flags]

;Parses string s and returns str array.
;Arguments same as for str.gett()

;EXAMPLE
;str s = "one two three four five six seven eight nine ten eleven twelve"
;
;str* a=StringToArray(s)
;
;int i
;for(i 0 SA_Len(a)) out a[i]
;
;a=SA_Free(a)


int i na=10
str* a=SA_Alloc(na)

for i 0 1000000000
,if(i=na) na+na; a=SA_Realloc(a na)
,if(a[i].gett(s -i delim flags)<0) break

ret SA_Realloc(a i)


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)