/Users/bernard/b20/bsoft/include/utilities.h(3)

NAME
/Users/bernard/b20/bsoft/include/utilities.h - Header file for general utilities.

SYNOPSIS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <pwd.h>
#include <time.h>
#include <math.h>
#include <climits>
#include <cfloat>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <vector>
#include <tuple>
#include 'Bstring.h'

  Macros
#define BVERSION '2.0.6-20191125'
#define MAXLINELEN 1024
#define SMALLFLOAT 1e-30
#define MIN_SIZE_FOR_THREADING 100000
#define TRIGPRECISION 1e-30
#define PLANCK 6.626070E-34
#define ECHARGE 1.602177E-19
#define EMASS 9.109384E-31
#define LIGHTSPEED 299792458
#define M_PI 3.14159265358979323846264338327950288
#define M_PI_2 1.57079632679489661923132169163975144
#define M_PI_4 0.785398163397448309615660845819875721
#define TWOPI 6.28318530717958647692528676655900576
#define MIN2PI -6.28318530717958647692528676655900576
#define GOLDEN 1.61803398874989484820458683436563811772
#define RHO 0.81
#define VERB_NONE 0
#define VERB_RESULT 1
#define VERB_LABEL 2
#define VERB_PROCESS 4
#define VERB_STATS 8
#define VERB_FULL 16
#define VERB_TIME 32
#define VERB_MEMORY 64
#define VERB_DEBUG 128
#define VERB_DEBUG_STAR 256
#define VERB_DEBUG_XML 512
#define VERB_DEBUG_DM 1024
#define _systype_
#define _datatype_
#define FILL_USER 0
#define FILL_AVERAGE 1
#define FILL_BACKGROUND 2
#define FILL_MIN 3
#define FILL_MAX 4

  Enumerations
enum SysType { Unknown_System = 0, BigIEEE = 1, BigOther = 5, LittleIEEE = 6, LittleAlpha = 7, LittleVAX = 8, LittleOther = 10 }
enum DataType { Unknown_Type = 0, Bit = 1, UCharacter = 2, SCharacter = 3, UShort = 4, Short = 5, UInteger = 6, Integer = 7, ULong = 8, Long = 9, Float = 10, Double = 11 }
Base data type specifier.

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

Detailed Description

Header file for general utilities.

Author:
    Bernard Heymann

Date:
    Created: 19990722

    Modified: 20170711

Definition in file utilities.h.

Macro Definition Documentation

  #define _datatype_

Definition at line 160 of file utilities.h.

  #define _systype_

Definition at line 136 of file utilities.h.

  #define BVERSION '2.0.6-20191125'

Definition at line 9 of file utilities.h.

  #define ECHARGE 1.602177E-19

Definition at line 49 of file utilities.h.

  #define EMASS 9.109384E-31

Definition at line 50 of file utilities.h.

  #define FILL_AVERAGE 1

Definition at line 173 of file utilities.h.

  #define FILL_BACKGROUND 2

Definition at line 174 of file utilities.h.

  #define FILL_MAX 4

Definition at line 176 of file utilities.h.

  #define FILL_MIN 3

Definition at line 175 of file utilities.h.

  #define FILL_USER 0

Definition at line 172 of file utilities.h.

  #define GOLDEN 1.61803398874989484820458683436563811772

Definition at line 81 of file utilities.h.

  #define LIGHTSPEED 299792458

Definition at line 51 of file utilities.h.

  #define M_PI 3.14159265358979323846264338327950288

Definition at line 59 of file utilities.h.

  #define M_PI_2 1.57079632679489661923132169163975144

Definition at line 62 of file utilities.h.

  #define M_PI_4 0.785398163397448309615660845819875721

Definition at line 65 of file utilities.h.

  #define MAXLINELEN 1024

Definition at line 44 of file utilities.h.

  #define MIN2PI -6.28318530717958647692528676655900576

Definition at line 71 of file utilities.h.

  #define MIN_SIZE_FOR_THREADING 100000

Definition at line 46 of file utilities.h.

  #define PLANCK 6.626070E-34

Definition at line 48 of file utilities.h.

  #define RHO 0.81

Definition at line 91 of file utilities.h.

  #define SMALLFLOAT 1e-30

Definition at line 45 of file utilities.h.

  #define TRIGPRECISION 1e-30

Definition at line 47 of file utilities.h.

  #define TWOPI 6.28318530717958647692528676655900576

Definition at line 68 of file utilities.h.

  #define VERB_DEBUG 128

Definition at line 112 of file utilities.h.

  #define VERB_DEBUG_DM 1024

Definition at line 115 of file utilities.h.

  #define VERB_DEBUG_STAR 256

Definition at line 113 of file utilities.h.

  #define VERB_DEBUG_XML 512

Definition at line 114 of file utilities.h.

  #define VERB_FULL 16

Definition at line 109 of file utilities.h.

  #define VERB_LABEL 2

Definition at line 106 of file utilities.h.

  #define VERB_MEMORY 64

Definition at line 111 of file utilities.h.

  #define VERB_NONE 0

Definition at line 104 of file utilities.h.

  #define VERB_PROCESS 4

Definition at line 107 of file utilities.h.

  #define VERB_RESULT 1

Definition at line 105 of file utilities.h.

  #define VERB_STATS 8

Definition at line 108 of file utilities.h.

  #define VERB_TIME 32

Definition at line 110 of file utilities.h.

Enumeration Type Documentation

  enum DataType

Base data type specifier.

This determines what simple data type is used in an image.

Enumerator

Unknown_Type

Bit

UCharacter

SCharacter

UShort

Short

UInteger

Integer

ULong

Long

Float

Double

Definition at line 146 of file utilities.h.

  enum SysType

Enumerator

Unknown_System

BigIEEE

BigOther

LittleIEEE

LittleAlpha

LittleVAX

LittleOther

Definition at line 127 of file utilities.h.

Function Documentation

  double angle_set_negPI_to_PI (double angle)

Returns an angle between -PI and PI.

Parameters:
    angle input angle.

Returns:
    double angle between -PI and PI.

Reference: Derived from CCP4 code

Definition at line 594 of file utilities.cpp.

  int bexit (int value)

Exit function for cleanup and debugging.

Parameters:
    value exit value.

Returns:
    int given value.

Definition at line 273 of file utilities.cpp.

  Bstring command_line_time (int n, char ** strings)

Returns a set of strings and time in a string.

Parameters:
    n the number of strings.
    **strings an array of strings.

Returns:
    Bstring new string.

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

Definition at line 60 of file utilities.cpp.

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

Displays the error with file and line reference.

Parameters:
    *message a string to be included.
    *file the file name (should be FILE).
    line the 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

Definition at line 755 of file utilities.cpp.

  int findNextPowerOf (int startNumber, int powerOf)

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

Author:
    Dan Krainak

Parameters:
    startNumber number to begin from.
    powerOf power 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.

Definition at line 433 of file utilities.cpp.

  size_t get_chunk_size (size_t datasize)

Returns the chunk size per thread.

Parameters:
    datasize size 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

Definition at line 645 of file utilities.cpp.

  size_t get_chunk_size (size_t datasize, size_t c)

Returns the chunk size per thread.

Parameters:
    datasize size of data to be divided into chunks.
    c channel 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

Definition at line 679 of file utilities.cpp.

  string get_cmd_line (int argc, char ** argv)

Returns the command line as a string.

Parameters:
    argc the number of command line arguments.
    **argv the command line arguments.

Returns:
    string the command line string.

    Concatenates the command line arguments into one string. The string
    receiving the command line must be at least 1024 bytes long.

Definition at line 36 of file utilities.cpp.

  float get_float (char * ptr, int len)

Converts a defined length string into a floating point number.

Parameters:
    *ptr pointer to the string.
    len length to be scanned.

Returns:
    float the floating point number.

    The string is copied, 0-terminated, and scanned for a floating point number.

Definition at line 482 of file utilities.cpp.

  int get_integer (char * ptr, int len)

Converts a defined length string into an integer.

Parameters:
    *ptr pointer to the string.
    len length to be scanned.

Returns:
    int the integer.

    The string is copied, 0-terminated, and scanned for an integer.

Definition at line 459 of file utilities.cpp.

  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.

Definition at line 85 of file utilities.cpp.

  DataType getdatatype (char letter)

Get the data type indicated by a single letter code.

Parameters:
    letter letter indicating data type.

Returns:
    DataType data type (defined in rwimg.h).

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

Definition at line 288 of file utilities.cpp.

  int memory_check (long mem_required)

Checking if there is enough memory, abort if not.

Parameters:
    mem_required memory required.

Returns:
    int 1 if enough.

Definition at line 248 of file utilities.cpp.

  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:
    value0 input value to be tested
    threshold a 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

Definition at line 622 of file utilities.cpp.

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

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

Parameters:
    &string string.
    n length of integer array.
    *numsel pre-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

Definition at line 328 of file utilities.cpp.

  void swapbytes (unsigned char * v, size_t n)

Swaps bytes.

Parameters:
    *v a pointer to the bytes.
    n number of bytes to swap.

    Byte swapping is done in place.

Definition at line 504 of file utilities.cpp.

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

Swaps bytes.

Parameters:
    size size of the block to be swapped.
    *v a pointer to the bytes.
    n number of bytes to swap.

    Byte swapping is done in place.

Definition at line 525 of file utilities.cpp.

  long system_memory ()

Returns system memory size.

Returns:
    long memory size.

Definition at line 204 of file utilities.cpp.

  size_t system_processors ()

Returns the number of processors.

Returns:
    long number of processors.

Definition at line 186 of file utilities.cpp.

  SysType systype (int show)

Finds the system type - mostly just for byte order.

Parameters:
    show a 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.

Definition at line 144 of file utilities.cpp.

  ostream& tab (ostream & out)

Definition at line 21 of file utilities.cpp.

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

Prints usage information.

Parameters:
    **use the string array.
    all flag 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.

Definition at line 119 of file utilities.cpp.

  void vax2ieee (unsigned char * v, int sb)

Converts VAX floating point format to IEEE floating point format.

Parameters:
    *v four-byte array holding the floating point value
    sb flag 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

Definition at line 548 of file utilities.cpp.

Author

Generated automatically by Doxygen for Bsoft from the source code.