*** 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:
parent
f312e6a58e
commit
2ed1b755ad
4 changed files with 68 additions and 6 deletions
|
|
@ -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
|
||||
* ---------------------------------------------------------------------- */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue