MRPT logo

os.h File Reference

#include <mrpt/config.h>
#include <cstdarg>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <vector>
#include <mrpt/utils/utils_impexp.h>
#include <mrpt/utils/types.h>

Go to the source code of this file.


Classes

struct  mrpt::system::TThreadHandle
 This structure contains the information needed to interface the threads API on each platform:. More...
struct  mrpt::system::TTimeParts
 The parts of a date/time (it's like the standard 'tm' but with fractions of seconds). More...

Namespaces

namespace  mrpt
 This is the global namespace for all Mobile Robot Porgramming Toolkit (MRPT) libraries.
namespace  mrpt::utils
 Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values, timewatch, extensions to STL.
namespace  mrpt::system
 This namespace provides a OS-independent interface to many useful functions: filenames manipulation, time and date, string parsing, file I/O, threading, memory allocation, etc.
namespace  mrpt::system::os
 This namespace provides a OS-independent interface to low-level functions.

Defines

#define _IAMINUTILSDEFS_H
#define MRPT_printf_format_check(_FMT_, _VARARGS_)
#define MRPT_scanf_format_check(_FMT_, _VARARGS_)
#define MRPT_NO_THROWS   throw()
 Used after member declarations.
#define INVALID_TIMESTAMP   (0)
 Represents an invalid timestamp, where applicable.
#define mrpt_alloca(nBytes)   ::malloc( nBytes );
 In platforms and compilers with support to "alloca", allocate a memory block on the stack; if alloca is not supported, it is emulated as a normal "malloc" - NOTICE: Since in some platforms alloca will be emulated with malloc, alloca_free MUST BE ALWAYS CALLED to avoid memory leaks.
#define mrpt_alloca_free(mem_block)   free(mem_block)
 This method must be called to "free" each memory block allocated with "system::alloca": If the block was really allocated in the stack, no operation is actually performed, otherwise it will be freed from the heap.

Enumerations

enum  mrpt::system::TConsoleColor { mrpt::system::CONCOL_NORMAL = 0, mrpt::system::CONCOL_BLUE = 1, mrpt::system::CONCOL_GREEN = 2, mrpt::system::CONCOL_RED = 4 }
 For use in setConsoleColor. More...

Functions

int MRPTDLLIMPEXP mrpt::system::os::sprintf (char *buf, size_t bufSize, const char *format,...) MRPT_NO_THROWS MRPT_printf_format_check(3
 An OS-independent version of sprintf (Notice the bufSize param, which may be ignored in some compilers).
int MRPTDLLIMPEXP int MRPTDLLIMPEXP mrpt::system::os::vsprintf (char *buf, size_t bufSize, const char *format, va_list args) MRPT_NO_THROWS
 An OS-independent version of vsprintf (Notice the bufSize param, which may be ignored in some compilers).
int MRPTDLLIMPEXP mrpt::system::os::vsnprintf (char *buf, size_t bufSize, const char *format, va_list args) MRPT_NO_THROWS
 An OS-independent version of vsnprintf (Notice the bufSize param, which may be ignored in some compilers).
FILE MRPTDLLIMPEXP * mrpt::system::os::fopen (const char *fileName, const char *mode) MRPT_NO_THROWS
 An OS-independent version of fopen.
FILE MRPTDLLIMPEXP * mrpt::system::os::fopen (const std::string &fileName, const char *mode) MRPT_NO_THROWS
 An OS-independent version of fopen (std::string version).
int MRPTDLLIMPEXP mrpt::system::os::fprintf (FILE *fil, const char *format,...) MRPT_NO_THROWS MRPT_printf_format_check(2
 An OS-independent version of fprintf.
int MRPTDLLIMPEXP int MRPTDLLIMPEXP mrpt::system::os::fscanf (FILE *fil, const char *format,...) MRPT_NO_THROWS MRPT_scanf_format_check(2
 An OS-independent version of fscanf.
int MRPTDLLIMPEXP int
MRPTDLLIMPEXP void
MRPTDLLIMPEXP 
mrpt::system::os::fclose (FILE *f)
 An OS-independent version of fclose.
char MRPTDLLIMPEXP * mrpt::system::os::strcat (char *dest, size_t destSize, const char *source) MRPT_NO_THROWS
 An OS-independent version of strcat.
char MRPTDLLIMPEXP * mrpt::system::os::strcpy (char *dest, size_t destSize, const char *source) MRPT_NO_THROWS
 An OS-independent version of strcpy.
int MRPTDLLIMPEXP mrpt::system::os::_strcmp (const char *str1, const char *str2) MRPT_NO_THROWS
 An OS-independent version of strcmp.
int MRPTDLLIMPEXP mrpt::system::os::_strcmpi (const char *str1, const char *str2) MRPT_NO_THROWS
 An OS-independent version of strcmpi.
int64_t MRPTDLLIMPEXP mrpt::system::os::_strtoll (const char *nptr, char **endptr, int base)
 An OS-independent version of strtoll.
uint64_t MRPTDLLIMPEXP mrpt::system::os::_strtoull (const char *nptr, char **endptr, int base)
 An OS-independent version of strtoull.
void MRPTDLLIMPEXP mrpt::system::os::memcpy (void *dest, size_t destSize, const void *src, size_t copyCount) MRPT_NO_THROWS
 An OS and compiler independent version of "memcpy".
int MRPTDLLIMPEXP mrpt::system::os::getch () MRPT_NO_THROWS
 An OS-independent version of getch, which waits until a key is pushed.
bool MRPTDLLIMPEXP mrpt::system::os::kbhit () MRPT_NO_THROWS
 An OS-independent version of kbhit, which returns true if a key has been pushed.
void MRPTDLLIMPEXP mrpt::system::sleep (int time_ms) MRPT_NO_THROWS
 An OS-independent method for sending the current thread to "sleep" for a given period of time.
char MRPTDLLIMPEXP * mrpt::system::strtok (char *str, const char *strDelimit, char **context) MRPT_NO_THROWS
 An OS-independent method for tokenizing a string.
void MRPTDLLIMPEXP mrpt::system::tokenize (const std::string &inString, const std::string &inDelimiters, std::deque< std::string > &outTokens) MRPT_NO_THROWS
 Tokenizes a string according to a set of delimiting characters.
void MRPTDLLIMPEXP mrpt::system::tokenize (const std::string &inString, const std::string &inDelimiters, std::vector< std::string > &outTokens) MRPT_NO_THROWS
 Tokenizes a string according to a set of delimiting characters.
std::string MRPTDLLIMPEXP mrpt::system::trim (const std::string &str)
 Removes leading and trailing spaces:.
bool MRPTDLLIMPEXP mrpt::system::isNaN (float f) MRPT_NO_THROWS
 Returns true if the number is NaN.
bool MRPTDLLIMPEXP mrpt::system::isNaN (double f) MRPT_NO_THROWS
 Returns true if the number is NaN.
bool MRPTDLLIMPEXP mrpt::system::isFinite (float f) MRPT_NO_THROWS
 Returns true if the number is non infinity.
bool MRPTDLLIMPEXP mrpt::system::isFinite (double f) MRPT_NO_THROWS
 Returns true if the number is non infinity.
void MRPTDLLIMPEXP mrpt::system::pause (const std::string &msg=std::string("Press any key to continue...")) MRPT_NO_THROWS
 Shows the message "Press any key to continue" (or other custom message) to the current standard output and returns when a key is pressed.
void MRPTDLLIMPEXP mrpt::system::clearConsole ()
 Clears the console window.
bool MRPTDLLIMPEXP mrpt::system::vectorToTextFile (const std::vector< float > &vec, const std::string &fileName, bool append=false, bool byRows=false)
 A useful function for debuging, which saves a std::vector into a text file (compat.
bool MRPTDLLIMPEXP mrpt::system::vectorToTextFile (const std::vector< double > &vec, const std::string &fileName, bool append=false, bool byRows=false)
 A useful function for debuging, which saves a std::vector into a text file (compat.
bool MRPTDLLIMPEXP mrpt::system::vectorToTextFile (const std::vector< int > &vec, const std::string &fileName, bool append=false, bool byRows=false)
 A useful function for debuging, which saves a std::vector into a text file (compat.
bool MRPTDLLIMPEXP mrpt::system::vectorToTextFile (const std::vector< size_t > &vec, const std::string &fileName, bool append=false, bool byRows=false)
 A useful function for debuging, which saves a std::vector into a text file (compat.
bool MRPTDLLIMPEXP mrpt::system::vectorToBinaryFile (const vector_byte &vec, const std::string &fileName)
 Saves a vector directly as a binary dump to a file:.
bool MRPTDLLIMPEXP mrpt::system::loadBinaryFile (vector_byte &out_data, const std::string &fileName)
 Loads a entire file as a vector of bytes.
unsigned long MRPTDLLIMPEXP mrpt::system::getMemoryUsage ()
 Returns the memory occupied by this process, in bytes.
std::string MRPTDLLIMPEXP mrpt::system::toUpperCase (const std::string &str)
 Returns a lower-case version of a string.
std::string MRPTDLLIMPEXP mrpt::system::toLowerCase (const std::string &str)
 Returns an upper-case version of a string.
std::string MRPTDLLIMPEXP mrpt::system::upperCase (const std::string &str)
 Returns a lower-case version of a string.
std::string MRPTDLLIMPEXP mrpt::system::lowerCase (const std::string &str)
 Returns an upper-case version of a string.
std::string MRPTDLLIMPEXP mrpt::system::MRPT_getCompilationDate ()
 Returns the MRPT compilation date.
std::string MRPTDLLIMPEXP mrpt::system::MRPT_getVersion ()
 Returns a string describing the MRPT version including the SVN number.
void MRPTDLLIMPEXP mrpt::system::registerFatalExceptionHandlers ()
 Call this to register handlers for fatal erros (memory access,etc) that show useful debug information (It is called automatically normally, no need for the user to explicitly call this method.
void MRPTDLLIMPEXP mrpt::system::decodeUTF8 (const std::string &strUTF8, vector_word &out_uniStr)
 Decodes a UTF-8 string into an UNICODE string.
void MRPTDLLIMPEXP mrpt::system::encodeUTF8 (const vector_word &input, std::string &output)
 Encodes a 2-bytes UNICODE string into a UTF-8 string.
void MRPTDLLIMPEXP mrpt::system::encodeBase64 (const vector_byte &inputData, std::string &outString)
 Encode a sequence of bytes as a string in base-64.
bool MRPTDLLIMPEXP mrpt::system::decodeBase64 (const std::string &inString, vector_byte &outData)
 Decode a base-64 string into the original sequence of bytes.
std::string MRPTDLLIMPEXP mrpt::system::stack_trace (bool calling_from_exception=false)
 Dumps the current program stack with detailed information of source files and lines.
bool MRPTDLLIMPEXP mrpt::system::launchProcess (const std::string &command)
 Executes the given command (which may contain a program + arguments), and waits until it finishes.
void MRPTDLLIMPEXP mrpt::system::setConsoleColor (TConsoleColor color, bool changeStdErr=false)
 Changes the text color in the console for the text written from now on.
std::string MRPTDLLIMPEXP mrpt::system::unitsFormat (const double val, int nDecimalDigits=2)
 This function implements formatting with the appropriate SI metric unit prefix: 1e-12->'p', 1e-9->'n', 1e-6->'u', 1e-3->'m', 1->'', 1e3->'K', 1e6->'M', 1e9->'G', 1e12->'T'.
Aligned memory management
void MRPTDLLIMPEXP * mrpt::system::os::aligned_malloc (size_t bytes, size_t alignment)
 Returns an aligned memory block.
void MRPTDLLIMPEXP * mrpt::system::os::aligned_calloc (size_t bytes, size_t alignment)
 Identical to aligned_malloc, but it zeroes the reserved memory block.
void MRPTDLLIMPEXP * mrpt::system::os::aligned_realloc (void *old_ptr, size_t bytes, size_t alignment)
 Frees a memory block reserved by aligned_malloc.
void MRPTDLLIMPEXP mrpt::system::os::aligned_free (void *p)
 Frees a memory block reserved by aligned_malloc.
Directories, files, and file names
std::string MRPTDLLIMPEXP mrpt::system::getTempFileName ()
 Returns the name of a proposed temporary file name.
std::string MRPTDLLIMPEXP mrpt::system::getcwd ()
 Returns the current working directory.
bool MRPTDLLIMPEXP mrpt::system::createDirectory (const std::string &dirName)
 Creates a directory.
bool MRPTDLLIMPEXP mrpt::system::deleteFile (const std::string &fileName)
 Deletes a single file.
void MRPTDLLIMPEXP mrpt::system::deleteFiles (const std::string &s)
 Delete one or more files, especified by the (optional) path and the file name (including '?' or '*') - Use forward slash ('/') for directories for compatibility between Windows and Linux, since they will be internally traslated into backward slashes ('\') if MRPT is compiled under Windows.
bool MRPTDLLIMPEXP mrpt::system::renameFile (const std::string &oldFileName, const std::string &newFileName, std::string *error_msg=NULL)
 Renames a file - If the target path is different and the filesystem allows it, it will be moved to the new location.
bool MRPTDLLIMPEXP mrpt::system::deleteFilesInDirectory (const std::string &s, bool deleteDirectoryAsWell=false)
 Delete all the files in a given directory (nothing done if directory does not exists, or path is a file).
std::string MRPTDLLIMPEXP mrpt::system::extractFileName (const std::string &filePath)
 Extract just the name (without extension) of a filename from a complete path plus name plus extension.
std::string MRPTDLLIMPEXP mrpt::system::extractFileExtension (const std::string &filePath, bool ignore_gz=false)
 Extract the extension of a filename.
std::string MRPTDLLIMPEXP mrpt::system::extractFileDirectory (const std::string &filePath)
 Extract the whole path (the directory) of a filename from a complete path plus name plus extension.
bool MRPTDLLIMPEXP mrpt::system::fileExists (const std::string &fileName)
 Test if a given file (or directory) exists.
bool MRPTDLLIMPEXP mrpt::system::directoryExists (const std::string &fileName)
 Test if a given directory exists (it fails if the given path refers to an existing file).
std::string MRPTDLLIMPEXP mrpt::system::fileNameStripInvalidChars (const std::string &filename)
 Replace invalid filename chars by underscores ('_').

Threads

enum  mrpt::system::TProcessPriority { mrpt::system::ppIdle = 0, mrpt::system::ppNormal, mrpt::system::ppHigh, mrpt::system::ppVeryHigh }
 The type for cross-platform process (application) priorities. More...
enum  mrpt::system::TThreadPriority { mrpt::system::tpLow = 0, mrpt::system::tpNormal, mrpt::system::tpHigh }
 The type for cross-platform thread priorities. More...
TThreadHandle MRPTDLLIMPEXP mrpt::system::createThread (void(*func)(void *), void *param=NULL)
 Creates a new thread.
void MRPTDLLIMPEXP mrpt::system::joinThread (const TThreadHandle &threadHandle)
 Waits until the given thread ends.
unsigned long MRPTDLLIMPEXP mrpt::system::getCurrentThreadId () MRPT_NO_THROWS
 Returns the ID of the current thread.
void MRPTDLLIMPEXP mrpt::system::getCurrentThreadTimes (time_t &creationTime, time_t &exitTime, double &cpuTime)
 Returns the creation and exit times of the current thread and its CPU time consumed.
void MRPTDLLIMPEXP mrpt::system::changeThreadPriority (const TThreadHandle &threadHandle, TThreadPriority priority)
 Change the priority of the given thread.
void MRPTDLLIMPEXP mrpt::system::changeCurrentProcessPriority (TProcessPriority priority)
 Change the priority of the given process (it applies to all the threads, plus independent modifiers for each thread).

Time and date functions

typedef uint64_t mrpt::system::TTimeStamp
 A system independent time type, it holds the the number of 100-nanosecond intervals since January 1, 1601 (UTC).
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::buildTimestampFromParts (const mrpt::system::TTimeParts &p)
 Builds a timestamp from the parts (Parts are in UTC).
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::buildTimestampFromPartsLocalTime (const mrpt::system::TTimeParts &p)
 Builds a timestamp from the parts (Parts are in local time).
void MRPTDLLIMPEXP mrpt::system::timestampToParts (TTimeStamp t, TTimeParts &p)
 Gets the individual parts of a date/time (days, hours, minutes, seconds).
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::getCurrentTime ()
 Returns the current (UTC) system time.
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::now ()
 A shortcut for system::getCurrentTime.
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::getCurrentLocalTime ()
 Returns the current (local) time.
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::time_tToTimestamp (const double &t)
 Transform from standard "time_t" (actually a double number, it can contain fractions of seconds) to TTimeStamp.
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::time_tToTimestamp (const time_t &t)
 Transform from standard "time_t" to TTimeStamp.
double MRPTDLLIMPEXP mrpt::system::timestampTotime_t (const mrpt::system::TTimeStamp &t)
 Transform from TTimeStamp to standard "time_t" (actually a double number, it can contain fractions of seconds).
double MRPTDLLIMPEXP mrpt::system::timeDifference (const mrpt::system::TTimeStamp &t_first, const mrpt::system::TTimeStamp &t_later)
 Retuns the time difference from t1 to t2 (positive if t2 is posterior to t1), in seconds.
mrpt::system::TTimeStamp
MRPTDLLIMPEXP 
mrpt::system::secondsToTimestamp (const double &nSeconds)
 Transform a time interval (in seconds) into TTimeStamp (e.g.
std::string MRPTDLLIMPEXP mrpt::system::formatTimeInterval (const double &timeSeconds)
 Returns a formated string with the given time difference (passed as the number of seconds), as a string [H]H:MM:SS.MILISECS.
std::string MRPTDLLIMPEXP mrpt::system::dateTimeToString (const mrpt::system::TTimeStamp &t)
 Convert a timestamp into this textual form (UTC time): YEAR/MONTH/DAY,HH:MM:SS.MMM.
std::string MRPTDLLIMPEXP mrpt::system::dateTimeLocalToString (const mrpt::system::TTimeStamp &t)
 Convert a timestamp into this textual form (in local time): YEAR/MONTH/DAY,HH:MM:SS.MMM.
std::string MRPTDLLIMPEXP mrpt::system::dateToString (const mrpt::system::TTimeStamp &t)
 Convert a timestamp into this textual form: YEAR/MONTH/DAY.
double MRPTDLLIMPEXP mrpt::system::extractDayTimeFromTimestamp (const mrpt::system::TTimeStamp &t)
 Returns the number of seconds ellapsed from midnight in the given timestamp.
std::string MRPTDLLIMPEXP mrpt::system::timeToString (const mrpt::system::TTimeStamp &t)
 Convert a timestamp into this textual form (UTC): HH:MM:SS.MMMMMM.
std::string MRPTDLLIMPEXP mrpt::system::timeLocalToString (const mrpt::system::TTimeStamp &t)
 Convert a timestamp into this textual form (in local time): HH:MM:SS.MMMMMM.
std::string MRPTDLLIMPEXP mrpt::system::intervalFormat (const double seconds)
 This function implements time interval formatting: Given a time in seconds, it will return a string describing the interval with the most appropriate unit.


Define Documentation

#define _IAMINUTILSDEFS_H

Definition at line 40 of file os.h.

#define INVALID_TIMESTAMP   (0)

Represents an invalid timestamp, where applicable.

Definition at line 66 of file os.h.

#define mrpt_alloca ( nBytes   )     ::malloc( nBytes );

In platforms and compilers with support to "alloca", allocate a memory block on the stack; if alloca is not supported, it is emulated as a normal "malloc" - NOTICE: Since in some platforms alloca will be emulated with malloc, alloca_free MUST BE ALWAYS CALLED to avoid memory leaks.

This method MUST BE a macro rather than a function in order to operate on the caller's stack.

See also:
mrpt_alloca_free

Definition at line 400 of file os.h.

#define mrpt_alloca_free ( mem_block   )     free(mem_block)

This method must be called to "free" each memory block allocated with "system::alloca": If the block was really allocated in the stack, no operation is actually performed, otherwise it will be freed from the heap.

This method MUST BE a macro rather than a function in order to operate on the caller's stack.

See also:
mrpt_alloca

Definition at line 415 of file os.h.

#define MRPT_NO_THROWS   throw()

Used after member declarations.

Definition at line 62 of file os.h.

#define MRPT_printf_format_check ( _FMT_,
_VARARGS_   ) 

Definition at line 50 of file os.h.

#define MRPT_scanf_format_check ( _FMT_,
_VARARGS_   ) 

Definition at line 57 of file os.h.




Page generated by Doxygen 1.5.9 for MRPT 0.7.1 SVN: at Mon Aug 17 22:21:34 EDT 2009