blob: f689fa260e05ec7730e1c9d41b5f49315e1d7145 [file] [log] [blame]
/**
* @file logmask.h
*
* Functions to manipulate a log severity mask.
*
* @author Ben Gardner
* @license GPL v2+
*/
#ifndef LOGMASK_H_INCLUDED
#define LOGMASK_H_INCLUDED
#include "base_types.h"
#include <cstring> /* memset() */
#include <bitset>
#include "log_levels.h"
/** A simple array of 256 bits */
typedef std::bitset<256> log_mask_t;
/**
* Tests whether a sev bit is set in the mask
*
* @param sev The severity to check
* @return true (is set) or false (not set)
*/
static_inline bool logmask_test(const log_mask_t& mask, log_sev_t sev)
{
return(mask.test(sev));
}
/**
* Sets a set bit in the mask
*
* @param sev The severity to check
* @param value true (set bit) or false (clear bit)
*/
static_inline void logmask_set_sev(log_mask_t& mask, log_sev_t sev, bool value)
{
mask.set(sev, value);
}
/**
* Sets all bits to the same value
*
* @param value true (set bit) or false (clear bit)
*/
static_inline void logmask_set_all(log_mask_t& mask, bool value)
{
if (value)
{
mask.set();
}
else
{
mask.reset();
}
}
/**
* Convert a logmask into a string.
* The string is a comma-delimited list of severities.
* Example: 1,3,5-10
*
* @param mask the mask to convert
* @param buf the buffer to hold the string
* @param size the size of the buffer
* @return buf (pass through)
*/
char *logmask_to_str(const log_mask_t& mask, char *buf, int size);
/**
* Parses a string into a log severity
*
* @param str The string to parse
* @param mask The mask to populate
*/
void logmask_from_string(const char *str, log_mask_t& mask);
#endif /* LOGMASK_H_INCLUDED */