*** empty log message ***

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@17 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dave Beazley 1999-08-17 23:35:40 +00:00
commit 2ed1b755ad
4 changed files with 68 additions and 6 deletions

View file

@ -507,6 +507,35 @@ double DohGetDouble(DOH *obj, DOH *name) {
return 0;
}
char *DohGetChar(DOH *obj, DOH *name) {
double dval;
DOH *val;
DohError(DOH_CALLS,"DohGetChar %x, %x\n",obj,name);
val = Getattr(obj,name);
if (!val) return 0;
if (String_check(val)) {
return (char *) Data(val);
}
return 0;
}
void DohSetInt(DOH *obj, DOH *name, int value) {
DOH *temp;
DohError(DOH_CALLS,"DohSetInt %x, %x, %d\n", obj, name, value);
temp = NewString("");
Printf(temp,"%d",value);
Setattr(obj,name,temp);
}
void DohSetDouble(DOH *obj, DOH *name, double value) {
DOH *temp;
DohError(DOH_CALLS,"DohSetInt %x, %x, %g\n", obj, name, value);
temp = NewString("");
Printf(temp,"%g",value);
Setattr(obj,name,temp);
}
/* ----------------------------------------------------------------------
* Sequence Interface
* ---------------------------------------------------------------------- */

View file

@ -22,6 +22,19 @@
* ----------------------------------------------------------------------------- */
#define OBUFLEN 512
static int Writen(DOH *out, void *buffer, int len) {
int nw = len, ret;
char *cb = (char *) buffer;
while (nw) {
ret = Write(out,cb,nw);
if (ret < 0) return -1;
nw = nw - ret;
cb += ret;
}
return len;
}
/* -----------------------------------------------------------------------------
* DohvPrintf(DOH *so, char *format, va_list ap)
*
@ -204,7 +217,7 @@ DohvPrintf(DOH *so, char *format, va_list ap)
stemp = (char *) malloc(maxwidth+1);
}
nbytes+=sprintf(stemp,newformat,Data(Sval));
Write(so,stemp,strlen(stemp));
if (Writen(so,stemp,strlen(stemp)) < 0) return -1;
if ((DOH *) Sval != doh) {
Delete(Sval);
}
@ -224,7 +237,7 @@ DohvPrintf(DOH *so, char *format, va_list ap)
stemp = (char *) malloc(maxwidth + 1);
}
nbytes+=sprintf(stemp,newformat,doh);
Write(so,stemp,strlen(stemp));
if (Writen(so,stemp,strlen(stemp)) < 0) return -1;
if (stemp != obuffer) {
free(stemp);
}
@ -267,7 +280,7 @@ DohvPrintf(DOH *so, char *format, va_list ap)
default:
break;
}
Write(so,stemp,strlen(stemp));
if (Writen(so,stemp,strlen(stemp)) < 0) return -1;
if (stemp != obuffer) free(stemp);
}
state = 0;
@ -276,8 +289,11 @@ DohvPrintf(DOH *so, char *format, va_list ap)
p++;
}
if (state) {
int r;
*fmt = 0;
nbytes += Write(so,fmt,strlen(fmt));
r = Writen(so,fmt,strlen(fmt));
if (r < 0) return -1;
nbytes += r;
}
return nbytes;
}
@ -296,13 +312,22 @@ int DohPrintf(DOH *obj, char *format, ...) {
int DohCopyto(DOH *in, DOH *out) {
int nbytes = 0, ret;
int nwrite = 0, wret;
char *cw;
char buffer[16384];
if ((!in) || (!out)) return 0;
while (1) {
ret = Read(in,buffer,16384);
if (ret > 0) {
Write(out,buffer,ret);
nwrite = ret;
cw = buffer;
while (nwrite) {
wret = Write(out,cw,nwrite);
if (wret < 0) return nbytes;
nwrite = nwrite - wret;
cw += wret;
}
nbytes += ret;
} else {
return nbytes;

View file

@ -108,7 +108,9 @@ DohObjInfo *String_type() {
* void *String_data(DOH *so) - Return as a 'void *'
* ----------------------------------------------------------------------------- */
void *String_data(DOH *so) {
return (void *) ((String *) so)->str;
String *s = (String *) so;
s->str[s->len] = 0;
return (void *) s->str;
}
/* -----------------------------------------------------------------------------

View file

@ -148,6 +148,9 @@ extern void DohInit(DOH *obj);
extern int DohGetInt(DOH *obj, DOH *name);
extern double DohGetDouble(DOH *obj, DOH *name);
extern char *DohGetChar(DOH *obj, DOH *name);
extern void DohSetInt(DOH *obj, DOH *name, int);
extern void DohSetDouble(DOH *obj, DOH *name, double);
/* File methods */
@ -206,6 +209,9 @@ extern int DohvPrintf(DOH *obj, char *format, va_list ap);
#define vPrintf DohvPrintf
#define GetInt DohGetInt
#define GetDouble DohGetDouble
#define GetChar DohGetChar
#define SetInt DohSetInt
#define SetDouble DohSetDouble
#define Firstitem DohFirstitem
#define Nextitem DohNextitem