/usr/include/libwildmagic/Wm5InitTerm.h is in libwildmagic-dev 5.13-1ubuntu1.
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 | // Geometric Tools, LLC
// Copyright (c) 1998-2014
// Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt
// http://www.geometrictools.com/License/Boost/LICENSE_1_0.txt
//
// File Version: 5.0.1 (2010/10/01)
#ifndef WM5INITTERM_H
#define WM5INITTERM_H
#include "Wm5CoreLIB.h"
namespace Wm5
{
class WM5_CORE_ITEM InitTerm
{
public:
typedef void (*Initializer)(void);
static void AddInitializer (Initializer function);
static void ExecuteInitializers ();
typedef void (*Terminator)(void);
static void AddTerminator (Terminator function);
static void ExecuteTerminators ();
private:
// This number must be large enough to support your application. If your
// application triggers an assert about exceeding this, change this number
// and recompile. The goal is to avoid dynamic allocation during premain
// and postmain execution, thus making it easier to manage and track
// memory usage.
enum
{
MAX_ELEMENTS = 512
};
static int msNumInitializers;
static Initializer msInitializers[MAX_ELEMENTS];
static int msNumTerminators;
static Terminator msTerminators[MAX_ELEMENTS];
};
}
//----------------------------------------------------------------------------
#define WM5_DECLARE_INITIALIZE \
public: \
static bool RegisterInitialize (); \
static void Initialize (); \
private: \
static bool msInitializeRegistered
//----------------------------------------------------------------------------
#define WM5_IMPLEMENT_INITIALIZE(classname) \
bool classname::msInitializeRegistered = false; \
bool classname::RegisterInitialize () \
{ \
if (!msInitializeRegistered) \
{ \
InitTerm::AddInitializer(classname::Initialize); \
msInitializeRegistered = true; \
} \
return msInitializeRegistered; \
}
//----------------------------------------------------------------------------
#define WM5_REGISTER_INITIALIZE(classname) \
static bool gsInitializeRegistered_##classname = \
classname::RegisterInitialize ()
//----------------------------------------------------------------------------
#define WM5_DECLARE_TERMINATE \
public: \
static bool RegisterTerminate (); \
static void Terminate (); \
private: \
static bool msTerminateRegistered
//----------------------------------------------------------------------------
#define WM5_IMPLEMENT_TERMINATE(classname) \
bool classname::msTerminateRegistered = false; \
bool classname::RegisterTerminate () \
{ \
if (!msTerminateRegistered) \
{ \
InitTerm::AddTerminator(classname::Terminate); \
msTerminateRegistered = true; \
} \
return msTerminateRegistered; \
}
//----------------------------------------------------------------------------
#define WM5_REGISTER_TERMINATE(classname) \
static bool gsTerminateRegistered_##classname = \
classname::RegisterTerminate ()
//----------------------------------------------------------------------------
#endif
|