*** 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;
|
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
|
* Sequence Interface
|
||||||
* ---------------------------------------------------------------------- */
|
* ---------------------------------------------------------------------- */
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,19 @@
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#define OBUFLEN 512
|
#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)
|
* 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);
|
stemp = (char *) malloc(maxwidth+1);
|
||||||
}
|
}
|
||||||
nbytes+=sprintf(stemp,newformat,Data(Sval));
|
nbytes+=sprintf(stemp,newformat,Data(Sval));
|
||||||
Write(so,stemp,strlen(stemp));
|
if (Writen(so,stemp,strlen(stemp)) < 0) return -1;
|
||||||
if ((DOH *) Sval != doh) {
|
if ((DOH *) Sval != doh) {
|
||||||
Delete(Sval);
|
Delete(Sval);
|
||||||
}
|
}
|
||||||
|
|
@ -224,7 +237,7 @@ DohvPrintf(DOH *so, char *format, va_list ap)
|
||||||
stemp = (char *) malloc(maxwidth + 1);
|
stemp = (char *) malloc(maxwidth + 1);
|
||||||
}
|
}
|
||||||
nbytes+=sprintf(stemp,newformat,doh);
|
nbytes+=sprintf(stemp,newformat,doh);
|
||||||
Write(so,stemp,strlen(stemp));
|
if (Writen(so,stemp,strlen(stemp)) < 0) return -1;
|
||||||
if (stemp != obuffer) {
|
if (stemp != obuffer) {
|
||||||
free(stemp);
|
free(stemp);
|
||||||
}
|
}
|
||||||
|
|
@ -267,7 +280,7 @@ DohvPrintf(DOH *so, char *format, va_list ap)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Write(so,stemp,strlen(stemp));
|
if (Writen(so,stemp,strlen(stemp)) < 0) return -1;
|
||||||
if (stemp != obuffer) free(stemp);
|
if (stemp != obuffer) free(stemp);
|
||||||
}
|
}
|
||||||
state = 0;
|
state = 0;
|
||||||
|
|
@ -276,8 +289,11 @@ DohvPrintf(DOH *so, char *format, va_list ap)
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
if (state) {
|
if (state) {
|
||||||
|
int r;
|
||||||
*fmt = 0;
|
*fmt = 0;
|
||||||
nbytes += Write(so,fmt,strlen(fmt));
|
r = Writen(so,fmt,strlen(fmt));
|
||||||
|
if (r < 0) return -1;
|
||||||
|
nbytes += r;
|
||||||
}
|
}
|
||||||
return nbytes;
|
return nbytes;
|
||||||
}
|
}
|
||||||
|
|
@ -296,13 +312,22 @@ int DohPrintf(DOH *obj, char *format, ...) {
|
||||||
|
|
||||||
int DohCopyto(DOH *in, DOH *out) {
|
int DohCopyto(DOH *in, DOH *out) {
|
||||||
int nbytes = 0, ret;
|
int nbytes = 0, ret;
|
||||||
|
int nwrite = 0, wret;
|
||||||
|
char *cw;
|
||||||
char buffer[16384];
|
char buffer[16384];
|
||||||
|
|
||||||
if ((!in) || (!out)) return 0;
|
if ((!in) || (!out)) return 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
ret = Read(in,buffer,16384);
|
ret = Read(in,buffer,16384);
|
||||||
if (ret > 0) {
|
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;
|
nbytes += ret;
|
||||||
} else {
|
} else {
|
||||||
return nbytes;
|
return nbytes;
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,9 @@ DohObjInfo *String_type() {
|
||||||
* void *String_data(DOH *so) - Return as a 'void *'
|
* void *String_data(DOH *so) - Return as a 'void *'
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
void *String_data(DOH *so) {
|
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 int DohGetInt(DOH *obj, DOH *name);
|
||||||
extern double DohGetDouble(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 */
|
/* File methods */
|
||||||
|
|
||||||
|
|
@ -206,6 +209,9 @@ extern int DohvPrintf(DOH *obj, char *format, va_list ap);
|
||||||
#define vPrintf DohvPrintf
|
#define vPrintf DohvPrintf
|
||||||
#define GetInt DohGetInt
|
#define GetInt DohGetInt
|
||||||
#define GetDouble DohGetDouble
|
#define GetDouble DohGetDouble
|
||||||
|
#define GetChar DohGetChar
|
||||||
|
#define SetInt DohSetInt
|
||||||
|
#define SetDouble DohSetDouble
|
||||||
#define Firstitem DohFirstitem
|
#define Firstitem DohFirstitem
|
||||||
#define Nextitem DohNextitem
|
#define Nextitem DohNextitem
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue