29 lines
713 B
C
29 lines
713 B
C
#pragma once
|
|
|
|
#include <boost/preprocessor/cat.hpp>
|
|
#include <boost/preprocessor/seq/for_each_i.hpp>
|
|
#include <boost/preprocessor/seq/enum.hpp>
|
|
|
|
#define CRYPT_MACRO(r, d, i, elem) ( elem ^ ( d - i ) )
|
|
|
|
#define DEFINE_HIDDEN_STRING(NAME, SEED, SEQ)\
|
|
static const char* BOOST_PP_CAT(Get, NAME)()\
|
|
{\
|
|
static char data[] = {\
|
|
BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ)),\
|
|
'\0'\
|
|
};\
|
|
\
|
|
static bool isEncrypted = true;\
|
|
if ( isEncrypted )\
|
|
{\
|
|
for (unsigned i = 0; i < ( sizeof(data) / sizeof(data[0]) ) - 1; ++i)\
|
|
{\
|
|
data[i] = CRYPT_MACRO(_, SEED, i, data[i]);\
|
|
}\
|
|
\
|
|
isEncrypted = false;\
|
|
}\
|
|
\
|
|
return data;\
|
|
} |