*** 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;
|
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
|
* Sequence Interface
|
||||||
* ---------------------------------------------------------------------- */
|
* ---------------------------------------------------------------------- */
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,10 @@ File_check(DOH *f)
|
||||||
int
|
int
|
||||||
File_read(DOH *so, void *buffer, int len) {
|
File_read(DOH *so, void *buffer, int len) {
|
||||||
File *s = (File *) so;
|
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
|
int
|
||||||
File_write(DOH *so, void *buffer, int len) {
|
File_write(DOH *so, void *buffer, int len) {
|
||||||
File *s = (File *) so;
|
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
|
int
|
||||||
File_seek(DOH *so, long offset, int whence) {
|
File_seek(DOH *so, long offset, int whence) {
|
||||||
File *s = (File *) so;
|
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
|
long
|
||||||
File_tell(DOH *so) {
|
File_tell(DOH *so) {
|
||||||
File *s = (File *) 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) {
|
int File_putc(DOH *obj, int ch) {
|
||||||
File *s = (File *) obj;
|
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) {
|
int File_getc(DOH *obj) {
|
||||||
File *s = (File *) 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) {
|
int File_ungetc(DOH *obj, int ch) {
|
||||||
File *s = (File *) obj;
|
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);
|
va_end(ap);
|
||||||
return ret;
|
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;
|
Hash *h;
|
||||||
|
|
||||||
h = (Hash *) ho;
|
h = (Hash *) ho;
|
||||||
#ifdef OLD
|
s = NewString("");
|
||||||
s = NewString("Hash {\n");
|
Printf(s,"Hash {\n");
|
||||||
for (i = 0; i < h->hashsize; i++) {
|
for (i = 0; i < h->hashsize; i++) {
|
||||||
n = h->hashtable[i];
|
n = h->hashtable[i];
|
||||||
while (n) {
|
while (n) {
|
||||||
Appendf(s," '%o' : %o, \n", n->key, n->object);
|
Printf(s," '%s' : %s, \n", n->key, n->object);
|
||||||
n = n->next;
|
n = n->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Append(s,"}\n");
|
Printf(s,"}\n");
|
||||||
#else
|
#ifdef old
|
||||||
s = NewString("Hash");
|
s = NewString("Hash");
|
||||||
Printf(s,"(%x) {",h);
|
Printf(s,"(%x) {",h);
|
||||||
for (i = 0; i < h->hashsize; i++) {
|
for (i = 0; i < h->hashsize; i++) {
|
||||||
|
|
|
||||||
|
|
@ -326,11 +326,13 @@ List_str(DOH *lo)
|
||||||
|
|
||||||
List *l = (List *) lo;
|
List *l = (List *) lo;
|
||||||
s = NewString("");
|
s = NewString("");
|
||||||
|
Printf(s,"List [ ");
|
||||||
for (i = 0; i < l->nitems; i++) {
|
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)
|
if ((i+1) < l->nitems)
|
||||||
Printf(s,", ");
|
Printf(s,", ");
|
||||||
}
|
}
|
||||||
|
Printf(s," ]\n");
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,7 @@ CopyString(DOH *so) {
|
||||||
memmove(str->str, s->str, max);
|
memmove(str->str, s->str, max);
|
||||||
str->maxsize= max;
|
str->maxsize= max;
|
||||||
str->len = s->len;
|
str->len = s->len;
|
||||||
|
str->str[str->len] = 0;
|
||||||
return (DOH *) str;
|
return (DOH *) str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -279,7 +280,8 @@ add(String *s, const char *newstr) {
|
||||||
s->maxsize = newmaxsize;
|
s->maxsize = newmaxsize;
|
||||||
}
|
}
|
||||||
strcpy(s->str+s->len,newstr);
|
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;
|
s->len += l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -312,7 +314,10 @@ String_addchar(DOH *so, char c) {
|
||||||
s->maxsize *= 2;
|
s->maxsize *= 2;
|
||||||
}
|
}
|
||||||
s->str[s->len] = c;
|
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++;
|
s->len++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ static DohObjInfo DohVoidType = {
|
||||||
|
|
||||||
DOH *NewVoid(void *obj, void (*del)(void *)) {
|
DOH *NewVoid(void *obj, void (*del)(void *)) {
|
||||||
VoidObj *v;
|
VoidObj *v;
|
||||||
v = (VoidObj *) malloc(sizeof(VoidObj));
|
v = (VoidObj *) DohMalloc(sizeof(VoidObj));
|
||||||
DohInit(v);
|
DohInit(v);
|
||||||
v->objinfo = &DohVoidType;
|
v->objinfo = &DohVoidType;
|
||||||
v->ptr = obj;
|
v->ptr = obj;
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,9 @@ extern DOH *DohGetfile(DOH *obj);
|
||||||
extern void DohSetfile(DOH *obj, DOH *file);
|
extern void DohSetfile(DOH *obj, DOH *file);
|
||||||
extern void DohInit(DOH *obj);
|
extern void DohInit(DOH *obj);
|
||||||
|
|
||||||
|
extern int DohGetInt(DOH *obj, DOH *name);
|
||||||
|
extern double DohGetDouble(DOH *obj, DOH *name);
|
||||||
|
|
||||||
/* File methods */
|
/* File methods */
|
||||||
|
|
||||||
extern int DohWrite(DOH *obj, void *buffer, int length);
|
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 Putc DohPutc
|
||||||
#define Ungetc DohUngetc
|
#define Ungetc DohUngetc
|
||||||
#define vPrintf DohvPrintf
|
#define vPrintf DohvPrintf
|
||||||
|
#define GetInt DohGetInt
|
||||||
|
#define GetDouble DohGetDouble
|
||||||
|
|
||||||
/* #define Scanf DohScanf
|
/* #define Scanf DohScanf
|
||||||
#define vScanf DohvScanf*/
|
#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 *NewFile(char *file, char *mode);
|
||||||
extern DOH *NewFileFromFile(FILE *f);
|
extern DOH *NewFileFromFile(FILE *f);
|
||||||
|
extern DOH *NewFileFromFd(int fd);
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* List
|
* List
|
||||||
|
|
@ -270,5 +276,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);
|
||||||
|
#define Split DohSplit
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue