/usr/include/loki/Register.h is in libloki-dev 0.1.7-3ubuntu1.
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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | ////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2006 Peter Kümmel
// 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 LOKI_REGISTER_INC_
#define LOKI_REGISTER_INC_
// $Id: Register.h 776 2006-11-09 13:12:57Z syntheticpp $
#include "TypeManip.h"
#include "HierarchyGenerators.h"
/// \defgroup RegisterGroup Register
namespace Loki
{
////////////////////////////////////////////////////////////////////////////////
//
// Helper classes/functions for RegisterByCreateSet
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// \ingroup RegisterGroup
/// Must be specialized be the user
////////////////////////////////////////////////////////////////////////////////
template<class t> bool RegisterFunction();
////////////////////////////////////////////////////////////////////////////////
/// \ingroup RegisterGroup
/// Must be specialized be the user
////////////////////////////////////////////////////////////////////////////////
template<class t> bool UnRegisterFunction();
namespace Private
{
template<class T>
struct RegisterOnCreate
{
RegisterOnCreate() { RegisterFunction<T>(); }
};
template<class T>
struct UnRegisterOnDelete
{
~UnRegisterOnDelete() { UnRegisterFunction<T>(); }
};
template<class T>
struct RegisterOnCreateElement
{
RegisterOnCreate<T> registerObj;
};
template<class T>
struct UnRegisterOnDeleteElement
{
UnRegisterOnDelete<T> unregisterObj;
};
}
////////////////////////////////////////////////////////////////////////////////
/// \class RegisterOnCreateSet
///
/// \ingroup RegisterGroup
/// Implements a generic register class which registers classes of a typelist
///
/// \par Usage
/// see test/Register
////////////////////////////////////////////////////////////////////////////////
template<typename ElementList>
struct RegisterOnCreateSet
: GenScatterHierarchy<ElementList, Private::RegisterOnCreateElement>
{};
////////////////////////////////////////////////////////////////////////////////
/// \class UnRegisterOnDeleteSet
///
/// \ingroup RegisterGroup
/// Implements a generic register class which unregisters classes of a typelist
///
/// \par Usage
/// see test/Register
////////////////////////////////////////////////////////////////////////////////
template<typename ElementList>
struct UnRegisterOnDeleteSet
: GenScatterHierarchy<ElementList, Private::UnRegisterOnDeleteElement>
{};
////////////////////////////////////////////////////////////////////////////////
/// \def LOKI_CHECK_CLASS_IN_LIST( CLASS , LIST )
///
/// \ingroup RegisterGroup
/// Check if CLASS is in the typelist LIST.
///
/// \par Usage
/// see test/Register
////////////////////////////////////////////////////////////////////////////////
#define LOKI_CONCATE(a,b,c,d) a ## b ## c ## d
#define LOKI_CONCAT(a,b,c,d) LOKI_CONCATE(a,b,c,d)
#define LOKI_CHECK_CLASS_IN_LIST( CLASS , LIST ) \
\
struct LOKI_CONCAT(check_,CLASS,_isInList_,LIST) \
{ \
typedef int LOKI_CONCAT(ERROR_class_,CLASS,_isNotInList_,LIST); \
}; \
typedef Loki::Select<Loki::TL::IndexOf<LIST, CLASS>::value == -1, \
CLASS, \
LOKI_CONCAT(check_,CLASS,_isInList_,LIST)> \
::Result LOKI_CONCAT(CLASS,isInList,LIST,result); \
typedef LOKI_CONCAT(CLASS,isInList,LIST,result):: \
LOKI_CONCAT(ERROR_class_,CLASS,_isNotInList_,LIST) \
LOKI_CONCAT(ERROR_class_,CLASS,_isNotInList__,LIST);
} // namespace Loki
#endif // end file guardian
|