*** empty log message ***

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dave Beazley 1999-08-12 00:25:40 +00:00
commit fd037676d5
5 changed files with 50 additions and 17 deletions

View file

@ -292,6 +292,23 @@ int DohPrintf(DOH *obj, char *format, ...) {
return ret; return ret;
} }
/* DohCopyto(DOH *in, DOH *out) */
int DohCopyto(DOH *in, DOH *out) {
int nbytes = 0, ret;
char buffer[16384];
while (1) {
ret = Read(in,buffer,16384);
if (ret > 0) {
Write(out,buffer,ret);
nbytes += ret;
} else {
return nbytes;
}
}
}
/* Split by a character */ /* Split by a character */
DOH *DohSplit(DOH *in, char *chs, int nsplits) { DOH *DohSplit(DOH *in, char *chs, int nsplits) {

View file

@ -317,7 +317,6 @@ Hash_getattr(DOH *ho, DOH *k) {
HashNode *n; HashNode *n;
Hash *h; Hash *h;
h = (Hash *) ho; h = (Hash *) ho;
hv = Hashval(k) % h->hashsize; hv = Hashval(k) % h->hashsize;
n = h->hashtable[hv]; n = h->hashtable[hv];

View file

@ -349,7 +349,6 @@ List_dump(DOH *lo, DOH *out) {
return nsent; return nsent;
} }
#ifdef SORT
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* void List_sort(DOH *DOH) * void List_sort(DOH *DOH)
* *
@ -369,8 +368,3 @@ void List_sort(DOH *so) {
l = (List *) so; l = (List *) so;
qsort(l->items,l->nitems,sizeof(DOH *), objcmp); qsort(l->items,l->nitems,sizeof(DOH *), objcmp);
} }
#endif

View file

@ -238,9 +238,24 @@ int
String_cmp(DOH *so1, DOH *so2) String_cmp(DOH *so1, DOH *so2)
{ {
String *s1, *s2; String *s1, *s2;
char *c1, *c2;
int maxlen,i,ret;
s1 = (String *) so1; s1 = (String *) so1;
s2 = (String *) so2; s2 = (String *) so2;
return strcmp(s1->str,s2->str); maxlen = s1->len;
if (s2->len < maxlen) maxlen = s2->len;
c1 = s1->str;
c2 = s2->str;
for (i = 0; i < maxlen; i++) {
if (*c1 != *c2) break;
}
if (i < maxlen) {
if (*c1 < *c2) return -1;
else return 1;
}
if (s1->len == s2->len) return 0;
if (s1->len > s2->len) return 1;
return -1;
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
@ -251,7 +266,7 @@ int String_hash(DOH *so) {
String *s = (String *) so; String *s = (String *) so;
char *c; char *c;
int i, h = 0, len; int i, h = 0, len;
if (s->hashkey >= 0) return s->hashkey; /* if (s->hashkey >= 0) return s->hashkey; */
c = s->str; c = s->str;
len = s->len > 50 ? 50 : s->len; len = s->len > 50 ? 50 : s->len;
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
@ -400,6 +415,7 @@ String_insert(DOH *so, int pos, DOH *str)
int String_delitem(DOH *so, int pos) int String_delitem(DOH *so, int pos)
{ {
String *s = (String *) so; String *s = (String *) so;
s->hashkey = -1;
if (pos == DOH_END) pos = s->len-1; if (pos == DOH_END) pos = s->len-1;
if (pos == DOH_BEGIN) pos = 0; if (pos == DOH_BEGIN) pos = 0;
@ -461,13 +477,14 @@ int
String_write(DOH *so, void *buffer, int len) { String_write(DOH *so, void *buffer, int len) {
int reallen, newlen, newmaxsize; int reallen, newlen, newmaxsize;
String *s = (String *) so; String *s = (String *) so;
s->hashkey = -1;
newlen = s->sp + len+1; newlen = s->sp + len+1;
if (newlen > s->maxsize) { if (newlen > s->maxsize) {
assert(s->str = (char *) realloc(s->str,newlen)); assert(s->str = (char *) realloc(s->str,newlen));
s->maxsize = newlen; s->maxsize = newlen;
s->len = s->sp + len; s->len = s->sp + len;
} }
if (newlen > s->len) s->len = newlen; if ((s->sp+len) > s->len) s->len = s->sp + len;
memmove(s->str+s->sp,buffer,len); memmove(s->str+s->sp,buffer,len);
s->sp += len; s->sp += len;
s->pbi = 0; s->pbi = 0;
@ -516,6 +533,7 @@ String_tell(DOH *so) {
int int
String_putc(DOH *so, int ch) { String_putc(DOH *so, int ch) {
String *s = (String *) so; String *s = (String *) so;
s->hashkey = -1;
if (s->sp >= s->len) { if (s->sp >= s->len) {
String_addchar(s,(char) ch); String_addchar(s,(char) ch);
} else { } else {
@ -534,6 +552,7 @@ String_putc(DOH *so, int ch) {
int String_getc(DOH *so) { int String_getc(DOH *so) {
String *s = (String *) so; String *s = (String *) so;
if (s->pbi) { if (s->pbi) {
return (int) s->pb[--s->pbi]; return (int) s->pb[--s->pbi];
} }

View file

@ -253,6 +253,9 @@ extern void String_replace(DOH *s, DOH *token, DOH *rep, int flags);
extern DOH *NewFile(char *file, char *mode); extern DOH *NewFile(char *file, char *mode);
extern DOH *NewFileFromFile(FILE *f); extern DOH *NewFileFromFile(FILE *f);
extern DOH *NewFileFromFd(int fd); extern DOH *NewFileFromFd(int fd);
extern int DohCopyto(DOH *input, DOH *output);
#define Copyto DohCopyto
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* List * List
@ -276,6 +279,7 @@ extern DOH *Hash_keys(DOH *);
extern DOH *NewVoid(void *ptr, void (*del)(void *)); extern DOH *NewVoid(void *ptr, void (*del)(void *));
extern DOH *DohSplit(DOH *input, char *chs, int nsplits); extern DOH *DohSplit(DOH *input, char *chs, int nsplits);
#define Split DohSplit #define Split DohSplit