273{
274 unsigned int nb = 0;
275 unsigned int nbok = 0;
276 trace.
beginBlock (
"Number of A1 instances with standard by-value parameter passing." );
277 A1 a1( 10 );
278 DByValue d1( a1 );
279 trace.
info() <<
"D: d1.value() = " << d1.value() << std::endl;
280 ++nb; nbok += A1::nbCreated==3 ? 1 : 0;
281 ++nb; nbok += A1::nbDeleted==1 ? 1 : 0;
282 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
283 << " nbCreated=" << A1::nbCreated
284 << " nbDeleted=" << A1::nbDeleted << std::endl;
286 trace.
beginBlock (
"Number of A1 instances with explicit by-value parameter passing (Clone)." );
287 DByClone dd1( a1 );
288 ++nb; nbok += A1::nbCreated==4 ? 1 : 0;
289 ++nb; nbok += A1::nbDeleted==1 ? 1 : 0;
290 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
291 << " nbCreated=" << A1::nbCreated
292 << " nbDeleted=" << A1::nbDeleted << std::endl;
294 trace.
beginBlock (
"Number of A1 instances with explicit by-reference parameter passing (Alias)." );
295 EByAlias e1( a1 );
296 ++nb; nbok += A1::nbCreated==4 ? 1 : 0;
297 ++nb; nbok += A1::nbDeleted==1 ? 1 : 0;
298 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
299 << " nbCreated=" << A1::nbCreated
300 << " nbDeleted=" << A1::nbDeleted << std::endl;
302 trace.
beginBlock (
"Number of A1 instances with explicit by-const reference parameter passing (Alias)." );
303 EByConstAlias ee1( a1 );
304 ++nb; nbok += A1::nbCreated==4 ? 1 : 0;
305 ++nb; nbok += A1::nbDeleted==1 ? 1 : 0;
306 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
307 << " nbCreated=" << A1::nbCreated
308 << " nbDeleted=" << A1::nbDeleted << std::endl;
310 trace.
beginBlock (
"Number of A1 instances with explicit by-value parameter passing into heap (Clone)." );
311 FByCloneHeap fe1( a1 );
312 ++nb; nbok += A1::nbCreated==5 ? 1 : 0;
313 ++nb; nbok += A1::nbDeleted==1 ? 1 : 0;
314 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
315 << " nbCreated=" << A1::nbCreated
316 << " nbDeleted=" << A1::nbDeleted << std::endl;
318 trace.
beginBlock (
"Number of A1 instances with explicit by-value parameter passing into CowPtr (Clone)." );
319 FByCloneCowPtr fe3( a1 );
320 ++nb; nbok += A1::nbCreated==6 ? 1 : 0;
321 ++nb; nbok += A1::nbDeleted==1 ? 1 : 0;
322 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
323 << " nbCreated=" << A1::nbCreated
324 << " nbDeleted=" << A1::nbDeleted << std::endl;
326
327 int size = 20;
328 trace.
beginBlock (
"Total perimeter of triangles with by-value parameter passing." );
329 double t1 = computeTriangles<TriangleByValue>( size );
330 trace.
info() <<
"Perimeter is " << t1 << std::endl;
331 ++nb; nbok += Point::nbCreated == Point::nbDeleted ? 1 : 0;
332 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
333 << " Point nbCreated=" << Point::nbCreated
334 << " nbDeleted=" << Point::nbDeleted << std::endl;
335 int nbC = Point::nbCreated;
336 Point::reset();
338 trace.
beginBlock (
"Total perimeter of triangles with by-const reference parameter passing." );
339 double t2 = computeTriangles<TriangleByConstReference>( size );
340 trace.
info() <<
"Perimeter is " << t2 << std::endl;
341 ++nb; nbok += Point::nbCreated == Point::nbDeleted ? 1 : 0;
342 ++nb; nbok += Point::nbCreated < nbC ? 1 : 0;
343 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
344 << " Point nbCreated=" << Point::nbCreated
345 << " nbDeleted=" << Point::nbDeleted << std::endl;
346 Point::reset();
348 trace.
beginBlock (
"Total perimeter of triangles with by Clone parameter passing." );
349 double t3 = computeTriangles<TriangleByClone>( size );
350 trace.
info() <<
"Perimeter is " << t3 << std::endl;
351 ++nb; nbok += Point::nbCreated == Point::nbDeleted ? 1 : 0;
352 ++nb; nbok += Point::nbCreated < nbC ? 1 : 0;
353 trace.
info() <<
"(" << nbok <<
"/" << nb <<
")"
354 << " Point nbCreated=" << Point::nbCreated
355 << " nbDeleted=" << Point::nbDeleted << std::endl;
356 Point::reset();
358
359
360
361
362
363 return ( nb == nbok ) ? 0 : 1;
364}
void beginBlock(const std::string &keyword="")