64{
   67 
   69 
   70  try {
   71 
   72    JParser<> zap(
"Example program to test converions of array of objects to array of data members.");
 
   73 
   75 
   76    zap(argc, argv);
   77  }
   78  catch(const exception &error) {
   79    FATAL(error.what() << endl);
 
   80  }
   81 
   82 
   84 
   85  int numberOfElements = 5;
   86 
   87  for (int i = 0; i != numberOfElements; ++i) {
   88    buffer.push_back(__A__(i + 1));
   89  }
   90 
   91  if (
debug >= debug_t) {
 
   92    print(cout, numberOfElements, buffer.data());
 
   93    print(cout, numberOfElements, make_array(buffer.begin(), buffer.end(), &__A__::get).data());
 
   94    print(cout, numberOfElements, make_array(buffer.begin(), buffer.end(), &__A__::i)  .data());
 
   95    cout << 
"max " << 
getMaximum(make_array(buffer.begin(), buffer.end(), &__A__::i), numeric_limits<int>::min()) << endl;
 
   96    cout << 
"min " << 
getMinimum(make_array(buffer.begin(), buffer.end(), &__A__::i), numeric_limits<int>::max()) << endl;
 
   97  }
   98 
   99  {
  100    const int* p = make_array(buffer.begin(), buffer.end(), &__A__::get).data();
  101 
  102    for (int i = 0; i != numberOfElements; ++i, ++p) {
  103      ASSERT(buffer[i].get() == *p);
 
  104    }
  105  }
  106 
  107  {
  108    const int* p = make_array(buffer.begin(), buffer.end(), &__A__::i).data();
  109 
  110    for (int i = 0; i != numberOfElements; ++i, ++p) {
  111      ASSERT(buffer[i].i == *p);
 
  112    }
  113  }
  114  {
  115    ASSERT(
getMaximum(make_array(buffer.begin(), buffer.end(), &__A__::i), numeric_limits<int>::min()) == numberOfElements);
 
  116    ASSERT(
getMinimum(make_array(buffer.begin(), buffer.end(), &__A__::i), numeric_limits<int>::max()) == 1);
 
  117  }
  118  {
  119    ASSERT(
getCount(make_array(buffer.begin(), buffer.end(), &__A__::i), equal_to<int>()) == (
size_t) numberOfElements);
 
  120 
  121    buffer.push_back(__A__(1));
  122 
  123    ASSERT(buffer.size() == (
size_t) (numberOfElements + 1));
 
  124    ASSERT(
getCount(make_array(buffer.begin(), buffer.end(), &__A__::i), equal_to<int>()) == (
size_t) (numberOfElements));
 
  125  }
  126 
  127  return 0;
  128}
#define ASSERT(A,...)
Assert macro.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
void print(const TH1 &h1, std::ostream &out)
Print histogram parameters.
 
Utility class to parse command line options.
 
T getMaximum(const array_type< T > &buffer, const T value)
Get maximum of values.
 
size_t getCount(const array_type< T > &buffer, const JCompare_t &compare)
Count number of unique values.
 
T getMinimum(const array_type< T > &buffer, const T value)
Get minimum of values.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).