*** 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:
parent
aab770d975
commit
89d5b286df
8 changed files with 102 additions and 16 deletions
|
|
@ -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
|
||||
* ---------------------------------------------------------------------- */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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++) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue