diff options
author | glenda <glenda@cirno> | 2022-09-18 14:55:48 +0000 |
---|---|---|
committer | glenda <glenda@cirno> | 2022-09-18 14:55:48 +0000 |
commit | 269c81f0217999367b4180e6a795142cbb2d02e7 (patch) | |
tree | 5b9299a3a7a2304ebc4259c1570c378e17f1e28f /quadnames.c | |
parent | 6430127cc4503e2e7e40f86ccc68594ced055274 (diff) |
Implement remote message passing via pipes!
Diffstat (limited to 'quadnames.c')
-rw-r--r-- | quadnames.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/quadnames.c b/quadnames.c index b7c04d0..29e973d 100644 --- a/quadnames.c +++ b/quadnames.c @@ -681,17 +681,19 @@ quadwrite(Array *fd, Array *data) { if(GetType(fd) != AtypeInt || GetSize(fd) != 1) throwerror(L"Invalid fd", EDomain); - if(GetType(data) != AtypeInt || GetRank(fd) > 1) - throwerror(L"Data must be a scalar or vector of bytes", EDomain); + + if((GetType(data) != AtypeInt && GetType(data) != AtypeFloat) || GetRank(data) > 1) + throwerror(L"Data must be a scalar or vector of bytes!", EDomain); u8int *raw = emalloc(GetSize(data)); for(int i = 0; i < GetSize(data); i++){ - u64int v = data->intdata[i]; - if(v > 255){ - free(raw); - throwerror(L"Data values must be bytes", EDomain); - }else - raw[i] = v; + u8int v; + switch(GetType(data)){ + case AtypeInt: v = data->intdata[i]; break; + case AtypeFloat: v = data->floatdata[i]; break; + default: v = 0; break; + } + raw[i] = v; } long ret = write(fd->intdata[0], raw, GetSize(data)); free(raw); |