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;\
 | 
						|
} |