Clp  1.17.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Functions
CoinHelperFunctions.hpp File Reference
#include "CoinUtilsConfig.h"
#include <unistd.h>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include "CoinTypes.hpp"
#include "CoinError.hpp"
+ Include dependency graph for CoinHelperFunctions.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  CoinThreadRandom
 Class for thread specific random numbers. More...
 

Macros

#define COIN_RESTRICT
 
#define COIN_OWN_RANDOM_32
 
#define CoinSizeofAsInt(type)   (static_cast< int >(sizeof(type)))
 Cube Root. More...
 
#define COIN_DETAIL_PRINT(s)
 

Functions

template<class T >
void CoinCopyN (const T *from, const CoinBigIndex size, T *to)
 This helper function copies an array to another location using Duff's device (for a speedup of ~2). More...
 
template<class T >
void CoinCopy (const T *first, const T *last, T *to)
 This helper function copies an array to another location using Duff's device (for a speedup of ~2). More...
 
template<class T >
void CoinDisjointCopyN (const T *from, const CoinBigIndex size, T *to)
 This helper function copies an array to another location. More...
 
template<class T >
void CoinDisjointCopy (const T *first, const T *last, T *to)
 This helper function copies an array to another location. More...
 
template<class T >
T * CoinCopyOfArray (const T *array, const CoinBigIndex size)
 Return an array of length size filled with input from array, or null if array is null. More...
 
template<class T >
T * CoinCopyOfArrayPartial (const T *array, const CoinBigIndex size, const CoinBigIndex copySize)
 Return an array of length size filled with first copySize from array, or null if array is null. More...
 
template<class T >
T * CoinCopyOfArray (const T *array, const CoinBigIndex size, T value)
 Return an array of length size filled with input from array, or filled with (scalar) value if array is null. More...
 
template<class T >
T * CoinCopyOfArrayOrZero (const T *array, const CoinBigIndex size)
 Return an array of length size filled with input from array, or filled with zero if array is null. More...
 
template<class T >
void CoinMemcpyN (const T *from, const CoinBigIndex size, T *to)
 This helper function copies an array to another location. More...
 
template<class T >
void CoinMemcpy (const T *first, const T *last, T *to)
 This helper function copies an array to another location. More...
 
template<class T >
void CoinFillN (T *to, const CoinBigIndex size, const T value)
 This helper function fills an array with a given value. More...
 
template<class T >
void CoinFill (T *first, T *last, const T value)
 This helper function fills an array with a given value. More...
 
template<class T >
void CoinZeroN (T *to, const CoinBigIndex size)
 This helper function fills an array with zero. More...
 
void CoinCheckDoubleZero (double *to, const CoinBigIndex size)
 This Debug helper function checks an array is all zero. More...
 
void CoinCheckIntZero (int *to, const CoinBigIndex size)
 This Debug helper function checks an array is all zero. More...
 
template<class T >
void CoinZero (T *first, T *last)
 This helper function fills an array with a given value. More...
 
char * CoinStrdup (const char *name)
 Returns strdup or NULL if original NULL. More...
 
template<class T >
CoinMax (const T x1, const T x2)
 Return the larger (according to operator<() of the arguments. More...
 
template<class T >
CoinMin (const T x1, const T x2)
 Return the smaller (according to operator<() of the arguments. More...
 
template<class T >
CoinAbs (const T value)
 Return the absolute value of the argument. More...
 
template<class T >
bool CoinIsSorted (const T *first, const CoinBigIndex size)
 This helper function tests whether the entries of an array are sorted according to operator<. More...
 
template<class T >
bool CoinIsSorted (const T *first, const T *last)
 This helper function tests whether the entries of an array are sorted according to operator<. More...
 
template<class T >
void CoinIotaN (T *first, const CoinBigIndex size, T init)
 This helper function fills an array with the values init, init+1, init+2, etc. More...
 
template<class T >
void CoinIota (T *first, const T *last, T init)
 This helper function fills an array with the values init, init+1, init+2, etc. More...
 
template<class T >
T * CoinDeleteEntriesFromArray (T *arrayFirst, T *arrayLast, const int *firstDelPos, const int *lastDelPos)
 This helper function deletes certain entries from an array. More...
 
double CoinDrand48 (bool isSeed=false, unsigned int seed=1)
 Return a random number between 0 and 1. More...
 
void CoinSeedRandom (int iseed)
 Set the seed for the random number generator. More...
 
char CoinFindDirSeparator ()
 This function figures out whether file names should contain slashes or backslashes as directory separator. More...
 
int CoinStrNCaseCmp (const char *s0, const char *s1, const size_t len)
 
template<class T >
void CoinSwap (T &x, T &y)
 Swap the arguments. More...
 
template<class T >
int CoinToFile (const T *array, CoinBigIndex size, FILE *fp)
 This helper function copies an array to file Returns 0 if OK, 1 if bad write. More...
 
template<class T >
int CoinFromFile (T *&array, CoinBigIndex size, FILE *fp, CoinBigIndex &newSize)
 This helper function copies an array from file and creates with new. More...
 
int CoinStrlenAsInt (const char *string)
 This helper returns "strlen" as an int. More...
 

Macro Definition Documentation

#define COIN_RESTRICT

Definition at line 32 of file CoinHelperFunctions.hpp.

#define COIN_OWN_RANDOM_32

Definition at line 893 of file CoinHelperFunctions.hpp.

#define CoinSizeofAsInt (   type)    (static_cast< int >(sizeof(type)))

Cube Root.

This helper returns "sizeof" as an int

Definition at line 1078 of file CoinHelperFunctions.hpp.

#define COIN_DETAIL_PRINT (   s)
Value:
{ \
}

Definition at line 1261 of file CoinHelperFunctions.hpp.

Function Documentation

template<class T >
void CoinCopyN ( const T *  from,
const CoinBigIndex  size,
T *  to 
)
inline

This helper function copies an array to another location using Duff's device (for a speedup of ~2).

The arrays are given by pointers to their first entries and by the size of the source array. Overlapping arrays are handled correctly.

Definition at line 45 of file CoinHelperFunctions.hpp.

template<class T >
void CoinCopy ( const T *  first,
const T *  last,
T *  to 
)
inline

This helper function copies an array to another location using Duff's device (for a speedup of ~2).

The source array is given by its first and "after last" entry; the target array is given by its first entry. Overlapping arrays are handled correctly.

All of the various CoinCopyN variants use an int for size. On 64-bit architectures, the address diff last-first will be a 64-bit quantity. Given that everything else uses an int, I'm going to choose to kick the difference down to int. – lh, 100823 –

Definition at line 122 of file CoinHelperFunctions.hpp.

template<class T >
void CoinDisjointCopyN ( const T *  from,
const CoinBigIndex  size,
T *  to 
)
inline

This helper function copies an array to another location.

The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The arrays are given by pointers to their first entries and by the size of the source array.

Note JJF - the speed claim seems to be false on IA32 so I have added CoinMemcpyN which can be used for atomic data

Definition at line 138 of file CoinHelperFunctions.hpp.

template<class T >
void CoinDisjointCopy ( const T *  first,
const T *  last,
T *  to 
)
inline

This helper function copies an array to another location.

The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The source array is given by its first and "after last" entry; the target array is given by its first entry.

Definition at line 200 of file CoinHelperFunctions.hpp.

template<class T >
T* CoinCopyOfArray ( const T *  array,
const CoinBigIndex  size 
)
inline

Return an array of length size filled with input from array, or null if array is null.

Definition at line 214 of file CoinHelperFunctions.hpp.

template<class T >
T* CoinCopyOfArrayPartial ( const T *  array,
const CoinBigIndex  size,
const CoinBigIndex  copySize 
)
inline

Return an array of length size filled with first copySize from array, or null if array is null.

Definition at line 231 of file CoinHelperFunctions.hpp.

template<class T >
T* CoinCopyOfArray ( const T *  array,
const CoinBigIndex  size,
value 
)
inline

Return an array of length size filled with input from array, or filled with (scalar) value if array is null.

Definition at line 249 of file CoinHelperFunctions.hpp.

template<class T >
T* CoinCopyOfArrayOrZero ( const T *  array,
const CoinBigIndex  size 
)
inline

Return an array of length size filled with input from array, or filled with zero if array is null.

Definition at line 268 of file CoinHelperFunctions.hpp.

template<class T >
void CoinMemcpyN ( const T *  from,
const CoinBigIndex  size,
T *  to 
)
inline

This helper function copies an array to another location.

The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The arrays are given by pointers to their first entries and by the size of the source array.

Note JJF - the speed claim seems to be false on IA32 so I have added alternative coding if USE_MEMCPY defined

Definition at line 291 of file CoinHelperFunctions.hpp.

template<class T >
void CoinMemcpy ( const T *  first,
const T *  last,
T *  to 
)
inline

This helper function copies an array to another location.

The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The source array is given by its first and "after last" entry; the target array is given by its first entry.

Definition at line 388 of file CoinHelperFunctions.hpp.

template<class T >
void CoinFillN ( T *  to,
const CoinBigIndex  size,
const T  value 
)
inline

This helper function fills an array with a given value.

For speed 8 entries are filled at a time. The array is given by a pointer to its first entry and its size.

Note JJF - the speed claim seems to be false on IA32 so I have added CoinZero to allow for memset.

Definition at line 404 of file CoinHelperFunctions.hpp.

template<class T >
void CoinFill ( T *  first,
T *  last,
const T  value 
)
inline

This helper function fills an array with a given value.

For speed 8 entries are filled at a time. The array is given by its first and "after last" entry.

Definition at line 484 of file CoinHelperFunctions.hpp.

template<class T >
void CoinZeroN ( T *  to,
const CoinBigIndex  size 
)
inline

This helper function fills an array with zero.

For speed 8 entries are filled at a time. The array is given by a pointer to its first entry and its size.

Note JJF - the speed claim seems to be false on IA32 so I have allowed for memset as an alternative

Definition at line 499 of file CoinHelperFunctions.hpp.

void CoinCheckDoubleZero ( double *  to,
const CoinBigIndex  size 
)
inline

This Debug helper function checks an array is all zero.

Definition at line 577 of file CoinHelperFunctions.hpp.

void CoinCheckIntZero ( int *  to,
const CoinBigIndex  size 
)
inline

This Debug helper function checks an array is all zero.

Definition at line 591 of file CoinHelperFunctions.hpp.

template<class T >
void CoinZero ( T *  first,
T *  last 
)
inline

This helper function fills an array with a given value.

For speed 8 entries are filled at a time. The array is given by its first and "after last" entry.

Definition at line 612 of file CoinHelperFunctions.hpp.

char* CoinStrdup ( const char *  name)
inline

Returns strdup or NULL if original NULL.

Definition at line 620 of file CoinHelperFunctions.hpp.

template<class T >
T CoinMax ( const T  x1,
const T  x2 
)
inline

Return the larger (according to operator<() of the arguments.

This function was introduced because for some reason compiler tend to handle the max() function differently.

Definition at line 639 of file CoinHelperFunctions.hpp.

template<class T >
T CoinMin ( const T  x1,
const T  x2 
)
inline

Return the smaller (according to operator<() of the arguments.

This function was introduced because for some reason compiler tend to handle the min() function differently.

Definition at line 651 of file CoinHelperFunctions.hpp.

template<class T >
T CoinAbs ( const T  value)
inline

Return the absolute value of the argument.

This function was introduced because for some reason compiler tend to handle the abs() function differently.

Definition at line 663 of file CoinHelperFunctions.hpp.

template<class T >
bool CoinIsSorted ( const T *  first,
const CoinBigIndex  size 
)
inline

This helper function tests whether the entries of an array are sorted according to operator<.

The array is given by a pointer to its first entry and by its size.

Definition at line 675 of file CoinHelperFunctions.hpp.

template<class T >
bool CoinIsSorted ( const T *  first,
const T *  last 
)
inline

This helper function tests whether the entries of an array are sorted according to operator<.

The array is given by its first and "after last" entry.

Definition at line 748 of file CoinHelperFunctions.hpp.

template<class T >
void CoinIotaN ( T *  first,
const CoinBigIndex  size,
init 
)
inline

This helper function fills an array with the values init, init+1, init+2, etc.

For speed 8 entries are filled at a time. The array is given by a pointer to its first entry and its size.

Definition at line 760 of file CoinHelperFunctions.hpp.

template<class T >
void CoinIota ( T *  first,
const T *  last,
init 
)
inline

This helper function fills an array with the values init, init+1, init+2, etc.

For speed 8 entries are filled at a time. The array is given by its first and "after last" entry.

Definition at line 833 of file CoinHelperFunctions.hpp.

template<class T >
T* CoinDeleteEntriesFromArray ( T *  arrayFirst,
T *  arrayLast,
const int *  firstDelPos,
const int *  lastDelPos 
)
inline

This helper function deletes certain entries from an array.

The array is given by pointers to its first and "after last" entry (first two arguments). The positions of the entries to be deleted are given in the integer array specified by the last two arguments (again, first and "after last" entry).

Definition at line 847 of file CoinHelperFunctions.hpp.

double CoinDrand48 ( bool  isSeed = false,
unsigned int  seed = 1 
)
inline

Return a random number between 0 and 1.

A platform-independent linear congruential generator. For a given seed, the generated sequence is always the same regardless of the (32-bit) architecture. This allows to build & test in different environments, getting in most cases the same optimization path.

Set isSeed to true and supply an integer seed to set the seed (vid. CoinSeedRandom)

Todo:
Anyone want to volunteer an upgrade for 64-bit architectures?

Definition at line 911 of file CoinHelperFunctions.hpp.

void CoinSeedRandom ( int  iseed)
inline

Set the seed for the random number generator.

Definition at line 924 of file CoinHelperFunctions.hpp.

char CoinFindDirSeparator ( )
inline

This function figures out whether file names should contain slashes or backslashes as directory separator.

Definition at line 953 of file CoinHelperFunctions.hpp.

int CoinStrNCaseCmp ( const char *  s0,
const char *  s1,
const size_t  len 
)
inline

Definition at line 973 of file CoinHelperFunctions.hpp.

template<class T >
void CoinSwap ( T &  x,
T &  y 
)
inline

Swap the arguments.

Definition at line 997 of file CoinHelperFunctions.hpp.

template<class T >
int CoinToFile ( const T *  array,
CoinBigIndex  size,
FILE *  fp 
)
inline

This helper function copies an array to file Returns 0 if OK, 1 if bad write.

Definition at line 1012 of file CoinHelperFunctions.hpp.

template<class T >
int CoinFromFile ( T *&  array,
CoinBigIndex  size,
FILE *  fp,
CoinBigIndex newSize 
)
inline

This helper function copies an array from file and creates with new.

Passed in array is ignored i.e. not deleted. But if NULL and size does not match and newSize 0 then leaves as NULL and 0 Returns 0 if OK, 1 if bad read, 2 if size did not match.

Definition at line 1041 of file CoinHelperFunctions.hpp.

int CoinStrlenAsInt ( const char *  string)
inline

This helper returns "strlen" as an int.

Definition at line 1081 of file CoinHelperFunctions.hpp.