本文整理汇总了C++中FloatArray::data方法的典型用法代码示例。如果您正苦于以下问题:C++ FloatArray::data方法的具体用法?C++ FloatArray::data怎么用?C++ FloatArray::data使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FloatArray
的用法示例。
在下文中一共展示了FloatArray::data方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: buflen
static int
ah_get(istream &is, AHRecord &rec)
{
// read header+data from an istream
int ndata, dtype;
// read header *********************************
char hbuf[HEADER_SIZE];
XDR xdrs;
// read a header from an istream
is.read(hbuf, HEADER_SIZE);
if (is.eof()) {
// no bytes read -> proper EOF
// otherwise -> unexpected EOF
return is.gcount()==0 ? AH_SUCCESS : AH_ERROR;
}
if (is.fail()) {
cerr << "failed to read header" << endl;
return AH_ERROR;
}
xdrmem_create(&xdrs, hbuf, (unsigned int) HEADER_SIZE, XDR_DECODE);
int status = AH_SUCCESS;
// read a header from an XDR stream
if ( ! xdr_Header(&xdrs, &rec, ndata, dtype))
status = AH_ERROR;
// check data type -> XXX do this inside xdr_Header
// if ( ! is_valid_data_type(rec->type))
// status = AH_ERROR;
if (status == AH_SUCCESS && is.eof()) // XXX XXX XXX XXX XXX XXX XXX
return AH_SUCCESS; // proper EOF
// read data samples ***************************
size_t bufsize = buflen(ndata, dtype);
vector<char> dbuf(bufsize);
char *buf = &dbuf[0];
is.read(buf, bufsize);
// While reading data we shall never reach EOF
if (is.eof())
return AH_ERROR; // unexpected EOF
if (is.fail())
return AH_ERROR; // <- obsolete ???
xdrmem_create(&xdrs, buf, bufsize, XDR_DECODE);
int n = ndata;
switch (dtype) {
case AH_DATATYPE_FLOAT:
{
// allocate new data
FloatArray *arr = new FloatArray(n);
rec.setData(arr);
float *f = (float*)(arr->data());
# ifdef IEEE_INTEL
float *f0 = (float*) xdrs.x_private;
char *b2 = (char*) f;
# endif
// read data
# ifdef IEEE_SPARC
assert(sizeof(float)==4);
// copy without swapping
memcpy(f, (void*) xdrs.x_private, n*sizeof(float));
# else
while (n--)
{
# ifdef IEEE_INTEL
char *b1 = (char*)(++f0);
*(b2++) = *(--b1);
*(b2++) = *(--b1);
*(b2++) = *(--b1);
*(b2++) = *(--b1);
# else
if ( ! xdr_float(&xdrs, f++))
cerr << "error while reading data" << endl;
# endif
}
# endif
}
break;
case AH_DATATYPE_COMPLEX:
/*
{
float re, im;
// allocate new data
//.........这里部分代码省略.........