Bsoft 2.1.4
Bernard's software package
utilities.cpp File Reference

Library functions useful in all the package. More...

#include <errno.h>
#include <sys/sysctl.h>
#include <stdio.h>
#include "utilities.h"
#include <iostream>

Macros

#define MAX_GET_LEN   32
 

Functions

int verbose (0)
 
int thread_limit (1000000)
 
ostream & tab (ostream &out)
 
int cmd_line (int argc, char **argv)
 Reconstructs the command line as a global string. More...
 
Bstring command_line ()
 Returns the command line. More...
 
Bstring command_line_time ()
 Returns the command line and time in a string. More...
 
string command_line_time2 ()
 
string get_user_name ()
 Returns the user name. More...
 
void usage (const char **use, int all)
 Prints usage information. More...
 
SysType systype (int show)
 Finds the system type - mostly just for byte order. More...
 
size_t system_processors ()
 Returns the number of processors. More...
 
long system_memory ()
 Returns system memory size. More...
 
int memory_check (long mem_required)
 Checking if there is enough memory, abort if not. More...
 
int bexit (int value)
 Exit function for cleanup and debugging. More...
 
DataType getdatatype (char letter)
 Get the data type indicated by a single letter code. More...
 
CompoundType getcompoundtype (int ch, string sct)
 Get the compound type indicated by a single letter code. More...
 
int select_numbers (Bstring &string, int n, int *numsel)
 Converts a string with a selection specification into an integer array. More...
 
vector< int > select_numbers (Bstring &string, int n)
 
int findNextPowerOf (int startNumber, int powerOf)
 Finds the next greatest number that is a power of a given number. More...
 
int get_integer (char *ptr, int len)
 Converts a defined length string into an integer. More...
 
float get_float (char *ptr, int len)
 Converts a defined length string into a floating point number. More...
 
void swapbytes (unsigned char *v, size_t n)
 Swaps bytes. More...
 
void swapbytes (size_t size, unsigned char *v, size_t n)
 Swaps bytes. More...
 
void vax2ieee (unsigned char *v, int sb)
 Converts VAX floating point format to IEEE floating point format. More...
 
double angle_set_negPI_to_PI (double angle)
 Returns an angle between -PI and PI. More...
 
double angle_set_0_to_TWOPI (double angle)
 Returns an angle between 0 and 2*PI. More...
 
float remove_negative_zeros (float value0, float threshold)
 Prevent a negative sign from being placed in front of zero value in a text file. More...
 
size_t get_chunk_size (size_t datasize)
 Returns the chunk size per thread. More...
 
size_t get_chunk_size (size_t datasize, size_t c)
 Returns the chunk size per thread. More...
 
int error_show (const char *message, const char *file, int line)
 Displays the error with file and line reference. More...
 
int error_show (string message, string file, int line)
 Displays the error with file and line reference. More...
 

Variables

string command
 

Detailed Description

Library functions useful in all the package.

Author
Bernard Heymann
Date
Created: 19990722
Modified: 20220722

Macro Definition Documentation

◆ MAX_GET_LEN

#define MAX_GET_LEN   32

Function Documentation

◆ angle_set_0_to_TWOPI()

double angle_set_0_to_TWOPI ( double  angle)

Returns an angle between 0 and 2*PI.

Parameters
angleinput angle.
Returns
double angle between 0 and 2*PI.

◆ angle_set_negPI_to_PI()

double angle_set_negPI_to_PI ( double  angle)

Returns an angle between -PI and PI.

Parameters
angleinput angle.
Returns
double angle between -PI and PI.

◆ bexit()

int bexit ( int  value)

Exit function for cleanup and debugging.

Parameters
valueexit value.
Returns
int given value.

◆ cmd_line()

int cmd_line ( int  argc,
char **  argv 
)

Reconstructs the command line as a global string.

Parameters
argcthe number of command line arguments.
**argvthe command line arguments.
Returns
int 0.
Concatenates the command line arguments into one string.

◆ command_line()

Bstring command_line ( )

Returns the command line.

Returns
Bstring new string.
This is designed to pack the command line into a string.

◆ command_line_time()

Bstring command_line_time ( )

Returns the command line and time in a string.

Returns
Bstring new string.
This is designed to pack the command line into a string followed by
a second string for the time.

◆ command_line_time2()

string command_line_time2 ( )

◆ error_show() [1/2]

int error_show ( const char *  message,
const char *  file,
int  line 
)

Displays the error with file and line reference.

Parameters
*messagea string to be included.
*filethe file name (should be FILE).
linethe line number (should be LINE).
Returns
int error number.
The function uses perror() to display a message containing the source
file and line number where it originated.
Reference: Derived from CCP4 code

◆ error_show() [2/2]

int error_show ( string  message,
string  file,
int  line 
)

Displays the error with file and line reference.

Parameters
*messagea string to be included.
*filethe file name (should be FILE).
linethe line number (should be LINE).
Returns
int error number.
The function uses perror() to display a message containing the source
file and line number where it originated.
Reference: Derived from CCP4 code

◆ findNextPowerOf()

int findNextPowerOf ( int  startNumber,
int  powerOf 
)

Finds the next greatest number that is a power of a given number.

Author
Dan Krainak
Parameters
startNumbernumber to begin from.
powerOfpower of this number is the number returned.
Returns
int the next greatest power (i.e. 128) or 0 on error.
Loop through the powerOf variable, multiplying it each successive
iteration until it is greater than the starting number.
Eg., the next greatest power of 2 starting at 100 is 128.

◆ get_chunk_size() [1/2]

size_t get_chunk_size ( size_t  datasize)

Returns the chunk size per thread.

Parameters
datasizesize of data to be divided into chunks.
Returns
long chunk size.
If multiple processors are used, the chunk size is set to the data size
divided by the number of processors.
Otherwise, the chunk size is equal to the data size.
Reference: Derived from CCP4 code

◆ get_chunk_size() [2/2]

size_t get_chunk_size ( size_t  datasize,
size_t  c 
)

Returns the chunk size per thread.

Parameters
datasizesize of data to be divided into chunks.
cchannel size to align chunk to.
Returns
long chunk size.
If multiple processors are used, the chunk size is set to the data size
divided by the number of processors.
Otherwise, the chunk size is equal to the data size.
Reference: Derived from CCP4 code

◆ get_float()

float get_float ( char *  ptr,
int  len 
)

Converts a defined length string into a floating point number.

Parameters
*ptrpointer to the string.
lenlength to be scanned.
Returns
float the floating point number.
The string is copied, 0-terminated, and scanned for a floating point number.

◆ get_integer()

int get_integer ( char *  ptr,
int  len 
)

Converts a defined length string into an integer.

Parameters
*ptrpointer to the string.
lenlength to be scanned.
Returns
int the integer.
The string is copied, 0-terminated, and scanned for an integer.

◆ get_user_name()

string get_user_name ( )

Returns the user name.

Returns
string user name.
It uses getpwuid_r (thread safe) to find the user in the password file.

◆ getcompoundtype()

CompoundType getcompoundtype ( int  ch,
string  sct 
)

Get the compound type indicated by a single letter code.

Parameters
chnumber of channels.
sctstring indicating compound type.
Returns
CompoundType compound type.
This function is used in optional command-line arguments to indicate
a new compound type for an image.

◆ getdatatype()

DataType getdatatype ( char  letter)

Get the data type indicated by a single letter code.

Parameters
letterletter indicating data type.
Returns
DataType data type.
This function is used in optional command-line arguments to indicate 
a new data type for an image.

◆ memory_check()

int memory_check ( long  mem_required)

Checking if there is enough memory, abort if not.

Parameters
mem_requiredmemory required.
Returns
int 1 if enough.

◆ remove_negative_zeros()

float remove_negative_zeros ( float  value0,
float  threshold 
)

Prevent a negative sign from being placed in front of zero value in a text file.

Author
David Belnap
Parameters
value0input value to be tested
thresholda small negative number
Returns
float "Corrected" or input value
This function is intended to be used when obvious zero values are set
to a very small negative number.  Input value is set to zero if
              value0 > threshold  and  value0 < 0
If so, the value is reset to zero.  Otherwise, the input value is 
returned.
Reference: Derived from CCP4 code

◆ select_numbers() [1/2]

vector< int > select_numbers ( Bstring string,
int  n 
)

◆ select_numbers() [2/2]

int select_numbers ( Bstring string,
int  n,
int *  numsel 
)

Converts a string with a selection specification into an integer array.

Parameters
&stringstring.
nlength of integer array.
*numselpre-allocated integer array.
Returns
int number of levels.
The integer array must be allocated to a length that would accommodate
the highest number in the selection.
If the string length is zero, all elements are selected.
Multiple subsets are separated by colons

◆ swapbytes() [1/2]

void swapbytes ( size_t  size,
unsigned char *  v,
size_t  n 
)

Swaps bytes.

Parameters
sizesize of the block to be swapped.
*va pointer to the bytes.
nnumber of bytes to swap.
Byte swapping is done in place. 

◆ swapbytes() [2/2]

void swapbytes ( unsigned char *  v,
size_t  n 
)

Swaps bytes.

Parameters
*va pointer to the bytes.
nnumber of bytes to swap.
Byte swapping is done in place. 

◆ system_memory()

long system_memory ( )

Returns system memory size.

Returns
long memory size.

◆ system_processors()

size_t system_processors ( )

Returns the number of processors.

Returns
long number of processors.

◆ systype()

SysType systype ( int  show)

Finds the system type - mostly just for byte order.

Parameters
showa flag to indicate if the result should be shown.
Returns
SysType an enumerated type.
Test the byte order of an arbitrary byte sequence by interpreting it as
an integer or a floating point number.

◆ tab()

ostream & tab ( ostream &  out)

◆ thread_limit()

int thread_limit ( 1000000  )

◆ usage()

void usage ( const char **  use,
int  all 
)

Prints usage information.

Parameters
**usethe string array.
allflag to output all usage information.
The usage information must be written into an array of srings, with each
string a line and following a specific convention for the Bsoft package.
The first line with non-space characters must start with "Usage:" 
followed by the command-line syntax. The next lines should describe the
program. The options are indicated by lines strating with "-".
The options are categorized as "Actions", "Parameters", "Input",
and "Output". This constitutes the brief form.
An additional section can be added as "Examples", that is shown
only when the "all" argument is set.

◆ vax2ieee()

void vax2ieee ( unsigned char *  v,
int  sb 
)

Converts VAX floating point format to IEEE floating point format.

Parameters
*vfour-byte array holding the floating point value
sbflag to swap bytes before conversion
Swap bytes prior to conversion if the swap flag is set.
Handle special cases of zero, infinity, NaN or normalized values
Otherwise assign the new byte values
Reference: Derived from CCP4 code

◆ verbose()

int verbose ( )

Variable Documentation

◆ command

string command