*** empty log message ***

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@12 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dave Beazley 1999-08-11 13:21:18 +00:00
commit 89d5b286df
8 changed files with 102 additions and 16 deletions

View file

@ -422,6 +422,28 @@ DOH *DohNextkey(DOH *obj) {
return 0;
}
int DohGetInt(DOH *obj, DOH *name) {
int ival;
DOH *val;
val = Getattr(obj,name);
if (!val) return 0;
if (String_check(val)) {
return atoi(Data(val));
}
return 0;
}
double DohGetDouble(DOH *obj, DOH *name) {
double dval;
DOH *val;
val = Getattr(obj,name);
if (!val) return 0;
if (String_check(val)) {
return atof(Data(val));
}
return 0;
}
/* ----------------------------------------------------------------------
* Sequence Interface
* ---------------------------------------------------------------------- */

View file

@ -171,7 +171,10 @@ File_check(DOH *f)
int
File_read(DOH *so, void *buffer, int len) {
File *s = (File *) so;
return (size_t) fread(buffer,1,len,s->filep);
if (s->filep)
return (size_t) fread(buffer,1,len,s->filep);
else
return (size_t) read(s->fd,buffer,len);
}
/* -----------------------------------------------------------------------------
@ -182,7 +185,10 @@ File_read(DOH *so, void *buffer, int len) {
int
File_write(DOH *so, void *buffer, int len) {
File *s = (File *) so;
return (size_t) fwrite(buffer,1,len,s->filep);
if (s->filep)
return (size_t) fwrite(buffer,1,len,s->filep);
else
return (size_t) write(s->fd,buffer,len);
}
/* -----------------------------------------------------------------------------
@ -193,7 +199,10 @@ File_write(DOH *so, void *buffer, int len) {
int
File_seek(DOH *so, long offset, int whence) {
File *s = (File *) so;
return fseek(s->filep,offset,whence);
if (s->filep)
return fseek(s->filep,offset,whence);
else
return lseek(s->fd,offset,whence);
}
/* -----------------------------------------------------------------------------
@ -204,7 +213,10 @@ File_seek(DOH *so, long offset, int whence) {
long
File_tell(DOH *so) {
File *s = (File *) so;
return ftell(s->filep);
if (s->filep)
return ftell(s->filep);
else
return lseek(s->fd,0,SEEK_CUR);
}
/* -----------------------------------------------------------------------------
@ -215,7 +227,9 @@ File_tell(DOH *so) {
int File_putc(DOH *obj, int ch) {
File *s = (File *) obj;
return fputc(ch,s->filep);
if (s->filep)
return fputc(ch,s->filep);
return EOF;
}
/* -----------------------------------------------------------------------------
@ -226,7 +240,9 @@ int File_putc(DOH *obj, int ch) {
int File_getc(DOH *obj) {
File *s = (File *) obj;
return fgetc(s->filep);
if (s->filep)
return fgetc(s->filep);
return EOF;
}
/* -----------------------------------------------------------------------------
@ -237,7 +253,9 @@ int File_getc(DOH *obj) {
int File_ungetc(DOH *obj, int ch) {
File *s = (File *) obj;
return ungetc(ch, s->filep);
if (s->filep)
return ungetc(ch, s->filep);
return EOF;
}

View file

@ -291,3 +291,34 @@ int DohPrintf(DOH *obj, char *format, ...) {
va_end(ap);
return ret;
}
/* Split by a character */
DOH *DohSplit(DOH *in, char *chs, int nsplits) {
DOH *list;
DOH *str;
int c;
list = NewList();
if (String_check(in)) {
Seek(in,0,SEEK_SET);
}
while (1) {
do {
c = Getc(in);
} while ((c != EOF) && (c == *chs));
if (c != EOF) {
str = NewString("");
Putc(c,str);
while (1) {
c = Getc(in);
if ((c == EOF) || ((c == *chs) && (nsplits != 0))) break;
Putc(c,str);
}
Append(list,str);
nsplits--;
}
if (c == EOF) break;
}
return list;
}

View file

@ -435,17 +435,17 @@ Hash_str(DOH *ho) {
Hash *h;
h = (Hash *) ho;
#ifdef OLD
s = NewString("Hash {\n");
s = NewString("");
Printf(s,"Hash {\n");
for (i = 0; i < h->hashsize; i++) {
n = h->hashtable[i];
while (n) {
Appendf(s," '%o' : %o, \n", n->key, n->object);
Printf(s," '%s' : %s, \n", n->key, n->object);
n = n->next;
}
}
Append(s,"}\n");
#else
Printf(s,"}\n");
#ifdef old
s = NewString("Hash");
Printf(s,"(%x) {",h);
for (i = 0; i < h->hashsize; i++) {

View file

@ -326,11 +326,13 @@ List_str(DOH *lo)
List *l = (List *) lo;
s = NewString("");
Printf(s,"List [ ");
for (i = 0; i < l->nitems; i++) {
Printf(s, "%o", l->items[i]);
Printf(s, " %s\n", l->items[i]);
if ((i+1) < l->nitems)
Printf(s,", ");
}
Printf(s," ]\n");
return s;
}

View file

@ -187,6 +187,7 @@ CopyString(DOH *so) {
memmove(str->str, s->str, max);
str->maxsize= max;
str->len = s->len;
str->str[str->len] = 0;
return (DOH *) str;
}
@ -279,7 +280,8 @@ add(String *s, const char *newstr) {
s->maxsize = newmaxsize;
}
strcpy(s->str+s->len,newstr);
if (s->sp >= s->len) s->sp+=l;
if (s->sp >= s->len)
s->sp+=l;
s->len += l;
}
@ -312,7 +314,10 @@ String_addchar(DOH *so, char c) {
s->maxsize *= 2;
}
s->str[s->len] = c;
if (s->sp >= s->len) s->sp++;
if (s->sp >= s->len) {
s->sp++;
s->str[s->len+1] = 0;
}
s->len++;
}

View file

@ -60,7 +60,7 @@ static DohObjInfo DohVoidType = {
DOH *NewVoid(void *obj, void (*del)(void *)) {
VoidObj *v;
v = (VoidObj *) malloc(sizeof(VoidObj));
v = (VoidObj *) DohMalloc(sizeof(VoidObj));
DohInit(v);
v->objinfo = &DohVoidType;
v->ptr = obj;

View file

@ -144,6 +144,9 @@ extern DOH *DohGetfile(DOH *obj);
extern void DohSetfile(DOH *obj, DOH *file);
extern void DohInit(DOH *obj);
extern int DohGetInt(DOH *obj, DOH *name);
extern double DohGetDouble(DOH *obj, DOH *name);
/* File methods */
extern int DohWrite(DOH *obj, void *buffer, int length);
@ -201,6 +204,8 @@ extern int DohvPrintf(DOH *obj, char *format, va_list ap);
#define Putc DohPutc
#define Ungetc DohUngetc
#define vPrintf DohvPrintf
#define GetInt DohGetInt
#define GetDouble DohGetDouble
/* #define Scanf DohScanf
#define vScanf DohvScanf*/
@ -247,6 +252,7 @@ extern void String_replace(DOH *s, DOH *token, DOH *rep, int flags);
extern DOH *NewFile(char *file, char *mode);
extern DOH *NewFileFromFile(FILE *f);
extern DOH *NewFileFromFd(int fd);
/* -----------------------------------------------------------------------------
* List
@ -270,5 +276,7 @@ extern DOH *Hash_keys(DOH *);
extern DOH *NewVoid(void *ptr, void (*del)(void *));
extern DOH *DohSplit(DOH *input, char *chs, int nsplits);
#define Split DohSplit