/usr/include/loki/flex/flex_string_details.h is in libloki-dev 0.1.7-3.
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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | ////////////////////////////////////////////////////////////////////////////////
// flex_string
// Copyright (c) 2001 by Andrei Alexandrescu
// Permission to use, copy, modify, distribute and sell this software for any
// purpose is hereby granted without fee, provided that the above copyright
// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
// The author makes no representations about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////
#ifndef FLEX_STRING_DETAILS_INC_
#define FLEX_STRING_DETAILS_INC_
// $Id: flex_string_details.h 754 2006-10-17 19:59:11Z syntheticpp $
#include <memory>
namespace flex_string_details
{
template <class InIt, class OutIt>
OutIt copy_n(InIt b, typename std::iterator_traits<InIt>::difference_type n, OutIt d)
{
for (; n != 0; --n, ++b, ++d)
{
*d = *b;
}
return d;
}
template <class Pod, class T>
inline void pod_fill(Pod* b, Pod* e, T c)
{
switch ((e - b) & 7)
{
case 0:
while (b != e)
{
*b = c; ++b;
case 7: *b = c; ++b;
case 6: *b = c; ++b;
case 5: *b = c; ++b;
case 4: *b = c; ++b;
case 3: *b = c; ++b;
case 2: *b = c; ++b;
case 1: *b = c; ++b;
}
}
}
template <class Pod>
inline void pod_move(const Pod* b, const Pod* e, Pod* d)
{
using namespace std;
memmove(d, b, (e - b) * sizeof(*b));
}
template <class Pod>
inline Pod* pod_copy(const Pod* b, const Pod* e, Pod* d)
{
const size_t s = e - b;
using namespace std;
memcpy(d, b, s * sizeof(*b));
return d + s;
}
template <typename T> struct get_unsigned
{
typedef T result;
};
template <> struct get_unsigned<char>
{
typedef unsigned char result;
};
template <> struct get_unsigned<signed char>
{
typedef unsigned char result;
};
template <> struct get_unsigned<short int>
{
typedef unsigned short int result;
};
template <> struct get_unsigned<int>
{
typedef unsigned int result;
};
template <> struct get_unsigned<long int>
{
typedef unsigned long int result;
};
enum Shallow {};
}
#endif // FLEX_STRING_DETAILS_INC_
|