/usr/include/ui-utilcpp/PosixRegex.hpp is in libui-utilcpp-dev 1.8.5-1+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | /**
* @file
* @brief Posixregex, descriptors and sockets.
*/
#ifndef UI_UTIL_POSIXREGEX_HPP
#define UI_UTIL_POSIXREGEX_HPP
// STDC++
#include <string>
// POSIX C
#include <regex.h>
// C++ libraries
#include <ui-utilcpp/Exception.hpp>
namespace UI {
namespace Util {
/** @example Regex.cpp Example on how to use the PosixRegex class. */
/** @brief Wrapper class for POSIX.2 regex functions.
*
* @note For the future, one might rather use the libboost's regexx implementation.
*
* @see regex(3)
* @bug Not fully encapsulated; flags must be given using the values from regex.h; Catched
* exception code must be compared against the reg_errcode_t defined in regex.h.
* @bug Does not support multiple matches (seems this does not work anyway currently)
* @bug Does not support clear text error reporting as via regerror.
*/
class PosixRegex
{
private:
std::string getErrorMessage(int result) const;
public:
/** @brief Exceptions we might throw. */
typedef CodeException<reg_errcode_t> Exception;
/** @brief Helper class representing match data. */
class Match
{
public:
Match(): matches(false), begin(0), end(0) {}
/** Do we have a match? */
bool matches;
/** If yes: where it begins */
unsigned begin;
/** If yes: where it ends */
unsigned end;
};
/**
* @param regex The regular expression
* @param cflags Flags as described in regex(3)
*/
PosixRegex(std::string const & regex, int cflags=0) throw(Exception);
/** */
~PosixRegex();
/** @brief Check if text matches, and return the (first) match.
*
* @param text Text to examine.
* @param eflags Flags as described in regex(3).
* @returns First match found; if no match, match.matches will be false.
*/
Match runMatch(std::string const & text, int eflags=0) throw(Exception);
/** @brief Check if text matches.
*
* @param text Text to examine.
* @param eflags Flags as described in regex(3).
* @returns True if match found; else false.
*/
bool run(std::string const & text, int eflags=0) throw(Exception);
private:
regex_t preg_;
};
}}
#endif
|