Example #1
0
// Load and decompress NBT file
bool NBT_Reader::Load(const STRING file)
{
	gzFile zload = 0;
#ifdef UNICODE
	std::string sFile(file.begin(), file.end());
	zload = gzopen(sFile.c_str(), "rb");
#else
	zload = gzopen(file.c_str(), "rb");
#endif
	BYTE buffer[BUFFER_SIZE] = {0};
	std::string load;
	int a = -1;
	do
	{
		a = gzread(zload, buffer, BUFFER_SIZE);
		if (a > 0)
			load.append(buffer, buffer+a);
	}
	while (a > 0);
	gzclose(zload);
	// Invalid
	if (load[0] != 10)
		return false;
	int size = load.size();
	data = new BYTE[size];
	memcpy(data, load.c_str(), size);
	pointer = data;
	return true;
}
Example #2
0
TEST_F(is_IS_PhoneNumber, Operator) {
  cxxfaker::providers::is_IS::PhoneNumber phonenumber;
  phonenumber.Seed(::testing::UnitTest::GetInstance()->random_seed());
  STRING number = phonenumber;
  for (STRING::const_iterator iter = number.begin(); iter != number.end(); ++iter) {
    if (isdigit(*iter) || *iter == '+' || *iter == ' ')
      continue;
    ADD_FAILURE() << "What is this \"" << *iter << "\" doing in here..";
  };
};
Example #3
0
TEST_F(pl_PL_PhoneNumber, PhoneNumber) {
  cxxfaker::providers::pl_PL::PhoneNumber* phonenumber = new cxxfaker::providers::pl_PL::PhoneNumber();
  phonenumber->Seed(::testing::UnitTest::GetInstance()->random_seed());
  STRING number = phonenumber->phoneNumber();
  for (STRING::const_iterator iter = number.begin(); iter != number.end(); ++iter) {
    if (isdigit(*iter) || *iter == '+' || *iter == '(' || *iter == ')' || *iter == ' ')
      continue;
    ADD_FAILURE() << "What is this \"" << *iter << "\" doing in here..";
  };
  delete phonenumber;
};
Example #4
0
SNORTRULEHDR void CRuleOption::FormatPattern(CDllString &out)
{
	m_nFlags = CRuleOption::NOFLAG;
	STRING str = out.Data();
	STRING_ITER iBeg = str.begin(), iEnd = str.end();
	if (*std::find_if_not(iBeg, iEnd, ISSPACE()) == '!')
	{
		m_nFlags |= CRuleOption::HASNOT;
	}
	QuotedContext(iBeg, iEnd);
	out.Assign(STRING(iBeg, iEnd).c_str());
}
Example #5
0
void searchTest(const STRING& text, const STRING *keyTbl, size_t keySize)
{
	FMINDEX f;
	f.init(text.begin(), text.end());
	compareText(f, text, keyTbl, keySize);
	std::stringstream ss;
	f.save(ss);
	{
		FMINDEX ff;
		ff.load(ss);
		compareText(ff, text, keyTbl, keySize);
	}
}
Example #6
0
// Working thread
THREAD_FUNCTION(PixelMap::WorkingLevel, data)
{
	GoThread * go = (GoThread*)data;
	Level * level = go->level;
	if (level)
	{
		STRING folder = *go->folder;
		go->error = level->LoadWorld(folder);
		if (go->error != LVL_OK)
		{
			go->running = false;
			return 0;
		}
		STRING save = *go->save;
		go->error = level->CreateImage(save);
		if (go->error != LVL_OK)
		{
			go->running = false;
			return 0;
		}

		STRING w = Port::FileName(folder);
		std::string world;
		world.assign(w.begin(), w.end());

		// Save log
		if (level->prefs.logging)
		{
			using namespace std;

			ofstream file(level->prefs.log.c_str());
			if (file.is_open())
			{
				INT64 total = 0;
				for (int i = 0; i < DATAVALUES_AMOUNT; ++i)
					total += level->amount.block[i];

				int digits = 0;
				{
					INT64 t = level->amount.filesize;
					t /= 1000000;
					while (t > 0)
					{
						++digits;
						t /= 10;
					}
				}
				double size = level->amount.filesize;
				size /= 1000000;

				stringstream stream;
				stream.setf(ios_base::dec, ios::floatfield);
				stream.precision(2 + digits);
#define END "\n"
#define SEP(t) setSeparator(t)
				stream << world << END
					<< size << "MB" << END << END

					<< "Map surface: " << SEP(level->blocks) << END
					<< "Total blocks: " << SEP(total) << END << END

					<< "Air: " << SEP(level->amount.block[AIR]) << END
					<< "Stone: " << SEP(level->amount.block[STONE]) << END
					<< "Dirt: " << SEP(level->amount.block[GRASS] + level->amount.block[DIRT]) << END
					<< "Water: " << SEP(level->amount.block[WATER] + level->amount.block[STATIONARYWATER]) << END
					<< "Clay: " << SEP(level->amount.block[CLAY]) << END
					<< "Sand: " << SEP(level->amount.block[SAND]) << END
					<< "Gravel: " << SEP(level->amount.block[GRAVEL]) << END << END

					<< "Log: " << SEP(level->amount.block[LOG]) << END
					<< "Leaves: " << SEP(level->amount.block[LEAVES]) << END
					<< "Sapling: " << SEP(level->amount.block[SAPLING]) << END << END

					<< "Soil: " << SEP(level->amount.block[SOIL]) << END
					<< "Crops: " << SEP(level->amount.block[CROPS]) << END << END

					<< "Reed: " << SEP(level->amount.block[REED]) << END
					<< "Cactus: " << SEP(level->amount.block[CACTUS]) << END
					<< "Red Mushroom: " << SEP(level->amount.block[REDMUSHROOM]) << END
					<< "Brown Mushroom: " << SEP(level->amount.block[BROWNMUSHROOM]) << END
					<< "Red rose: " << SEP(level->amount.block[REDROSE]) << END
					<< "Yellow flower: " << SEP(level->amount.block[YELLOWFLOWER]) << END << END

					<< "Ice: " << SEP(level->amount.block[ICE]) << END
					<< "Snow: " << SEP(level->amount.block[SNOW]) << END
					<< "Snow Block: " << SEP(level->amount.block[SNOWBLOCK]) << END << END

					<< "Fire: " << SEP(level->amount.block[FIRE]) << END << END

					<< "Diamond Ore: " << SEP(level->amount.block[DIAMONDORE]) << END
					<< "Iron Ore: " << SEP(level->amount.block[IRONORE]) << END
					<< "Coal Ore: " << SEP(level->amount.block[COALORE]) << END
					<< "Gold Ore: " << SEP(level->amount.block[GOLDORE]) << END
					<< "Redstone: " << SEP(level->amount.block[REDSTONEORE] + level->amount.block[GLOWINGREDSTONEORE]) << END
					<< "Lapiz Lazuli Ore: " << SEP(level->amount.block[LAPIZLAZULIORE]) << END
					<< "Obsidian: " << SEP(level->amount.block[OBSIDIAN]) << END
					<< "Mossy Cobblestone: " << SEP(level->amount.block[MOSSYCOBBLESTONE]) << END
					<< "Bedrock (Adminium): " << SEP(level->amount.block[BEDROCK]) << END << END

					<< "Lava: " << SEP(level->amount.block[LAVA] + level->amount.block[STATIONARYLAVA]) << END << END

					<< "Cobblestone: " << SEP(level->amount.block[COBBLESTONE]) << END
					<< "Wood: " << SEP(level->amount.block[WOOD]) << END
					<< "Glass: " << SEP(level->amount.block[GLASS]) << END
					<< "Brick: " << SEP(level->amount.block[BRICK]) << END
					<< "Sandstone: " << SEP(level->amount.block[SANDSTONE]) << END
					<< "Cobblestone Stairs: " << SEP(level->amount.block[COBBLESTONESTAIRS]) << END
					<< "Wooden Stairs: " << SEP(level->amount.block[WOODENSTAIRS]) << END
					<< "Step: " << SEP(level->amount.block[SLAB_STONE]) << END
					<< "Double Step: " << SEP(level->amount.block[DOUBLESLAB_STONE]) << END << END

					<< "Torch: " << SEP(level->amount.block[TORCH]) << END
					<< "Wooden Door: " << SEP(level->amount.block[WOODENDOOR]) << END
					<< "Iron Door: " << SEP(level->amount.block[IRONDOOR]) << END
					<< "Chest: " << SEP(level->amount.block[CHEST]) << END
					<< "Bookcase: " << SEP(level->amount.block[BOOKSHELF]) << END
					<< "Workbench: " << SEP(level->amount.block[WORKBENCH]) << END
					<< "Furnace: " << SEP(level->amount.block[FURNACE] + level->amount.block[BURNINGFURNACE]) << END
					<< "Dispencer: " << SEP(level->amount.block[DISPENSER]) << END
					<< "Sign: " << SEP(level->amount.block[SIGNPOST] + level->amount.block[WALLSIGN]) << END
					<< "Ladder: " << SEP(level->amount.block[LADDER]) << END
					<< "Minecart Tracks: " << SEP(level->amount.block[MINECARTTRACK]) << END
					<< "Jukebox: " << SEP(level->amount.block[JUKEBOX]) << END
					<< "Note Block: " << SEP(level->amount.block[NOTEBLOCK]) << END
					<< "Fence: " << SEP(level->amount.block[FENCE]) << END
					<< "Wool: " << SEP(level->amount.block[WOOL]) << END << END

					<< "Lapiz Lazuli Block: " << SEP(level->amount.block[LAPIZLAZULIBLOCK]) << END
					<< "Diamond Block: " << SEP(level->amount.block[DIAMONDBLOCK]) << END
					<< "Gold Block: " << SEP(level->amount.block[GOLDBLOCK]) << END
					<< "Iron Block: " << SEP(level->amount.block[IRONBLOCK]) << END << END

					<< "Redstone Torch: " << SEP(level->amount.block[REDSTONETORCHON] + level->amount.block[REDSTONETORCHOFF]) << END
					<< "Redstone Wire: " << SEP(level->amount.block[REDSTONEWIRE]) << END
					<< "Lever: " << SEP(level->amount.block[LEVER]) << END
					<< "Stone Button: " << SEP(level->amount.block[STONEBUTTON]) << END
					<< "Stone Pressure Plates: " << SEP(level->amount.block[STONEPRESSUREPLATE]) << END
					<< "Wodden Pressure Plates: " << SEP(level->amount.block[WOODPRESSUREPLATE]) << END << END

					<< "TNT: " << SEP(level->amount.block[TNT]) << END
					<< "Sponge: " << SEP(level->amount.block[SPONGE]) << END
					<< "Cake: " << SEP(level->amount.block[CAKE]) << END << END

					<< "Mob Spawner: " << SEP(level->amount.block[MOBSPAWNER]) << END << END

					<< "Zombies: " << SEP(level->amount.zombie) << END
					<< "Creeper: " << SEP(level->amount.creeper) << END
					<< "Skeletons: " << SEP(level->amount.skeleton) << END
					<< "Slimes: " << SEP(level->amount.slime) << END
					<< "Pig Zombies: " << SEP(level->amount.pigzombie) << END
					<< "Ghast: " << SEP(level->amount.ghast) << END << END

					<< "Pigs: " << SEP(level->amount.pig) << END
					<< "Chickens: " << SEP(level->amount.chicken) << END
					<< "Cows: " << SEP(level->amount.cow) << END
					<< "Sheeps: " << SEP(level->amount.sheep);
				string str = stream.str();
				const char * c = str.c_str();

				file << c;

				file.close();
			}
		}
	}

	go->running = false;
	return 0;
}
Example #7
0
// Go through all gui controls
void PixelMap::DoArgs(GUI_Creator * gui)
{
	if (!gui)
		return;
	using namespace std;

	// Parameters
	ResetArgs();

	BOOL b;

	if (gui->Get(GUI_ALPHA, b))
	{
		worldVersion = ALPHA;
	}
	else if (gui->Get(GUI_BETA, b))
	{
		worldVersion = BETA;
	}
	if (gui->Get(GUI_WORLD, b))
	{
		wstring temp;
		//gui->Get(GUI_WORLDFILE, temp);
		int i = 0;
		gui->GetData(GUI_WORLDFILE, &i);
		STRING temp2 = worlds[i];
		temp.assign(temp2.begin(), temp2.end());
		map = temp;
		if (worldVersion == ALPHA)
		{
			if (map < 0 || map > 5)
				map = 1;
			if (map > 0 && map <= 5)
			{
				map = L"World" + map.s;
			}
		}
	}
	else if (gui->Get(GUI_CUSTOM, b))
	{
		wstring temp;
		gui->Get(GUI_CUSTOMFILE, temp);
		map = temp;
	}

	// Savefile
	gui->Get(GUI_OUTPUT, saveFile);

	// Texture
	gui->Get(GUI_TEXTURE, texture);

	// Cache
	if (gui->Get(GUI_CACHE, b) && gui->Get(GUI_CACHEFILE, cache) && cache.empty())
	{
		// Default cache
		STRING str = GetTemp();
		cache.assign(str.begin(), str.end());
	}

	// Log
	if (gui->Get(GUI_LOG, b) && gui->Get(GUI_LOGFILE, logFile) == 0)
		logFile = L"log.txt";

	// Bools
	nether = !!gui->Get(GUI_NETHER, b);
	night = !!gui->Get(GUI_NIGHT, b);
	noRender = !!gui->Get(GUI_NORENDER, b);
	caveMode = !!gui->Get(GUI_CAVEMODE, b);
	autoClose = !!gui->Get(GUI_AUTO_CLOSE, b);
	openFolder = !!gui->Get(GUI_OPEN_FOLDER, b);
	noHeightMap = !!gui->Get(GUI_NOHEIGHTMAP, b);

	// Rotation
	{
		wstring temp;
		gui->Get(GUI_ROTATE, temp);
		rotation = _wtoi(temp.c_str());
	}

	// Modes
	// Normal
	if (gui->Get(GUI_NORMAL, b))
		height = 0;
	// Height
	else if (gui->Get(GUI_FREQ, b))
	{
		wstring temp;
		gui->Get(GUI_FREQ_H, temp);
		height = _wtoi(temp.c_str());
		// Limit
		if (height <= 1 || height > MAPZ / 8)
			height = 0;
	}
	// Gray
	else if (gui->Get(GUI_GRAY, b))
		height = -1;
	// Color
	else if (gui->Get(GUI_COLOR, b))
		height = -2;
	// Solid
	else if (gui->Get(GUI_SOLID, b))
		height = -3;

	// Threads
	{
		wstring temp;
		if (gui->Get(GUI_THREADS, temp))
			threads = _wtoi(temp.c_str());
		if (threads < 1)
			threads = 1;
	}

	// Slice
	{
		wstring temp;
		int tt = -1;
		if (gui->Get(GUI_SLICE, temp))
			tt = _wtoi(temp.c_str());
		if (tt < 0 || tt > MAPZ)
			tt = -1;
		slice.push_back(tt);
		gui->Get(GUI_SLICE_SINGLE, tt);
		slice.push_back(tt);
	}

	// Only and exclude, only one of them
	{
		std::string str;
		int size = 0;
		// Only
		if (size = gui->Get(GUI_ONLY, str))
		{
			only = str2list(str.c_str(), size);
		}
		// Exclude
		else if (size = gui->Get(GUI_ONLY, str))
		{
			exclude = str2list(str.c_str(), size);
		}
	}

	gui->Get(GUI_TEXTURE, texture);

	PrepareMap();

	PrepareArgs();
}
Example #8
0
// Command line arguments
void PixelMap::DoArgs(wchar_t ** commands, int nArgs)
{
	using namespace std;

	// Parameters
	ResetArgs();

	ParseArguments args = ParseArguments();

	UINT arguments[32] = {0};

	arguments[0] = args.AddParameter(L'w', PARAM_WSTRING); // World folder
	arguments[1] = args.AddParameter(L'f', PARAM_WSTRING); // Output file
	arguments[2] = args.AddParameter(L'l', PARAM_WSTRING); // Log file
	{
		wchar_t temp2[] = {
			'w', WATER, 
			'w', STATIONARYWATER, 
			'l', LAVA, 
			'l', STATIONARYLAVA, 
			0};
		arguments[3] = args.AddParameter(L'o', PARAM_INT | PARAM_LIST, temp2); // Only mode
		arguments[4] = args.AddParameter(L'x', PARAM_INT | PARAM_LIST, temp2); // Exclude mode
	}
	arguments[5] = args.AddParameter(L'n', PARAM_BOOL); // Night mode
	arguments[6] = args.AddParameter(L's', PARAM_INT | PARAM_LIST); // Slice mode
	arguments[7] = args.AddParameter(L'h', PARAM_STRING); // Height mode
	arguments[8] = args.AddParameter(L't', PARAM_INT); // Threads
	arguments[9] = args.AddParameter(L'c', PARAM_BOOL); // Cave mode
	arguments[14] = args.AddParameter(L'r', PARAM_INT); // Rotation mode
	arguments[10] = args.AddParameter(L"texture", PARAM_WSTRING); // Texture mode
	arguments[11] = args.AddParameter(L"no-render", PARAM_BOOL); // No render mode
	arguments[12] = args.AddParameter(L"nether", PARAM_BOOL); // Nether mode
	arguments[15] = args.AddParameter(L"no-gui", PARAM_BOOL); // No GUI mode
	arguments[16] = args.AddParameter(L"silent", PARAM_BOOL); // Silent mode
	arguments[17] = args.AddParameter(L"cache", PARAM_WSTRING); // Cache file
	arguments[18] = args.AddParameter(L"no-heightmap", PARAM_BOOL); // Disable heightmap
	arguments[19] = args.AddParameter(L"auto-close", PARAM_BOOL); // Closes application after rendering
	arguments[20] = args.AddParameter(L"open-folder", PARAM_BOOL); // Opens folder where saved
	arguments[21] = args.AddParameter(L"version", PARAM_STRING); // Set world version

	// Parse arguments
	args.PushArguments(commands, nArgs);

	// Version
	string t;
	if (args.GetAdvancedParameter(arguments[21])->Get(&t) && !t.empty())
	{
		// Make lowercase
		for (UINT i = 0; i < t.size(); ++i)
			t[i] = tolower(t[i]);
		// Alpha
		if (t.compare("alpha") == 0)
		{
			worldVersion = ALPHA;
		}
		else if (t.compare("beta") == 0)
		{
			worldVersion = BETA;
		}
	}

	// Get world
	wstring temp;
	if (args.GetParameter(0)->Get(&temp))
	{
		if (worldVersion == ALPHA)
		{
			if (temp.size())
				map = temp;
			if (map < 0 || map > 5)
				map = 1;
			if (map > 0 && map <= 5)
			{
				map.s = L"World" + map.s;
			}
		}
		else
		{
			map = temp;
		}
	}
	args.GetParameter(arguments[1])->Get(&saveFile);
	if (args.GetParameter(arguments[2])->Get(&logFile) && logFile.empty())
		logFile = L"log.txt";
	args.GetParameter(arguments[3])->Get(&only);
	args.GetParameter(arguments[4])->Get(&exclude);
	args.GetParameter(arguments[5])->Get(&night);
	if (args.GetParameter(arguments[6])->Get(&slice))
	{
		if (slice.size() > 2)
			slice.resize(2);
		if (slice.size() >= 1 && (slice.front() < 0 || slice.front() > 127))
		{
			slice.clear();
			slice.push_back(-1);
		}
	}
	// Height parameter
	{
		wstring temp;
		args.GetParameter(arguments[7])->Get(&temp);
		height = _wtoi(temp.c_str());
		if (height == 0)
		{
			wchar_t t = temp[0];
			switch (t)
			{
				// Grey
				case L'g':
					height = -1;
					break;
				// Color
				case L'c':
					height = -2;
					break;
				// Solid
				case L's':
					height = -3;
					break;
			}
		}
		else
		{
			// Limit
			if (height <= 1 || height > MAPZ / 8)
				height = 0;
		}
	}
	if (args.GetParameter(arguments[8])->Get(&threads) && threads == 0)
		// Automatic detection
		threads = Computer::GetLogicalCores();
	// Failproof
	if (threads < 1 || threads > 255)
		threads = 1;
	args.GetParameter(arguments[9])->Get(&caveMode);
	if (!args.GetParameter(arguments[14])->Get(&rotation))
		rotation = 0;
	args.GetAdvancedParameter(arguments[10])->Get(&texture);
	args.GetAdvancedParameter(arguments[11])->Get(&noRender);
	args.GetAdvancedParameter(arguments[12])->Get(&nether);
	args.GetAdvancedParameter(arguments[15])->Get(&nogui);
	args.GetAdvancedParameter(arguments[16])->Get(&silent);
	if (args.GetAdvancedParameter(arguments[17])->Get(&cache) && cache.empty())
	{
		// Default cache
		STRING str = GetTemp();
		cache.assign(str.begin(), str.end());
	}
	args.GetAdvancedParameter(arguments[18])->Get(&noHeightMap);
	args.GetAdvancedParameter(arguments[19])->Get(&autoClose);
	args.GetAdvancedParameter(arguments[20])->Get(&openFolder);

	if (nogui)
		autoClose = true;

	// Only one of them
	if (!only.empty())
		exclude.clear();

	PrepareMap();

	PrepareArgs();
}
Example #9
0
SNORTRULEHDR void CPcreOption::FromPattern(const CDllString &strPat)
{
	CDllString strTemp = strPat;
	FormatPattern(strTemp);

	if (HasFlags(CRuleOption::HASNOT))
	{
		return;
	}

	STRING str = strTemp.Data();

	STRING_ITER iBeg = str.begin(), iEnd = str.end();
	STRING strSuffix;
	if (*iBeg == '/')
	{
		++iBeg;
		for(--iEnd; *iEnd != '/' && iEnd != str.begin(); --iEnd);
		if (iBeg >= iEnd)
		{
			TTHROW(TI_INVALIDDATA);
		}
		strSuffix = STRING(iEnd + 1, str.end());
	}

	m_strPcre.Assign(STRING(iBeg, iEnd).c_str());
	
	for(STRING_ITER j = strSuffix.begin(); j != strSuffix.end(); ++j)
	{
		switch (*j)
		{
		case 'A':
			AddFlags(PF_A);
			if (m_strPcre[0] != '^')
			{
				m_strPcre.Insert(0, '^');
			}
			continue;
		case 'R':
			AddFlags(PF_R);
			continue;
		case 'i':
			AddFlags(PF_i);
			continue;
		case 's':
			AddFlags(PF_s);
			continue;
		case 'm':
			AddFlags(PF_m);
			continue;
		case 'x':
			AddFlags(PF_x);
			continue;
		case 'E':
			AddFlags(PF_E);
			continue;
		case 'G':
			AddFlags(PF_G);
			continue;
		case 'U':
			AddFlags(PF_U);
			continue;
		case 'B':
			AddFlags(PF_B);
			continue;
		case 'P':
			AddFlags(PF_P);
			continue;
		case 'H':
			AddFlags(PF_H);
			continue;
		case 'M':
			AddFlags(PF_M);
			continue;
		case 'C':
			AddFlags(PF_C);
			continue;
		case 'O':
			AddFlags(PF_O);
			continue;
		case 'I':
			AddFlags(PF_I);
			continue;
		case 'D':
			AddFlags(PF_D);
			continue;
		case 'K':
			AddFlags(PF_K);
			continue;
		case 'S':
			AddFlags(PF_S);
			continue;
		case 'Y':
			AddFlags(PF_Y);
			continue;			
		default:
			TTHROW(TI_INVALIDDATA);
		}
	}
	if (m_strPcre[0] == '^')
	{
		AddFlags(PF_A);
	}
}
Example #10
0
inline STRING utils::strtoupper(STRING str)
{
	std::transform(str.begin(), str.end(), str.begin(), toupper);
	return str;
}