/usr/include/libecap/common/area.h is in libecap3-dev 1.0.1-3.2.
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 | /* (C) 2008 The Measurement Factory */
#ifndef LIBECAP__COMMON__AREA_H
#define LIBECAP__COMMON__AREA_H
#include <libecap/common/forward.h>
#include <libecap/common/memory.h>
#include <iosfwd>
#include <string>
namespace libecap {
typedef std::string::size_type size_type;
extern const size_type nsize; // same as std::string::npos
class AreaDetails;
// a continuous, fixed-size buffer area
// no zero-termination is guaranteed
class Area {
public:
typedef shared_ptr<AreaDetails> Details;
public:
static Area FromTempBuffer(const char *aStart, size_type aSize);
static Area FromTempString(const std::string &tmp);
Area(): start(""), size(0) {}
Area(const char *aStart, size_type aSize):
start(aStart), size(aSize) {}
Area(const char *aStart, size_type aSize, const Details &aDetails):
start(aStart), size(aSize), details(aDetails) {}
std::string toString() const; // expensive
// for safe conversion to bool, ignore
typedef const size_type Area::*SafeBool;
// false if empty; true otherwise
operator SafeBool() const { return size ? &Area::size : 0; }
public:
const char *start;
size_type size;
Details details; // creator-defined
private:
bool does_not_support_comparisons() const; // not implemented
template<typename AreaDoesNotSupportComparisonWith> bool operator==(const AreaDoesNotSupportComparisonWith&) const { return does_not_support_comparisons(); }
template<typename AreaDoesNotSupportComparisonWith> bool operator!=(const AreaDoesNotSupportComparisonWith&) const { return does_not_support_comparisons(); }
};
// this stub can be enhanced by area creators to optimize area operations
class AreaDetails {
public:
virtual ~AreaDetails() {}
};
std::ostream &operator <<(std::ostream &os, const Area &area);
/* make Area comparisons illegal by default */
template <typename AreaDoesNotSupportComparisonWith> bool operator ==(const AreaDoesNotSupportComparisonWith &t, const Area &a) { return a == t; }
template <typename AreaDoesNotSupportComparisonWith> bool operator !=(const AreaDoesNotSupportComparisonWith &t, const Area &a) { return a != t; }
} // namespace libecap
#endif
|