本文整理汇总了C++中DCBuffer::Append方法的典型用法代码示例。如果您正苦于以下问题:C++ DCBuffer::Append方法的具体用法?C++ DCBuffer::Append怎么用?C++ DCBuffer::Append使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DCBuffer
的用法示例。
在下文中一共展示了DCBuffer::Append方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: process
int ocvmqueryhandler::process()
{
std::string my_workload = get_param("my_workload");
off_t color_offset = (off_t)Atoi(get_param("color_offset"));
off_t row_size = (off_t)Atoi(get_param("num_columns"));
int partial = Atoi(get_param("partial"));
#ifdef DEBUG
// cout << dcmpi_get_hostname() << " " << get_distinguished_name() << " workload: \n" << my_workload << endl;
#endif
DCBuffer *outb;
std::vector< std::string> lines = str_tokenize(my_workload, "\n");
outb = new DCBuffer(lines.size()*sizeof(ocvm_sum_integer_type)*250);
outb->Append(get_param("myhostname"));
typedef std::map< std::string, std::map< off_t, std::string > >
offset_value_mapping ;
offset_value_mapping offset_value;
for (int i = 0; i < (int)lines.size(); i++) {
std::vector< std::string> tokens = str_tokenize(lines[i]);
std::string filename = tokens[0];
if (offset_value.count(filename) == 0) {
offset_value[filename] =
std::map< off_t, std::string >();
}
FILE * psumf = fopen(filename.c_str(),"r");
if (!psumf) {
std::cerr << "ERROR: opening file " << filename
<< " on host " << dcmpi_get_hostname(true)
<< " at " << __FILE__ << ":" << __LINE__
<< std::endl << std::flush;
exit(1);
}
for (int j = 1; j < (int)tokens.size(); j++) {
off_t chunk_offset = (off_t)Atoi(tokens[j]);
ocvm_sum_integer_type value_at_point;
std::string values_at_point_string = "";
std::map< off_t, std::string > &
value_mapping = offset_value[filename];
if (value_mapping.count(chunk_offset) == 0) {
for (int k = 0; k < 3; k++) {
off_t seek_offset;
seek_offset = (chunk_offset + k * color_offset);
if (fseeko(psumf, seek_offset, SEEK_SET) != 0) {
std::cerr << "ERROR: seeking to position "
<< chunk_offset << " in file "
<< filename
<< " at " << __FILE__ << ":" << __LINE__
<< std::endl << std::flush;
exit(1);
}
if (fread(&value_at_point, sizeof(ocvm_sum_integer_type),
1, psumf) < 1) {
std::cerr << "ERROR: calling fread"
<< " at " << __FILE__
<< ":" << __LINE__
<< std::endl << std::flush;
exit(1);
}
outb->Append(value_at_point);
values_at_point_string += tostr(value_at_point) + " ";
}
value_mapping[chunk_offset] = values_at_point_string;
}
else {
std::vector< std::string > values_at_point = str_tokenize(value_mapping[chunk_offset]);
for (int k = 0; k < 3; k++) {
value_at_point = (ocvm_sum_integer_type)Atoi(values_at_point[k]);
outb->Append(value_at_point);
}
}
}
fclose(psumf);
}
write(outb, "0");
return 0;
}
示例2: Atof
int ocvm_maximum_spanning_tree2::process(void)
{
std::cout << "ocvm_maximum_spanning_tree2: running on "
<< dcmpi_get_hostname() << "\n";
int subimage_width = get_param_as_int("subimage_width");
int subimage_height = get_param_as_int("subimage_height");
double subimage_overlap = Atof(get_param("subimage_overlap"));
int i;
int4 nXChunks, nYChunks;
nXChunks = get_param_as_int("nXChunks");
nYChunks = get_param_as_int("nYChunks");
int4 score, x_displacement, y_displacement, x_ref, y_ref,
x_subject, y_subject, left_to_right, diffX, diffY;
std::cout << "ocvm_maximum_spanning_tree2: " << nXChunks
<< "x" << nYChunks << " image coming at me\n";
// GlobalAligner ga = GlobalAligner(nXChunks, nYChunks, subimage_width, subimage_height, subimage_overlap/100.0);
GlobalAligner ga = GlobalAligner(nXChunks, nYChunks);
int num_incoming_packets =
((nXChunks-1) * nYChunks) +
((nYChunks-1) * nXChunks);
std::cout << "ocvm_maximum_spanning_tree2: num_incoming_packets is "
<< num_incoming_packets << endl;
for (i = 0; i < num_incoming_packets; i++) {
DCBuffer * in = read("from_aligners");
in->Extract(&score);
in->Extract(&x_displacement);
in->Extract(&y_displacement);
in->Extract(&x_ref);
in->Extract(&y_ref);
in->Extract(&x_subject);
in->Extract(&y_subject);
in->Extract(&left_to_right);
in->Extract(&diffX);
in->Extract(&diffY);
// std::cout << "maximum_spanning_tree2: next packet: "
// << score << " " << x_displacement << " " << y_displacement
// << " (" << x_ref << "," << y_ref
// << ") (" << x_subject << "," << y_subject
// << ") " << left_to_right
// << " " << diffX << " " << diffY << "\n";
int edge_index;
if (left_to_right) {
// edge_index = (nYChunks - y_ref - 1)*(2*nXChunks - 1);
edge_index = y_subject*(2*nXChunks - 1);
if (y_subject == nYChunks-1)
edge_index = edge_index + x_ref;
else
edge_index = edge_index + 2*x_ref + 1;
ga.init_edge(edge_index, x_displacement, y_displacement, score);
}
else {
edge_index = y_ref*(2*nXChunks - 1) + 2*x_subject;
ga.init_edge(edge_index, -1*x_displacement, -1*y_displacement, score);
}
// std::cout << "edge index= " << edge_index << std::endl;
in->consume();
}
double before = dcmpi_doubletime();
std::cout << "w: " << subimage_width << endl;
std::cout << "h: " << subimage_height << endl;
std::cout << "o: " << subimage_overlap << endl;
ga.init_tiles((int8)(subimage_width * (1.0 - (subimage_overlap / 100.0))),
(int8)(subimage_height * (1.0 - (subimage_overlap / 100.0))));
// ga.displayEdges();
// std::cout << std::endl;
// ga.displayOffsets();
// std::cout << std::endl;
ga.calculateDisplacements();
std::cout << std::endl;
ga.normalizeOffsets();
// ga.displayOffsets();
ga.finalizeOffsets();
// ga.displayOffsets();
std::cout << std::endl;
double elapsed = dcmpi_doubletime() - before;
DCBuffer *outb = new DCBuffer(8 + (((nXChunks * nYChunks * 2) + 2) * sizeof(int8)));
std::cout << "spanning tree took this many seconds: " << elapsed <<endl;
outb->Append(ga.maxX+subimage_width);
outb->Append(ga.maxY+subimage_height);
for (i = 0; i < nXChunks*nYChunks; i++) {
outb->Append(ga.tiles[i]->offsetX);
outb->Append(ga.tiles[i]->offsetY);
}
write_nocopy(outb, "to_console");
std::cout << "f-mst.cpp: exiting\n";
return 0;
}