X-Git-Url: http://www.lcore.org/git/lcore.git/blobdiff_plain/6cb6b7ede2d178e03fa817bc28474c175f5a93b9..15aaf24818741f4693440346f0b530131445bf18:/binipstuff.pas?ds=inline diff --git a/binipstuff.pas b/binipstuff.pas index 0c23533..59d123b 100755 --- a/binipstuff.pas +++ b/binipstuff.pas @@ -124,6 +124,7 @@ procedure biniplist_setcount(var l:tbiniplist;newlen:integer); procedure biniplist_free(var l:tbiniplist); procedure biniplist_addlist(var l:tbiniplist;const l2:tbiniplist); function biniplist_tostr(const l:tbiniplist):string; +function isbiniplist(const l:tbiniplist):boolean; function htons(w:word):word; function htonl(i:uint32):uint32; @@ -512,11 +513,15 @@ begin {$endif} end; -{------------------------------------------------------------------------------} +{-----------biniplist stuff--------------------------------------------------} + +const + biniplist_prefix='bipl'#0; + biniplist_prefixlen=length(biniplist_prefix); function biniplist_new:tbiniplist; begin - result := ''; + result := biniplist_prefix; end; procedure biniplist_add(var l:tbiniplist;ip:tbinip); @@ -530,7 +535,7 @@ end; function biniplist_getcount(const l:tbiniplist):integer; begin - result := length(l) div sizeof(tbinip); + result := (length(l)-biniplist_prefixlen) div sizeof(tbinip); end; function biniplist_get(const l:tbiniplist;index:integer):tbinip; @@ -539,18 +544,18 @@ begin fillchar(result,sizeof(result),0); exit; end; - move(l[index*sizeof(tbinip)+1],result,sizeof(result)); + move(l[index*sizeof(tbinip)+1+biniplist_prefixlen],result,sizeof(result)); end; procedure biniplist_set(var l:tbiniplist;index:integer;ip:tbinip); begin uniquestring(l); - move(ip,l[index*sizeof(tbinip)+1],sizeof(ip)); + move(ip,l[index*sizeof(tbinip)+1+biniplist_prefixlen],sizeof(ip)); end; procedure biniplist_setcount(var l:tbiniplist;newlen:integer); begin - setlength(l,sizeof(tbinip)*newlen); + setlength(l,(sizeof(tbinip)*newlen)+biniplist_prefixlen); end; procedure biniplist_free(var l:tbiniplist); @@ -575,4 +580,17 @@ begin result := result + ')'; end; +function isbiniplist(const l:tbiniplist):boolean; +var + i : integer; +begin + for i := 1 to biniplist_prefixlen do begin + if biniplist_prefix[i] <> l[i] then begin + result := false; + exit; + end; + end; + result := true; +end; + end.