transform_tst.cpp File Reference

#include <rpa/fulltests/sampling.h>
#include <rpa/functional.h>
#include <rpa/algorithms/transform.h>
#include <rpa/fulltests/comparer.h>

Classes

struct  oper_dbg< char >
 We use only lower-case letters, because it is easier to detect an error. More...
struct  oper_dbg< float >
class  ProbBase< ThrTree, Type, RangeT >
class  proxy_guard< Container, Mutex >
struct  ProbFull< ContOut, ThrTree, Range >
 General template. More...
struct  ProbFull< Type[Nb], ThrTree, Range >
 When the output container is a fixed-size array. More...
struct  ProbFull< std::vector< Type >, ThrTree, Range >
struct  ProbFull< std::list< Type >, ThrTree, Range >
class  LoopIn< ThrTree, Type >
struct  LoopIn< ThrTree, Type >::LoopOut< ContIn >
class  LoopIn< ThrTree, Type >::LoopOut< ContIn >::LoopRng< ContOut >
struct  EnumMyTypes

Defines

#define MAX_STATIC_SZ   65536
 The size for data sets with C-like static arrays.
#define NB_FLOA   ( 10000 * TST_RATIO )
#define TEST_FLOATS

Typedefs

typedef rpa::mutex_count<
rpa::sample_mutex_type
transformTstMutex

Functions

template<class ContOut, class ThrTree, class Range>
void ProbFull_plain_ptr (ProbBase< ContOut, ThrTree, Range > &aPB)
 Applies only when the output container is a C-language static array.
template<class ContOut, class ThrTree, class Range>
void ProbFull_plain (ProbBase< ContOut, ThrTree, Range > &aPB)
template<class ContOut, class ThrTree, class Range>
void ProbFull_back_insert (ProbBase< ContOut, ThrTree, Range > &aPB)
template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obuf_back_ins_buf_unbounded (ProbBase< ContOut, ThrTree, Range > &aPB)
template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obuf_back_ins_buf_bounded (ProbBase< ContOut, ThrTree, Range > &aPB)
template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obib (ProbBase< ContOut, ThrTree, Range > &aPB, rpa::true_t hasLimit)
 All tests, if the buffer has an unlimited size.
template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obib (ProbBase< ContOut, ThrTree, Range > &aPB, rpa::false_t hasLimit)
template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obuf_back_ins_buf (ProbBase< ContOut, ThrTree, Range > &aPB)
template<class ContOut, class ThrTree, class Range>
void ProbFull_obuf_back_insert (ProbBase< ContOut, ThrTree, Range > &aPB)
template<class ThrTree>
void TstCharsAux (ThrTree &aThrTree, const char *aStr)
template<class ThrTree>
void TstChars (ThrTree &aThrTree)
template<class ThrTree>
void TstFloats (ThrTree aThrTree)
int main (int aArgC, const char **aArgV)

Variables

transformTstMutex aLock
static float myF [NB_FLOA]
 Static buffer, so no need to put it on the stack.

Define Documentation

#define MAX_STATIC_SZ   65536

The size for data sets with C-like static arrays.

Idea: In debug mode, it would be fine to have a counter per thread, to be sure that the CPU load is well distributed over sub-threads.

#define NB_FLOA   ( 10000 * TST_RATIO )

Test with doubles. They all must be in a given interval. So, runtime bug checking is very easy. The value TST_RATIO can adjust the duration of tests.

#define TEST_FLOATS


Typedef Documentation

typedef rpa::mutex_count< rpa::sample_mutex_type > transformTstMutex

This mutex is used for 'range_step'. It is encapsulated in a counter of locks/unlocks, to check how many times it is used.


Function Documentation

int main ( int  aArgC,
const char **  aArgV 
)

template<class ContOut, class ThrTree, class Range>
void ProbFull_back_insert ( ProbBase< ContOut, ThrTree, Range > &  aPB  ) 

template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obib ( ProbBase< ContOut, ThrTree, Range > &  aPB,
rpa::false_t  hasLimit 
)

If the buffer has a limited size, we can do only some tests. These tests will need a mutex to flush the buffer into the otuput sequence, each time it is full.

template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obib ( ProbBase< ContOut, ThrTree, Range > &  aPB,
rpa::true_t  hasLimit 
)

All tests, if the buffer has an unlimited size.

template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obuf_back_ins_buf ( ProbBase< ContOut, ThrTree, Range > &  aPB  ) 

template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obuf_back_ins_buf_bounded ( ProbBase< ContOut, ThrTree, Range > &  aPB  ) 

Same as ProbFull_obuf_back_insert, but for a given buffer type. We impose the buffer type, instead of taking the default one. ONLY FOR LIMITED-SIZED BUFFERS !

Buffer and buffer size limit. Buffer type is a list, without allocator.

Buffer and buffer size limit. We provide an allocator for the per-thread buffers.

template<class ContOut, class ThrTree, class Range, class Buffer>
void ProbFull_obuf_back_ins_buf_unbounded ( ProbBase< ContOut, ThrTree, Range > &  aPB  ) 

Same as ProbFull_obuf_back_insert, but for a given buffer type. We impose the buffer type, instead of taking the default one. ONLY FOR BUFFERS WiThOuT SIZE LIMIT !

No mutex nor buffer size limit. Buffer type is a list, without allocator.

No mutex nor buffer size limit. We provide an allocator for the per-thread buffers.

template<class ContOut, class ThrTree, class Range>
void ProbFull_obuf_back_insert ( ProbBase< ContOut, ThrTree, Range > &  aPB  ) 

template<class ContOut, class ThrTree, class Range>
void ProbFull_plain ( ProbBase< ContOut, ThrTree, Range > &  aPB  ) 

For containers which are already 'resized' to the right output size. We just need to have the algorithm overwrite the content of the output container.

template<class ContOut, class ThrTree, class Range>
void ProbFull_plain_ptr ( ProbBase< ContOut, ThrTree, Range > &  aPB  ) 

Applies only when the output container is a C-language static array.

template<class ThrTree>
void TstChars ( ThrTree &  aThrTree  ) 

Some carefully chosen number of elements to test various configurations, compared to the number of threads, the minimal number of elemnts to process, etc...

It is a minimal number of elements.

We test with three threads.

Must work with empty strings,

template<class ThrTree>
void TstCharsAux ( ThrTree &  aThrTree,
const char *  aStr 
)

Must use only lowercase letters. Any other values is detected and makes the program crash. All letters must be different.

template<class ThrTree>
void TstFloats ( ThrTree  aThrTree  ) 

All the values out of the interval [0,NB_FLOA] are considered as invalid. All numbers must be different (This is checked for detecting duplication}.


Variable Documentation

transformTstMutex aLock

float myF[NB_FLOA] [static]

Static buffer, so no need to put it on the stack.


Generated on Tue Sep 25 10:20:31 2007 for rpa by  doxygen 1.4.7