Changeset - r23536:ce42deb0b32d
[Not reviewed]
master
! ! !
Henry Wilson - 6 years ago 2019-02-17 11:20:52
m3henry@googlemail.com
Codechange: Replaced SmallVector::[Begin|End]() with std alternatives
75 files changed with 468 insertions and 559 deletions:
0 comments (0 inline, 0 general)
src/animated_tile.cpp
Show inline comments
 
@@ -53,8 +53,8 @@ void AnimateAnimatedTiles()
 
{
 
	PerformanceAccumulator framerate(PFE_GL_LANDSCAPE);
 

	
 
	const TileIndex *ti = _animated_tiles.Begin();
 
	while (ti < _animated_tiles.End()) {
 
	const TileIndex *ti = _animated_tiles.data();
 
	while (ti < _animated_tiles.data() + _animated_tiles.size()) {
 
		const TileIndex curr = *ti;
 
		AnimateTile(curr);
 
		/* During the AnimateTile call, DeleteAnimatedTile could have been called,
src/autoreplace_gui.cpp
Show inline comments
 
@@ -183,8 +183,8 @@ class ReplaceVehicleWindow : public Wind
 
				this->vscroll[1]->SetCount(this->engines[1].size());
 
				if (this->reset_sel_engine && this->sel_engine[1] != INVALID_ENGINE) {
 
					int position = 0;
 
					for (EngineID *it = this->engines[1].Begin(); it != this->engines[1].End(); ++it) {
 
						if (*it == this->sel_engine[1]) break;
 
					for (EngineID &eid : this->engines[1]) {
 
						if (eid == this->sel_engine[1]) break;
 
						++position;
 
					}
 
					this->vscroll[1]->ScrollTowards(position);
src/base_media_base.h
Show inline comments
 
@@ -76,9 +76,9 @@ struct BaseSet {
 
	{
 
		free(this->name);
 

	
 
		for (TranslatedStrings::iterator iter = this->description.Begin(); iter != this->description.End(); iter++) {
 
			free(iter->first);
 
			free(iter->second);
 
		for (auto &pair : this->description) {
 
			free(pair.first);
 
			free(pair.second);
 
		}
 

	
 
		for (uint i = 0; i < NUM_FILES; i++) {
 
@@ -122,16 +122,16 @@ struct BaseSet {
 
	{
 
		if (isocode != NULL) {
 
			/* First the full ISO code */
 
			for (TranslatedStrings::const_iterator iter = this->description.Begin(); iter != this->description.End(); iter++) {
 
				if (strcmp(iter->first, isocode) == 0) return iter->second;
 
			for (const auto &pair : this->description) {
 
				if (strcmp(pair.first, isocode) == 0) return pair.second;
 
			}
 
			/* Then the first two characters */
 
			for (TranslatedStrings::const_iterator iter = this->description.Begin(); iter != this->description.End(); iter++) {
 
				if (strncmp(iter->first, isocode, 2) == 0) return iter->second;
 
			for (const auto &pair : this->description) {
 
				if (strncmp(pair.first, isocode, 2) == 0) return pair.second;
 
			}
 
		}
 
		/* Then fall back */
 
		return this->description.Begin()->second;
 
		return this->description.front().second;
 
	}
 

	
 
	/**
src/company_gui.cpp
Show inline comments
 
@@ -640,11 +640,11 @@ private:
 

	
 
	void AddChildren(GUIGroupList *source, GroupID parent, int indent)
 
	{
 
		for (const Group **g = source->Begin(); g != source->End(); g++) {
 
			if ((*g)->parent != parent) continue;
 
			this->groups.push_back(*g);
 
		for (const Group *g : *source) {
 
			if (g->parent != parent) continue;
 
			this->groups.push_back(g);
 
			this->indents.push_back(indent);
 
			AddChildren(source, (*g)->index, indent + 1);
 
			AddChildren(source, g->index, indent + 1);
 
		}
 
	}
 

	
src/console_cmds.cpp
Show inline comments
 
@@ -585,8 +585,8 @@ DEF_CONSOLE_CMD(ConBanList)
 
	IConsolePrint(CC_DEFAULT, "Banlist: ");
 

	
 
	uint i = 1;
 
	for (char **iter = _network_ban_list.Begin(); iter != _network_ban_list.End(); iter++, i++) {
 
		IConsolePrintF(CC_DEFAULT, "  %d) %s", i, *iter);
 
	for (char *entry : _network_ban_list) {
 
		IConsolePrintF(CC_DEFAULT, "  %d) %s", i, entry);
 
	}
 

	
 
	return true;
src/core/pool_func.cpp
Show inline comments
 
@@ -31,10 +31,7 @@
 
 */
 
/* static */ void PoolBase::Clean(PoolType pt)
 
{
 
	PoolVector *pools = PoolBase::GetPools();
 
	PoolBase **end = pools->End();
 
	for (PoolBase **ppool = pools->Begin(); ppool != end; ppool++) {
 
		PoolBase *pool = *ppool;
 
	for (PoolBase *pool : *PoolBase::GetPools()) {
 
		if (pool->type & pt) pool->CleanPool();
 
	}
 
}
src/core/smallmap_type.hpp
Show inline comments
 
@@ -55,12 +55,13 @@ struct SmallMap : SmallVector<SmallPair<
 
	 * @param key key to find
 
	 * @return &Pair(key, data) if found, this->End() if not
 
	 */
 
	inline const Pair *Find(const T &key) const
 
	inline typename std::vector<Pair>::const_iterator Find(const T &key) const
 
	{
 
		for (uint i = 0; i < std::vector<Pair>::size(); i++) {
 
			if (key == std::vector<Pair>::operator[](i).first) return &std::vector<Pair>::operator[](i);
 
		typename std::vector<Pair>::const_iterator it;
 
		for (it = std::vector<Pair>::begin(); it != std::vector<Pair>::end(); it++) {
 
			if (key == it->first) return it;
 
		}
 
		return this->End();
 
		return it;
 
	}
 

	
 
	/**
 
@@ -114,7 +115,7 @@ struct SmallMap : SmallVector<SmallPair<
 
	 */
 
	inline void Erase(Pair *pair)
 
	{
 
		assert(pair >= this->Begin() && pair < this->End());
 
		assert(pair >= std::vector<Pair>::data() && pair < this->End());
 
		auto distance = pair - std::vector<Pair>::data();
 
		std::vector<Pair>::erase(std::vector<Pair>::begin() + distance);
 
	}
 
@@ -166,7 +167,7 @@ struct SmallMap : SmallVector<SmallPair<
 

	
 
	inline void SortByKey()
 
	{
 
		QSortT(this->Begin(), std::vector<Pair>::size(), KeySorter);
 
		QSortT(std::vector<Pair>::data(), std::vector<Pair>::size(), KeySorter);
 
	}
 

	
 
	static int CDECL KeySorter(const Pair *a, const Pair *b)
src/core/smallvec_type.hpp
Show inline comments
 
@@ -83,46 +83,6 @@ public:
 
	}
 

	
 
	~SmallVector() = default;
 

	
 
	/**
 
	 * Get the pointer to the first item (const)
 
	 *
 
	 * @return the pointer to the first item
 
	 */
 
	inline const T *Begin() const
 
	{
 
		return std::vector<T>::data();
 
	}
 

	
 
	/**
 
	 * Get the pointer to the first item
 
	 *
 
	 * @return the pointer to the first item
 
	 */
 
	inline T *Begin()
 
	{
 
		return std::vector<T>::data();
 
	}
 

	
 
	/**
 
	 * Get the pointer behind the last valid item (const)
 
	 *
 
	 * @return the pointer behind the last valid item
 
	 */
 
	inline const T *End() const
 
	{
 
		return std::vector<T>::data() + std::vector<T>::size();
 
	}
 

	
 
	/**
 
	 * Get the pointer behind the last valid item
 
	 *
 
	 * @return the pointer behind the last valid item
 
	 */
 
	inline T *End()
 
	{
 
		return std::vector<T>::data() + std::vector<T>::size();
 
	}
 
};
 

	
 
/**
src/economy.cpp
Show inline comments
 
@@ -1945,9 +1945,8 @@ void LoadUnloadStation(Station *st)
 
	}
 

	
 
	/* Call the production machinery of industries */
 
	const Industry * const *isend = _cargo_delivery_destinations.End();
 
	for (Industry **iid = _cargo_delivery_destinations.Begin(); iid != isend; iid++) {
 
		TriggerIndustryProduction(*iid);
 
	for (Industry *iid : _cargo_delivery_destinations) {
 
		TriggerIndustryProduction(iid);
 
	}
 
	_cargo_delivery_destinations.clear();
 
}
src/engine.cpp
Show inline comments
 
@@ -511,12 +511,12 @@ void EngineOverrideManager::ResetToDefau
 
 */
 
EngineID EngineOverrideManager::GetID(VehicleType type, uint16 grf_local_id, uint32 grfid)
 
{
 
	const EngineIDMapping *end = this->End();
 
	EngineID index = 0;
 
	for (const EngineIDMapping *eid = this->Begin(); eid != end; eid++, index++) {
 
		if (eid->type == type && eid->grfid == grfid && eid->internal_id == grf_local_id) {
 
	for (const EngineIDMapping &eid : *this) {
 
		if (eid.type == type && eid.grfid == grfid && eid.internal_id == grf_local_id) {
 
			return index;
 
		}
 
		index++;
 
	}
 
	return INVALID_ENGINE;
 
}
 
@@ -549,14 +549,14 @@ void SetupEngines()
 
	_engine_pool.CleanPool();
 

	
 
	assert(_engine_mngr.size() >= _engine_mngr.NUM_DEFAULT_ENGINES);
 
	const EngineIDMapping *end = _engine_mngr.End();
 
	uint index = 0;
 
	for (const EngineIDMapping *eid = _engine_mngr.Begin(); eid != end; eid++, index++) {
 
	for (const EngineIDMapping &eid : _engine_mngr) {
 
		/* Assert is safe; there won't be more than 256 original vehicles
 
		 * in any case, and we just cleaned the pool. */
 
		assert(Engine::CanAllocateItem());
 
		const Engine *e = new Engine(eid->type, eid->internal_id);
 
		const Engine *e = new Engine(eid.type, eid.internal_id);
 
		assert(e->index == index);
 
		index++;
 
	}
 
}
 

	
src/engine_gui.cpp
Show inline comments
 
@@ -329,7 +329,7 @@ void EngList_Sort(GUIEngineList *el, Eng
 
	/* out-of-bounds access at the next line for size == 0 (even with operator[] at some systems)
 
	 * generally, do not sort if there are less than 2 items */
 
	if (size < 2) return;
 
	QSortT(el->Begin(), size, compare);
 
	QSortT(el->data(), size, compare);
 
}
 

	
 
/**
src/fios.cpp
Show inline comments
 
@@ -380,7 +380,7 @@ static void FiosGetFileList(SaveLoadOper
 
	{
 
		SortingBits order = _savegame_sort_order;
 
		_savegame_sort_order = SORT_BY_NAME | SORT_ASCENDING;
 
		QSortT(file_list.files.Begin(), file_list.files.size(), CompareFiosItems);
 
		QSortT(file_list.files.data(), file_list.files.size(), CompareFiosItems);
 
		_savegame_sort_order = order;
 
	}
 

	
 
@@ -724,10 +724,10 @@ const char *FindScenario(const ContentIn
 
{
 
	_scanner.Scan(false);
 

	
 
	for (ScenarioIdentifier *id = _scanner.Begin(); id != _scanner.End(); id++) {
 
		if (md5sum ? (memcmp(id->md5sum, ci->md5sum, sizeof(id->md5sum)) == 0)
 
		           : (id->scenid == ci->unique_id)) {
 
			return id->filename;
 
	for (ScenarioIdentifier &id : _scanner) {
 
		if (md5sum ? (memcmp(id.md5sum, ci->md5sum, sizeof(id.md5sum)) == 0)
 
		           : (id.scenid == ci->unique_id)) {
 
			return id.filename;
 
		}
 
	}
 

	
src/fios.h
Show inline comments
 
@@ -139,7 +139,7 @@ public:
 
	 */
 
	inline const FiosItem *Begin() const
 
	{
 
		return this->files.Begin();
 
		return this->files.data();
 
	}
 

	
 
	/**
 
@@ -148,7 +148,7 @@ public:
 
	 */
 
	inline const FiosItem *End() const
 
	{
 
		return this->files.End();
 
		return this->Begin() + this->Length();
 
	}
 

	
 
	/**
src/fios_gui.cpp
Show inline comments
 
@@ -57,9 +57,8 @@ void LoadCheckData::Clear()
 
	this->current_date = 0;
 
	memset(&this->settings, 0, sizeof(this->settings));
 

	
 
	const CompanyPropertiesMap::iterator end = this->companies.End();
 
	for (CompanyPropertiesMap::iterator it = this->companies.Begin(); it != end; it++) {
 
		delete it->second;
 
	for (auto &pair : this->companies) {
 
		delete pair.second;
 
	}
 
	companies.clear();
 

	
 
@@ -531,10 +530,9 @@ public:
 
						if (y > y_max) break;
 

	
 
						/* Companies / AIs */
 
						CompanyPropertiesMap::const_iterator end = _load_check_data.companies.End();
 
						for (CompanyPropertiesMap::const_iterator it = _load_check_data.companies.Begin(); it != end; it++) {
 
							SetDParam(0, it->first + 1);
 
							const CompanyProperties &c = *it->second;
 
						for (auto &pair : _load_check_data.companies) {
 
							SetDParam(0, pair.first + 1);
 
							const CompanyProperties &c = *pair.second;
 
							if (c.name != NULL) {
 
								SetDParam(1, STR_JUST_RAW_STRING);
 
								SetDParamStr(2, c.name);
src/fontcache.cpp
Show inline comments
 
@@ -411,8 +411,8 @@ FreeTypeFontCache::~FreeTypeFontCache()
 
	this->face = NULL;
 
	this->ClearFontCache();
 

	
 
	for (FontTable::iterator iter = this->font_tables.Begin(); iter != this->font_tables.End(); iter++) {
 
		free(iter->second.second);
 
	for (auto &iter : this->font_tables) {
 
		free(iter.second.second);
 
	}
 
}
 

	
 
@@ -633,7 +633,7 @@ GlyphID FreeTypeFontCache::MapCharToGlyp
 
const void *FreeTypeFontCache::GetFontTable(uint32 tag, size_t &length)
 
{
 
	const FontTable::iterator iter = this->font_tables.Find(tag);
 
	if (iter != this->font_tables.End()) {
 
	if (iter != this->font_tables.data() + this->font_tables.size()) {
 
		length = iter->second.first;
 
		return iter->second.second;
 
	}
src/game/game_text.cpp
Show inline comments
 
@@ -147,7 +147,7 @@ struct StringListReader : StringReader {
 
	 * @param translation Are we reading a translation?
 
	 */
 
	StringListReader(StringData &data, const LanguageStrings *strings, bool master, bool translation) :
 
			StringReader(data, strings->language, master, translation), p(strings->lines.Begin()), end(strings->lines.End())
 
			StringReader(data, strings->language, master, translation), p(strings->lines.data()), end(p + strings->lines.size())
 
	{
 
	}
 

	
 
@@ -318,13 +318,13 @@ void GameStrings::Compile()
 
	StringNameWriter id_writer(&this->string_names);
 
	id_writer.WriteHeader(data);
 

	
 
	for (LanguageStrings **p = this->raw_strings.Begin(); p != this->raw_strings.End(); p++) {
 
	for (LanguageStrings *p : this->raw_strings) {
 
		data.FreeTranslation();
 
		StringListReader translation_reader(data, *p, false, strcmp((*p)->language, "english") != 0);
 
		StringListReader translation_reader(data, p, false, strcmp(p->language, "english") != 0);
 
		translation_reader.ParseFile();
 
		if (_errors != 0) throw std::exception();
 

	
 
		this->compiled_strings.push_back(new LanguageStrings((*p)->language));
 
		this->compiled_strings.push_back(new LanguageStrings(p->language));
 
		TranslationWriter writer(&this->compiled_strings.back()->lines);
 
		writer.WriteLang(data);
 
	}
 
@@ -360,10 +360,11 @@ void RegisterGameTranslation(Squirrel *e
 
	if (SQ_FAILED(sq_get(vm, -2))) return;
 

	
 
	int idx = 0;
 
	for (const char * const *p = _current_data->string_names.Begin(); p != _current_data->string_names.End(); p++, idx++) {
 
		sq_pushstring(vm, *p, -1);
 
	for (const char * const p : _current_data->string_names) {
 
		sq_pushstring(vm, p, -1);
 
		sq_pushinteger(vm, idx);
 
		sq_rawset(vm, -3);
 
		idx++;
 
	}
 

	
 
	sq_pop(vm, 2);
 
@@ -391,9 +392,9 @@ void ReconsiderGameScriptLanguage()
 
	assert(language != NULL);
 
	language++;
 

	
 
	for (LanguageStrings **p = _current_data->compiled_strings.Begin(); p != _current_data->compiled_strings.End(); p++) {
 
		if (strcmp((*p)->language, language) == 0) {
 
			_current_data->cur_language = *p;
 
	for (LanguageStrings *p : _current_data->compiled_strings) {
 
		if (strcmp(p->language, language) == 0) {
 
			_current_data->cur_language = p;
 
			return;
 
		}
 
	}
src/gfx.cpp
Show inline comments
 
@@ -511,7 +511,7 @@ int DrawString(int left, int right, int 
 
	Layouter layout(str, INT32_MAX, colour, fontsize);
 
	if (layout.size() == 0) return 0;
 

	
 
	return DrawLayoutLine(*layout.Begin(), top, left, right, align, underline, true);
 
	return DrawLayoutLine(layout.front(), top, left, right, align, underline, true);
 
}
 

	
 
/**
 
@@ -647,8 +647,7 @@ int DrawStringMultiLine(int left, int ri
 
	int last_line = top;
 
	int first_line = bottom;
 

	
 
	for (const ParagraphLayouter::Line **iter = layout.Begin(); iter != layout.End(); iter++) {
 
		const ParagraphLayouter::Line *line = *iter;
 
	for (const ParagraphLayouter::Line *line : layout) {
 

	
 
		int line_height = line->GetLeading();
 
		if (y >= top && y < bottom) {
src/gfx_layout.cpp
Show inline comments
 
@@ -196,13 +196,13 @@ public:
 
			/* ICU's ParagraphLayout cannot handle empty strings, so fake one. */
 
			buff[0] = ' ';
 
			length = 1;
 
			fontMapping.End()[-1].first++;
 
			fontMapping.back().first++;
 
		}
 

	
 
		/* Fill ICU's FontRuns with the right data. */
 
		icu::FontRuns runs(fontMapping.size());
 
		for (FontMap::iterator iter = fontMapping.Begin(); iter != fontMapping.End(); iter++) {
 
			runs.add(iter->second, iter->first);
 
		for (auto &pair : fontMapping) {
 
			runs.add(pair.second, pair.first);
 
		}
 

	
 
		LEErrorCode status = LE_NO_ERROR;
 
@@ -419,8 +419,8 @@ int FallbackParagraphLayout::FallbackVis
 
int FallbackParagraphLayout::FallbackLine::GetLeading() const
 
{
 
	int leading = 0;
 
	for (const FallbackVisualRun * const *run = this->Begin(); run != this->End(); run++) {
 
		leading = max(leading, (*run)->GetLeading());
 
	for (const FallbackVisualRun * const &run : *this) {
 
		leading = max(leading, run->GetLeading());
 
	}
 

	
 
	return leading;
 
@@ -498,12 +498,12 @@ const ParagraphLayouter::Line *FallbackP
 
	if (*this->buffer == '\0') {
 
		/* Only a newline. */
 
		this->buffer = NULL;
 
		l->push_back(new FallbackVisualRun(this->runs.Begin()->second, this->buffer, 0, 0));
 
		l->push_back(new FallbackVisualRun(this->runs.front().second, this->buffer, 0, 0));
 
		return l;
 
	}
 

	
 
	int offset = this->buffer - this->buffer_begin;
 
	FontMap::iterator iter = this->runs.Begin();
 
	FontMap::iterator iter = this->runs.data();
 
	while (iter->first <= offset) {
 
		iter++;
 
		assert(iter != this->runs.End());
 
@@ -733,9 +733,9 @@ Layouter::Layouter(const char *str, int 
 
Dimension Layouter::GetBounds()
 
{
 
	Dimension d = { 0, 0 };
 
	for (const ParagraphLayouter::Line **l = this->Begin(); l != this->End(); l++) {
 
		d.width = max<uint>(d.width, (*l)->GetWidth());
 
		d.height += (*l)->GetLeading();
 
	for (const ParagraphLayouter::Line *l : *this) {
 
		d.width = max<uint>(d.width, l->GetWidth());
 
		d.height += l->GetLeading();
 
	}
 
	return d;
 
}
 
@@ -757,12 +757,12 @@ Point Layouter::GetCharPosition(const ch
 
		size_t len = Utf8Decode(&c, str);
 
		if (c == '\0' || c == '\n') break;
 
		str += len;
 
		index += (*this->Begin())->GetInternalCharLength(c);
 
		index += this->front()->GetInternalCharLength(c);
 
	}
 

	
 
	if (str == ch) {
 
		/* Valid character. */
 
		const ParagraphLayouter::Line *line = *this->Begin();
 
		const ParagraphLayouter::Line *line = this->front();
 

	
 
		/* Pointer to the end-of-string/line marker? Return total line width. */
 
		if (*ch == '\0' || *ch == '\n') {
 
@@ -795,7 +795,7 @@ Point Layouter::GetCharPosition(const ch
 
 */
 
const char *Layouter::GetCharAtPosition(int x) const
 
{
 
	const ParagraphLayouter::Line *line = *this->Begin();
 
	const ParagraphLayouter::Line *line = this->front();
 

	
 
	for (int run_index = 0; run_index < line->CountRuns(); run_index++) {
 
		const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index);
 
@@ -844,8 +844,8 @@ Font *Layouter::GetFont(FontSize size, T
 
 */
 
void Layouter::ResetFontCache(FontSize size)
 
{
 
	for (FontColourMap::iterator it = fonts[size].Begin(); it != fonts[size].End(); ++it) {
 
		delete it->second;
 
	for (auto &pair : fonts[size]) {
 
		delete pair.second;
 
	}
 
	fonts[size].clear();
 

	
src/group_gui.cpp
Show inline comments
 
@@ -127,11 +127,11 @@ private:
 

	
 
	void AddChildren(GUIGroupList *source, GroupID parent, int indent)
 
	{
 
		for (const Group **g = source->Begin(); g != source->End(); g++) {
 
			if ((*g)->parent != parent) continue;
 
			this->groups.push_back(*g);
 
		for (const Group *g : *source) {
 
			if (g->parent != parent) continue;
 
			this->groups.push_back(g);
 
			this->indents.push_back(indent);
 
			AddChildren(source, (*g)->index, indent + 1);
 
			AddChildren(source, g->index, indent + 1);
 
		}
 
	}
 

	
src/hotkeys.cpp
Show inline comments
 
@@ -316,11 +316,11 @@ static void SaveLoadHotkeys(bool save)
 
	IniFile *ini = new IniFile();
 
	ini->LoadFromDisk(_hotkeys_file, NO_DIRECTORY);
 

	
 
	for (HotkeyList **list = _hotkey_lists->Begin(); list != _hotkey_lists->End(); ++list) {
 
	for (HotkeyList *list : *_hotkey_lists) {
 
		if (save) {
 
			(*list)->Save(ini);
 
			list->Save(ini);
 
		} else {
 
			(*list)->Load(ini);
 
			list->Load(ini);
 
		}
 
	}
 

	
 
@@ -343,11 +343,11 @@ void SaveHotkeysToConfig()
 

	
 
void HandleGlobalHotkeys(WChar key, uint16 keycode)
 
{
 
	for (HotkeyList **list = _hotkey_lists->Begin(); list != _hotkey_lists->End(); ++list) {
 
		if ((*list)->global_hotkey_handler == NULL) continue;
 
	for (HotkeyList *list : *_hotkey_lists) {
 
		if (list->global_hotkey_handler == NULL) continue;
 

	
 
		int hotkey = (*list)->CheckMatch(keycode, true);
 
		if (hotkey >= 0 && ((*list)->global_hotkey_handler(hotkey) == ES_HANDLED)) return;
 
		int hotkey = list->CheckMatch(keycode, true);
 
		if (hotkey >= 0 && (list->global_hotkey_handler(hotkey) == ES_HANDLED)) return;
 
	}
 
}
 

	
src/music/dmusic.cpp
Show inline comments
 
@@ -751,7 +751,7 @@ static void MidiThreadProc(void *)
 
				block_time = playback_start_time + block.realtime * MIDITIME_TO_REFTIME;
 
				DEBUG(driver, 9, "DMusic thread: Streaming block " PRINTF_SIZE " (cur=" OTTD_PRINTF64 ", block=" OTTD_PRINTF64 ")", current_block, (long long)(current_time / MS_TO_REFTIME), (long long)(block_time / MS_TO_REFTIME));
 

	
 
				byte *data = block.data.Begin();
 
				byte *data = block.data.data();
 
				size_t remaining = block.data.size();
 
				byte last_status = 0;
 
				while (remaining > 0) {
src/music/midifile.cpp
Show inline comments
 
@@ -336,7 +336,7 @@ static bool FixupMidiData(MidiFile &targ
 
			last_ticktime = block.ticktime;
 
		} else {
 
			byte *datadest = grow(merged_blocks.back().data, block.data.size());
 
			memcpy(datadest, block.data.Begin(), block.data.size());
 
			memcpy(datadest, block.data.data(), block.data.size());
 
		}
 
	}
 
	std::swap(merged_blocks, target.blocks);
 
@@ -940,8 +940,8 @@ bool MidiFile::WriteSMF(const char *file
 
		}
 

	
 
		/* Write each block data command */
 
		byte *dp = block.data.Begin();
 
		while (dp < block.data.End()) {
 
		byte *dp = block.data.data();
 
		while (dp < block.data.data() + block.data.size()) {
 
			/* Always zero delta time inside blocks */
 
			if (needtime) {
 
				fputc(0, f);
src/music/win32_m.cpp
Show inline comments
 
@@ -229,7 +229,7 @@ void CALLBACK TimerCallback(UINT uTimerI
 
			break;
 
		}
 

	
 
		byte *data = block.data.Begin();
 
		byte *data = block.data.data();
 
		size_t remaining = block.data.size();
 
		byte last_status = 0;
 
		while (remaining > 0) {
src/network/core/host.cpp
Show inline comments
 
@@ -200,8 +200,8 @@ void NetworkFindBroadcastIPs(NetworkAddr
 
	/* Now display to the debug all the detected ips */
 
	DEBUG(net, 3, "Detected broadcast addresses:");
 
	int i = 0;
 
	for (NetworkAddress *addr = broadcast->Begin(); addr != broadcast->End(); addr++) {
 
		addr->SetPort(NETWORK_DEFAULT_PORT);
 
		DEBUG(net, 3, "%d) %s", i++, addr->GetHostname());
 
	for (NetworkAddress &addr : *broadcast) {
 
		addr.SetPort(NETWORK_DEFAULT_PORT);
 
		DEBUG(net, 3, "%d) %s", i++, addr.GetHostname());
 
	}
 
}
src/network/core/tcp_connect.cpp
Show inline comments
 
@@ -93,5 +93,5 @@ void TCPConnecter::Connect()
 
/** Kill all connection attempts. */
 
/* static */ void TCPConnecter::KillAll()
 
{
 
	for (TCPConnecter **iter = _tcp_connecters.Begin(); iter != _tcp_connecters.End(); iter++) (*iter)->killed = true;
 
	for (TCPConnecter *conn : _tcp_connecters) conn->killed = true;
 
}
src/network/core/tcp_http.cpp
Show inline comments
 
@@ -303,8 +303,8 @@ int NetworkHTTPSocketHandler::Receive()
 
	struct timeval tv;
 

	
 
	FD_ZERO(&read_fd);
 
	for (NetworkHTTPSocketHandler **iter = _http_connections.Begin(); iter < _http_connections.End(); iter++) {
 
		FD_SET((*iter)->sock, &read_fd);
 
	for (NetworkHTTPSocketHandler *handler : _http_connections) {
 
		FD_SET(handler->sock, &read_fd);
 
	}
 

	
 
	tv.tv_sec = tv.tv_usec = 0; // don't block at all.
src/network/core/tcp_listen.h
Show inline comments
 
@@ -54,13 +54,13 @@ public:
 

	
 
			/* Check if the client is banned */
 
			bool banned = false;
 
			for (char **iter = _network_ban_list.Begin(); iter != _network_ban_list.End(); iter++) {
 
				banned = address.IsInNetmask(*iter);
 
			for (char *entry : _network_ban_list) {
 
				banned = address.IsInNetmask(entry);
 
				if (banned) {
 
					Packet p(Tban_packet);
 
					p.PrepareToSend();
 

	
 
					DEBUG(net, 1, "[%s] Banned ip tried to join (%s), refused", Tsocket::GetName(), *iter);
 
					DEBUG(net, 1, "[%s] Banned ip tried to join (%s), refused", Tsocket::GetName(), entry);
 

	
 
					if (send(s, (const char*)p.buffer, p.size, 0) < 0) {
 
						DEBUG(net, 0, "send failed with error %d", GET_LAST_ERROR());
 
@@ -111,16 +111,16 @@ public:
 
		}
 

	
 
		/* take care of listener port */
 
		for (SocketList::iterator s = sockets.Begin(); s != sockets.End(); s++) {
 
			FD_SET(s->second, &read_fd);
 
		for (auto &s : sockets) {
 
			FD_SET(s.second, &read_fd);
 
		}
 

	
 
		tv.tv_sec = tv.tv_usec = 0; // don't block at all.
 
		if (select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv) < 0) return false;
 

	
 
		/* accept clients.. */
 
		for (SocketList::iterator s = sockets.Begin(); s != sockets.End(); s++) {
 
			if (FD_ISSET(s->second, &read_fd)) AcceptClient(s->second);
 
		for (auto &s : sockets) {
 
			if (FD_ISSET(s.second, &read_fd)) AcceptClient(s.second);
 
		}
 

	
 
		/* read stuff from clients */
 
@@ -145,8 +145,8 @@ public:
 
		NetworkAddressList addresses;
 
		GetBindAddresses(&addresses, port);
 

	
 
		for (NetworkAddress *address = addresses.Begin(); address != addresses.End(); address++) {
 
			address->Listen(SOCK_STREAM, &sockets);
 
		for (NetworkAddress &address : addresses) {
 
			address.Listen(SOCK_STREAM, &sockets);
 
		}
 

	
 
		if (sockets.size() == 0) {
 
@@ -161,8 +161,8 @@ public:
 
	/** Close the sockets we're listening on. */
 
	static void CloseListeners()
 
	{
 
		for (SocketList::iterator s = sockets.Begin(); s != sockets.End(); s++) {
 
			closesocket(s->second);
 
		for (auto &s : sockets) {
 
			closesocket(s.second);
 
		}
 
		sockets.clear();
 
		DEBUG(net, 1, "[%s] closed listeners", Tsocket::GetName());
src/network/core/udp.cpp
Show inline comments
 
@@ -25,8 +25,8 @@
 
NetworkUDPSocketHandler::NetworkUDPSocketHandler(NetworkAddressList *bind)
 
{
 
	if (bind != NULL) {
 
		for (NetworkAddress *addr = bind->Begin(); addr != bind->End(); addr++) {
 
			this->bind.push_back(*addr);
 
		for (NetworkAddress &addr : *bind) {
 
			this->bind.push_back(addr);
 
		}
 
	} else {
 
		/* As hostname NULL and port 0/NULL don't go well when
 
@@ -47,8 +47,8 @@ bool NetworkUDPSocketHandler::Listen()
 
	/* Make sure socket is closed */
 
	this->Close();
 

	
 
	for (NetworkAddress *addr = this->bind.Begin(); addr != this->bind.End(); addr++) {
 
		addr->Listen(SOCK_DGRAM, &this->sockets);
 
	for (NetworkAddress &addr : this->bind) {
 
		addr.Listen(SOCK_DGRAM, &this->sockets);
 
	}
 

	
 
	return this->sockets.size() != 0;
 
@@ -59,8 +59,8 @@ bool NetworkUDPSocketHandler::Listen()
 
 */
 
void NetworkUDPSocketHandler::Close()
 
{
 
	for (SocketList::iterator s = this->sockets.Begin(); s != this->sockets.End(); s++) {
 
		closesocket(s->second);
 
	for (auto &s : this->sockets) {
 
		closesocket(s.second);
 
	}
 
	this->sockets.clear();
 
}
 
@@ -82,26 +82,26 @@ void NetworkUDPSocketHandler::SendPacket
 
{
 
	if (this->sockets.size() == 0) this->Listen();
 

	
 
	for (SocketList::iterator s = this->sockets.Begin(); s != this->sockets.End(); s++) {
 
	for (auto &s : this->sockets) {
 
		/* Make a local copy because if we resolve it we cannot
 
		 * easily unresolve it so we can resolve it later again. */
 
		NetworkAddress send(*recv);
 

	
 
		/* Not the same type */
 
		if (!send.IsFamily(s->first.GetAddress()->ss_family)) continue;
 
		if (!send.IsFamily(s.first.GetAddress()->ss_family)) continue;
 

	
 
		p->PrepareToSend();
 

	
 
		if (broadcast) {
 
			/* Enable broadcast */
 
			unsigned long val = 1;
 
			if (setsockopt(s->second, SOL_SOCKET, SO_BROADCAST, (char *) &val, sizeof(val)) < 0) {
 
			if (setsockopt(s.second, SOL_SOCKET, SO_BROADCAST, (char *) &val, sizeof(val)) < 0) {
 
				DEBUG(net, 1, "[udp] setting broadcast failed with: %i", GET_LAST_ERROR());
 
			}
 
		}
 

	
 
		/* Send the buffer */
 
		int res = sendto(s->second, (const char*)p->buffer, p->size, 0, (const struct sockaddr *)send.GetAddress(), send.GetAddressLength());
 
		int res = sendto(s.second, (const char*)p->buffer, p->size, 0, (const struct sockaddr *)send.GetAddress(), send.GetAddressLength());
 
		DEBUG(net, 7, "[udp] sendto(%s)", send.GetAddressAsString());
 

	
 
		/* Check for any errors, but ignore it otherwise */
 
@@ -116,7 +116,7 @@ void NetworkUDPSocketHandler::SendPacket
 
 */
 
void NetworkUDPSocketHandler::ReceivePackets()
 
{
 
	for (SocketList::iterator s = this->sockets.Begin(); s != this->sockets.End(); s++) {
 
	for (auto &s : this->sockets) {
 
		for (int i = 0; i < 1000; i++) { // Do not infinitely loop when DoSing with UDP
 
			struct sockaddr_storage client_addr;
 
			memset(&client_addr, 0, sizeof(client_addr));
 
@@ -125,8 +125,8 @@ void NetworkUDPSocketHandler::ReceivePac
 
			socklen_t client_len = sizeof(client_addr);
 

	
 
			/* Try to receive anything */
 
			SetNonBlocking(s->second); // Some OSes seem to lose the non-blocking status of the socket
 
			int nbytes = recvfrom(s->second, (char*)p.buffer, SEND_MTU, 0, (struct sockaddr *)&client_addr, &client_len);
 
			SetNonBlocking(s.second); // Some OSes seem to lose the non-blocking status of the socket
 
			int nbytes = recvfrom(s.second, (char*)p.buffer, SEND_MTU, 0, (struct sockaddr *)&client_addr, &client_len);
 

	
 
			/* Did we get the bytes for the base header of the packet? */
 
			if (nbytes <= 0) break;    // No data, i.e. no packet
src/network/network.cpp
Show inline comments
 
@@ -632,8 +632,8 @@ void NetworkAddServer(const char *b)
 
 */
 
void GetBindAddresses(NetworkAddressList *addresses, uint16 port)
 
{
 
	for (char **iter = _network_bind_list.Begin(); iter != _network_bind_list.End(); iter++) {
 
		addresses->emplace_back(*iter, port);
 
	for (char *iter : _network_bind_list) {
 
		addresses->emplace_back(iter, port);
 
	}
 

	
 
	/* No address, so bind to everything. */
src/network/network_client.cpp
Show inline comments
 
@@ -110,7 +110,7 @@ struct PacketReader : LoadFilter {
 
	{
 
		this->read_bytes = 0;
 

	
 
		this->block = this->blocks.Begin();
 
		this->block = this->blocks.data();
 
		this->buf   = *this->block++;
 
		this->bufe  = this->buf + CHUNK;
 
	}
src/network/network_content.cpp
Show inline comments
 
@@ -137,8 +137,7 @@ bool ClientNetworkContentSocketHandler::
 
	if (ci->state == ContentInfo::UNSELECTED && ci->filesize == 0) ci->state = ContentInfo::DOES_NOT_EXIST;
 

	
 
	/* Do we already have a stub for this? */
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		ContentInfo *ici = *iter;
 
	for (ContentInfo *ici : this->infos) {
 
		if (ici->type == ci->type && ici->unique_id == ci->unique_id &&
 
				memcmp(ci->md5sum, ici->md5sum, sizeof(ci->md5sum)) == 0) {
 
			/* Preserve the name if possible */
 
@@ -168,8 +167,8 @@ bool ClientNetworkContentSocketHandler::
 
	this->infos.push_back(ci);
 

	
 
	/* Incoming data means that we might need to reconsider dependencies */
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		this->CheckDependencyState(*iter);
 
	for (ContentInfo *ici : this->infos) {
 
		this->CheckDependencyState(ici);
 
	}
 

	
 
	this->OnReceiveContentInfo(ci);
 
@@ -253,8 +252,7 @@ void ClientNetworkContentSocketHandler::
 
	Packet *p = new Packet(send_md5sum ? PACKET_CONTENT_CLIENT_INFO_EXTID_MD5 : PACKET_CONTENT_CLIENT_INFO_EXTID);
 
	p->Send_uint8(cv->size());
 

	
 
	for (ContentIterator iter = cv->Begin(); iter != cv->End(); iter++) {
 
		const ContentInfo *ci = *iter;
 
	for (const ContentInfo *ci : *cv) {
 
		p->Send_uint8((byte)ci->type);
 
		p->Send_uint32(ci->unique_id);
 
		if (!send_md5sum) continue;
 
@@ -266,11 +264,9 @@ void ClientNetworkContentSocketHandler::
 

	
 
	this->SendPacket(p);
 

	
 
	for (ContentIterator iter = cv->Begin(); iter != cv->End(); iter++) {
 
		ContentInfo *ci = *iter;
 
	for (ContentInfo *ci : *cv) {
 
		bool found = false;
 
		for (ContentIterator iter2 = this->infos.Begin(); iter2 != this->infos.End(); iter2++) {
 
			ContentInfo *ci2 = *iter2;
 
		for (ContentInfo *ci2 : this->infos) {
 
			if (ci->type == ci2->type && ci->unique_id == ci2->unique_id &&
 
					(!send_md5sum || memcmp(ci->md5sum, ci2->md5sum, sizeof(ci->md5sum)) == 0)) {
 
				found = true;
 
@@ -296,8 +292,7 @@ void ClientNetworkContentSocketHandler::
 
	bytes = 0;
 

	
 
	ContentIDList content;
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		const ContentInfo *ci = *iter;
 
	for (const ContentInfo *ci : this->infos) {
 
		if (!ci->IsSelected() || ci->state == ContentInfo::ALREADY_HERE) continue;
 

	
 
		content.push_back(ci->id);
 
@@ -333,8 +328,8 @@ void ClientNetworkContentSocketHandler::
 
	const char *lastof = content_request + bytes - 1;
 

	
 
	char *p = content_request;
 
	for (const ContentID *id = content.Begin(); id != content.End(); id++) {
 
		p += seprintf(p, lastof, "%d\n", *id);
 
	for (const ContentID &id : content) {
 
		p += seprintf(p, lastof, "%d\n", id);
 
	}
 

	
 
	this->http_response_index = -1;
 
@@ -351,7 +346,7 @@ void ClientNetworkContentSocketHandler::
 
void ClientNetworkContentSocketHandler::DownloadSelectedContentFallback(const ContentIDList &content)
 
{
 
	uint count = content.size();
 
	const ContentID *content_ids = content.Begin();
 
	const ContentID *content_ids = content.data();
 
	this->Connect();
 

	
 
	while (count > 0) {
 
@@ -626,7 +621,7 @@ void ClientNetworkContentSocketHandler::
 
#define check_and_terminate(p) { check_not_null(p); *(p) = '\0'; }
 

	
 
	for (;;) {
 
		char *str = this->http_response.Begin() + this->http_response_index;
 
		char *str = this->http_response.data() + this->http_response_index;
 
		char *p = strchr(str, '\n');
 
		check_and_terminate(p);
 

	
 
@@ -713,7 +708,7 @@ ClientNetworkContentSocketHandler::~Clie
 
	delete this->curInfo;
 
	if (this->curFile != NULL) fclose(this->curFile);
 

	
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) delete *iter;
 
	for (ContentInfo *ci : this->infos) delete ci;
 
}
 

	
 
/** Connect to the content server. */
 
@@ -807,8 +802,7 @@ void ClientNetworkContentSocketHandler::
 
 */
 
ContentInfo *ClientNetworkContentSocketHandler::GetContent(ContentID cid)
 
{
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		ContentInfo *ci = *iter;
 
	for (ContentInfo *ci : this->infos) {
 
		if (ci->id == cid) return ci;
 
	}
 
	return NULL;
 
@@ -844,8 +838,7 @@ void ClientNetworkContentSocketHandler::
 
/** Select everything we can select */
 
void ClientNetworkContentSocketHandler::SelectAll()
 
{
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		ContentInfo *ci = *iter;
 
	for (ContentInfo *ci : this->infos) {
 
		if (ci->state == ContentInfo::UNSELECTED) {
 
			ci->state = ContentInfo::SELECTED;
 
			this->CheckDependencyState(ci);
 
@@ -856,8 +849,7 @@ void ClientNetworkContentSocketHandler::
 
/** Select everything that's an update for something we've got */
 
void ClientNetworkContentSocketHandler::SelectUpgrade()
 
{
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		ContentInfo *ci = *iter;
 
	for (ContentInfo *ci : this->infos) {
 
		if (ci->state == ContentInfo::UNSELECTED && ci->upgrade) {
 
			ci->state = ContentInfo::SELECTED;
 
			this->CheckDependencyState(ci);
 
@@ -868,8 +860,7 @@ void ClientNetworkContentSocketHandler::
 
/** Unselect everything that we've not downloaded so far. */
 
void ClientNetworkContentSocketHandler::UnselectAll()
 
{
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		ContentInfo *ci = *iter;
 
	for (ContentInfo *ci : this->infos) {
 
		if (ci->IsSelected() && ci->state != ContentInfo::ALREADY_HERE) ci->state = ContentInfo::UNSELECTED;
 
	}
 
}
 
@@ -899,8 +890,7 @@ void ClientNetworkContentSocketHandler::
 
 */
 
void ClientNetworkContentSocketHandler::ReverseLookupDependency(ConstContentVector &parents, const ContentInfo *child) const
 
{
 
	for (ConstContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) {
 
		const ContentInfo *ci = *iter;
 
	for (const ContentInfo * const &ci : this->infos) {
 
		if (ci == child) continue;
 

	
 
		for (uint i = 0; i < ci->dependency_count; i++) {
 
@@ -929,8 +919,8 @@ void ClientNetworkContentSocketHandler::
 
		ConstContentVector parents;
 
		this->ReverseLookupDependency(parents, tree[i]);
 

	
 
		for (ConstContentIterator piter = parents.Begin(); piter != parents.End(); piter++) {
 
			include(tree, *piter);
 
		for (const ContentInfo *ci : parents) {
 
			include(tree, ci);
 
		}
 
	}
 
}
 
@@ -965,8 +955,7 @@ void ClientNetworkContentSocketHandler::
 
	 * we automatically selected them. */
 
	ConstContentVector parents;
 
	this->ReverseLookupDependency(parents, ci);
 
	for (ConstContentIterator iter = parents.Begin(); iter != parents.End(); iter++) {
 
		const ContentInfo *c = *iter;
 
	for (const ContentInfo *c : parents) {
 
		if (!c->IsSelected()) continue;
 

	
 
		this->Unselect(c->id);
 
@@ -987,9 +976,9 @@ void ClientNetworkContentSocketHandler::
 
		/* First check whether anything depends on us */
 
		int sel_count = 0;
 
		bool force_selection = false;
 
		for (ConstContentIterator iter = parents.Begin(); iter != parents.End(); iter++) {
 
			if ((*iter)->IsSelected()) sel_count++;
 
			if ((*iter)->state == ContentInfo::SELECTED) force_selection = true;
 
		for (const ContentInfo *ci : parents) {
 
			if (ci->IsSelected()) sel_count++;
 
			if (ci->state == ContentInfo::SELECTED) force_selection = true;
 
		}
 
		if (sel_count == 0) {
 
			/* Nothing depends on us */
 
@@ -1004,8 +993,8 @@ void ClientNetworkContentSocketHandler::
 
		this->ReverseLookupTreeDependency(parents, c);
 

	
 
		/* Is there anything that is "force" selected?, if so... we're done. */
 
		for (ConstContentIterator iter = parents.Begin(); iter != parents.End(); iter++) {
 
			if ((*iter)->state != ContentInfo::SELECTED) continue;
 
		for (const ContentInfo *ci : parents) {
 
			if (ci->state != ContentInfo::SELECTED) continue;
 

	
 
			force_selection = true;
 
			break;
 
@@ -1018,12 +1007,11 @@ void ClientNetworkContentSocketHandler::
 
		 * After that's done run over them once again to test their children
 
		 * to unselect. Don't do it immediately because it'll do exactly what
 
		 * we're doing now. */
 
		for (ConstContentIterator iter = parents.Begin(); iter != parents.End(); iter++) {
 
			const ContentInfo *c = *iter;
 
		for (const ContentInfo *c : parents) {
 
			if (c->state == ContentInfo::AUTOSELECTED) this->Unselect(c->id);
 
		}
 
		for (ConstContentIterator iter = parents.Begin(); iter != parents.End(); iter++) {
 
			this->CheckDependencyState(this->GetContent((*iter)->id));
 
		for (const ContentInfo *c : parents) {
 
			this->CheckDependencyState(this->GetContent(c->id));
 
		}
 
	}
 
}
 
@@ -1031,7 +1019,7 @@ void ClientNetworkContentSocketHandler::
 
/** Clear all downloaded content information. */
 
void ClientNetworkContentSocketHandler::Clear()
 
{
 
	for (ContentIterator iter = this->infos.Begin(); iter != this->infos.End(); iter++) delete *iter;
 
	for (ContentInfo *c : this->infos) delete c;
 

	
 
	this->infos.clear();
 
	this->requested.clear();
 
@@ -1041,37 +1029,37 @@ void ClientNetworkContentSocketHandler::
 

	
 
void ClientNetworkContentSocketHandler::OnConnect(bool success)
 
{
 
	for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) {
 
	for (auto iter = this->callbacks.begin(); iter != this->callbacks.end(); /* nothing */) {
 
		ContentCallback *cb = *iter;
 
		cb->OnConnect(success);
 
		if (iter != this->callbacks.End() && *iter == cb) iter++;
 
		if (iter != this->callbacks.end() && *iter == cb) iter++;
 
	}
 
}
 

	
 
void ClientNetworkContentSocketHandler::OnDisconnect()
 
{
 
	for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) {
 
	for (auto iter = this->callbacks.begin(); iter != this->callbacks.end(); /* nothing */) {
 
		ContentCallback *cb = *iter;
 
		cb->OnDisconnect();
 
		if (iter != this->callbacks.End() && *iter == cb) iter++;
 
		if (iter != this->callbacks.end() && *iter == cb) iter++;
 
	}
 
}
 

	
 
void ClientNetworkContentSocketHandler::OnReceiveContentInfo(const ContentInfo *ci)
 
{
 
	for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) {
 
	for (auto iter = this->callbacks.begin(); iter != this->callbacks.end(); /* nothing */) {
 
		ContentCallback *cb = *iter;
 
		cb->OnReceiveContentInfo(ci);
 
		if (iter != this->callbacks.End() && *iter == cb) iter++;
 
		if (iter != this->callbacks.end() && *iter == cb) iter++;
 
	}
 
}
 

	
 
void ClientNetworkContentSocketHandler::OnDownloadProgress(const ContentInfo *ci, int bytes)
 
{
 
	for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) {
 
	for (auto iter = this->callbacks.begin(); iter != this->callbacks.end(); /* nothing */) {
 
		ContentCallback *cb = *iter;
 
		cb->OnDownloadProgress(ci, bytes);
 
		if (iter != this->callbacks.End() && *iter == cb) iter++;
 
		if (iter != this->callbacks.end() && *iter == cb) iter++;
 
	}
 
}
 

	
 
@@ -1082,9 +1070,9 @@ void ClientNetworkContentSocketHandler::
 
		ci->state = ContentInfo::ALREADY_HERE;
 
	}
 

	
 
	for (ContentCallback **iter = this->callbacks.Begin(); iter != this->callbacks.End(); /* nothing */) {
 
	for (auto iter = this->callbacks.begin(); iter != this->callbacks.end(); /* nothing */) {
 
		ContentCallback *cb = *iter;
 
		cb->OnDownloadComplete(cid);
 
		if (iter != this->callbacks.End() && *iter == cb) iter++;
 
		if (iter != this->callbacks.end() && *iter == cb) iter++;
 
	}
 
}
src/network/network_content.h
Show inline comments
 
@@ -131,11 +131,11 @@ public:
 
	/** Get the number of content items we know locally. */
 
	uint Length() const { return this->infos.size(); }
 
	/** Get the begin of the content inf iterator. */
 
	ConstContentIterator Begin() const { return this->infos.Begin(); }
 
	ConstContentIterator Begin() const { return this->infos.data(); }
 
	/** Get the nth position of the content inf iterator. */
 
	ConstContentIterator Get(uint32 index) const { return this->infos.data() + index; }
 
	/** Get the end of the content inf iterator. */
 
	ConstContentIterator End() const { return this->infos.End(); }
 
	ConstContentIterator End() const { return this->Begin() + this->Length(); }
 

	
 
	void Clear();
 

	
src/network/network_content_gui.cpp
Show inline comments
 
@@ -176,8 +176,8 @@ public:
 
	~NetworkContentDownloadStatusWindow()
 
	{
 
		TarScanner::Mode mode = TarScanner::NONE;
 
		for (ContentType *iter = this->receivedTypes.Begin(); iter != this->receivedTypes.End(); iter++) {
 
			switch (*iter) {
 
		for (auto ctype : this->receivedTypes) {
 
			switch (ctype) {
 
				case CONTENT_TYPE_AI:
 
				case CONTENT_TYPE_AI_LIBRARY:
 
					/* AI::Rescan calls the scanner. */
 
@@ -210,8 +210,8 @@ public:
 
		TarScanner::DoScan(mode);
 

	
 
		/* Tell all the backends about what we've downloaded */
 
		for (ContentType *iter = this->receivedTypes.Begin(); iter != this->receivedTypes.End(); iter++) {
 
			switch (*iter) {
 
		for (auto ctype : this->receivedTypes) {
 
			switch (ctype) {
 
				case CONTENT_TYPE_AI:
 
				case CONTENT_TYPE_AI_LIBRARY:
 
					AI::Rescan();
 
@@ -333,8 +333,7 @@ class NetworkContentListWindow : public 
 
			pos = strecpy(pos, "do=searchgrfid&q=", last);
 

	
 
			bool first = true;
 
			for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) {
 
				const ContentInfo *ci = *iter;
 
			for (const ContentInfo *ci : this->content) {
 
				if (ci->state != ContentInfo::DOES_NOT_EXIST) continue;
 

	
 
				if (!first) pos = strecpy(pos, ",", last);
 
@@ -635,8 +634,13 @@ public:
 
		int sprite_y_offset = WD_MATRIX_TOP + (line_height - this->checkbox_size.height) / 2 - 1;
 
		int text_y_offset = WD_MATRIX_TOP + (line_height - FONT_HEIGHT_NORMAL) / 2;
 
		uint y = r.top;
 
		int cnt = 0;
 
		for (ConstContentIterator iter = this->content.data() + this->vscroll->GetPosition(); iter != this->content.End() && cnt < this->vscroll->GetCapacity(); iter++, cnt++) {
 

	
 
		auto iter = this->content.begin() + this->vscroll->GetPosition();
 
		auto end = iter + this->vscroll->GetCapacity();
 
		if (end > this->content.end())
 
			end = this->content.end();
 

	
 
		for (/**/; iter != end; iter++) {
 
			const ContentInfo *ci = *iter;
 

	
 
			if (ci == this->selected) GfxFillRect(r.left + 1, y + 1, r.right - 1, y + this->resize.step_height - 1, PC_GREY);
 
@@ -761,8 +765,7 @@ public:
 

	
 
			char buf[DRAW_STRING_BUFFER] = "";
 
			char *p = buf;
 
			for (ConstContentIterator iter = tree.Begin(); iter != tree.End(); iter++) {
 
				const ContentInfo *ci = *iter;
 
			for (const ContentInfo *ci : tree) {
 
				if (ci == this->selected || ci->state != ContentInfo::SELECTED) continue;
 

	
 
				p += seprintf(p, lastof(buf), buf == p ? "%s" : ", %s", ci->name);
 
@@ -985,8 +988,7 @@ public:
 
		this->filesize_sum = 0;
 
		bool show_select_all = false;
 
		bool show_select_upgrade = false;
 
		for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) {
 
			const ContentInfo *ci = *iter;
 
		for (const ContentInfo *ci : this->content) {
 
			switch (ci->state) {
 
				case ContentInfo::SELECTED:
 
				case ContentInfo::AUTOSELECTED:
 
@@ -1158,7 +1160,7 @@ void ShowNetworkContentListWindow(Conten
 
	ShowErrorMessage(STR_CONTENT_NO_ZLIB, STR_CONTENT_NO_ZLIB_SUB, WL_ERROR);
 
	/* Connection failed... clean up the mess */
 
	if (cv != NULL) {
 
		for (ContentIterator iter = cv->Begin(); iter != cv->End(); iter++) delete *iter;
 
		for (ContentInfo *ci : *cv) delete ci;
 
	}
 
#endif /* WITH_ZLIB */
 
}
src/network/network_gui.cpp
Show inline comments
 
@@ -1045,8 +1045,8 @@ void ShowNetworkGameWindow()
 
	if (first) {
 
		first = false;
 
		/* Add all servers from the config file to our list. */
 
		for (char **iter = _network_host_list.Begin(); iter != _network_host_list.End(); iter++) {
 
			NetworkAddServer(*iter);
 
		for (char *iter : _network_host_list) {
 
			NetworkAddServer(iter);
 
		}
 
	}
 

	
 
@@ -1783,8 +1783,8 @@ struct NetworkClientListPopupWindow : Wi
 
	void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
 
	{
 
		Dimension d = *size;
 
		for (const ClientListAction *action = this->actions.Begin(); action != this->actions.End(); action++) {
 
			d = maxdim(GetStringBoundingBox(action->name), d);
 
		for (const ClientListAction &action : this->actions) {
 
			d = maxdim(GetStringBoundingBox(action.name), d);
 
		}
 

	
 
		d.height *= this->actions.size();
 
@@ -1798,7 +1798,7 @@ struct NetworkClientListPopupWindow : Wi
 
		/* Draw the actions */
 
		int sel = this->sel_index;
 
		int y = r.top + WD_FRAMERECT_TOP;
 
		for (const ClientListAction *action = this->actions.Begin(); action != this->actions.End(); action++, y += FONT_HEIGHT_NORMAL) {
 
		for (const ClientListAction &action : this->actions) {
 
			TextColour colour;
 
			if (sel-- == 0) { // Selected item, highlight it
 
				GfxFillRect(r.left + 1, y, r.right - 1, y + FONT_HEIGHT_NORMAL - 1, PC_BLACK);
 
@@ -1807,7 +1807,8 @@ struct NetworkClientListPopupWindow : Wi
 
				colour = TC_BLACK;
 
			}
 

	
 
			DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, action->name, colour);
 
			DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, action.name, colour);
 
			y += FONT_HEIGHT_NORMAL;
 
		}
 
	}
 

	
src/network/network_server.cpp
Show inline comments
 
@@ -2095,8 +2095,8 @@ uint NetworkServerKickOrBanIP(const char
 
	/* Add address to ban-list */
 
	if (ban) {
 
		bool contains = false;
 
		for (char **iter = _network_ban_list.Begin(); iter != _network_ban_list.End(); iter++) {
 
			if (strcmp(*iter, ip) == 0) {
 
		for (char *iter : _network_ban_list) {
 
			if (strcmp(iter, ip) == 0) {
 
				contains = true;
 
				break;
 
			}
src/network/network_udp.cpp
Show inline comments
 
@@ -495,12 +495,12 @@ void ClientNetworkUDPSocketHandler::Hand
 
/** Broadcast to all ips */
 
static void NetworkUDPBroadCast(NetworkUDPSocketHandler *socket)
 
{
 
	for (NetworkAddress *addr = _broadcast_list.Begin(); addr != _broadcast_list.End(); addr++) {
 
	for (NetworkAddress &addr : _broadcast_list) {
 
		Packet p(PACKET_UDP_CLIENT_FIND_SERVER);
 

	
 
		DEBUG(net, 4, "[udp] broadcasting to %s", addr->GetHostname());
 
		DEBUG(net, 4, "[udp] broadcasting to %s", addr.GetHostname());
 

	
 
		socket->SendPacket(&p, addr, true, true);
 
		socket->SendPacket(&p, &addr, true, true);
 
	}
 
}
 

	
src/newgrf.cpp
Show inline comments
 
@@ -391,9 +391,8 @@ void CDECL grfmsg(int severity, const ch
 
 */
 
static GRFFile *GetFileByGRFID(uint32 grfid)
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile * const *file = _grf_files.Begin(); file != end; file++) {
 
		if ((*file)->grfid == grfid) return *file;
 
	for (GRFFile * const file : _grf_files) {
 
		if (file->grfid == grfid) return file;
 
	}
 
	return NULL;
 
}
 
@@ -405,9 +404,8 @@ static GRFFile *GetFileByGRFID(uint32 gr
 
 */
 
static GRFFile *GetFileByFilename(const char *filename)
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile * const *file = _grf_files.Begin(); file != end; file++) {
 
		if (strcmp((*file)->filename, filename) == 0) return *file;
 
	for (GRFFile * const file : _grf_files) {
 
		if (strcmp(file->filename, filename) == 0) return file;
 
	}
 
	return NULL;
 
}
 
@@ -1923,7 +1921,7 @@ static ChangeInfoResult StationChangeInf
 
						/* On error, bail out immediately. Temporary GRF data was already freed */
 
						if (_cur.skip_sprites < 0) return CIR_DISABLED;
 
					}
 
					dts->Clone(tmp_layout.Begin());
 
					dts->Clone(tmp_layout.data());
 
				}
 
				break;
 

	
 
@@ -4826,7 +4824,7 @@ static void NewSpriteGroup(ByteReader *b
 

	
 
			group->num_adjusts = adjusts.size();
 
			group->adjusts = MallocT<DeterministicSpriteGroupAdjust>(group->num_adjusts);
 
			MemCpyT(group->adjusts, adjusts.Begin(), group->num_adjusts);
 
			MemCpyT(group->adjusts, adjusts.data(), group->num_adjusts);
 

	
 
			std::vector<DeterministicSpriteGroupRange> ranges;
 
			ranges.resize(buf->ReadByte());
 
@@ -8094,9 +8092,8 @@ static void InitializeGRFSpecial()
 
/** Reset and clear all NewGRF stations */
 
static void ResetCustomStations()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		StationSpec **&stations = (*file)->stations;
 
	for (GRFFile * const file : _grf_files) {
 
		StationSpec **&stations = file->stations;
 
		if (stations == NULL) continue;
 
		for (uint i = 0; i < NUM_STATIONS_PER_GRF; i++) {
 
			if (stations[i] == NULL) continue;
 
@@ -8129,9 +8126,8 @@ static void ResetCustomStations()
 
/** Reset and clear all NewGRF houses */
 
static void ResetCustomHouses()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		HouseSpec **&housespec = (*file)->housespec;
 
	for (GRFFile * const file : _grf_files) {
 
		HouseSpec **&housespec = file->housespec;
 
		if (housespec == NULL) continue;
 
		for (uint i = 0; i < NUM_HOUSES_PER_GRF; i++) {
 
			free(housespec[i]);
 
@@ -8145,9 +8141,8 @@ static void ResetCustomHouses()
 
/** Reset and clear all NewGRF airports */
 
static void ResetCustomAirports()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		AirportSpec **aslist = (*file)->airportspec;
 
	for (GRFFile * const file : _grf_files) {
 
		AirportSpec **aslist = file->airportspec;
 
		if (aslist != NULL) {
 
			for (uint i = 0; i < NUM_AIRPORTS_PER_GRF; i++) {
 
				AirportSpec *as = aslist[i];
 
@@ -8166,10 +8161,10 @@ static void ResetCustomAirports()
 
				}
 
			}
 
			free(aslist);
 
			(*file)->airportspec = NULL;
 
		}
 

	
 
		AirportTileSpec **&airporttilespec = (*file)->airtspec;
 
			file->airportspec = NULL;
 
		}
 

	
 
		AirportTileSpec **&airporttilespec = file->airtspec;
 
		if (airporttilespec != NULL) {
 
			for (uint i = 0; i < NUM_AIRPORTTILES_PER_GRF; i++) {
 
				free(airporttilespec[i]);
 
@@ -8183,10 +8178,9 @@ static void ResetCustomAirports()
 
/** Reset and clear all NewGRF industries */
 
static void ResetCustomIndustries()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		IndustrySpec **&industryspec = (*file)->industryspec;
 
		IndustryTileSpec **&indtspec = (*file)->indtspec;
 
	for (GRFFile * const file : _grf_files) {
 
		IndustrySpec **&industryspec = file->industryspec;
 
		IndustryTileSpec **&indtspec = file->indtspec;
 

	
 
		/* We are verifiying both tiles and industries specs loaded from the grf file
 
		 * First, let's deal with industryspec */
 
@@ -8223,9 +8217,8 @@ static void ResetCustomIndustries()
 
/** Reset and clear all NewObjects */
 
static void ResetCustomObjects()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		ObjectSpec **&objectspec = (*file)->objectspec;
 
	for (GRFFile * const file : _grf_files) {
 
		ObjectSpec **&objectspec = file->objectspec;
 
		if (objectspec == NULL) continue;
 
		for (uint i = 0; i < NUM_OBJECTS_PER_GRF; i++) {
 
			free(objectspec[i]);
 
@@ -8239,9 +8232,8 @@ static void ResetCustomObjects()
 
/** Reset and clear all NewGRFs */
 
static void ResetNewGRF()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		delete *file;
 
	for (GRFFile * const file : _grf_files) {
 
		delete file;
 
	}
 

	
 
	_grf_files.clear();
 
@@ -8760,9 +8752,8 @@ static void FinaliseHouseArray()
 
	 * On the other hand, why 1930? Just 'fix' the houses with the lowest
 
	 * minimum introduction date to 0.
 
	 */
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		HouseSpec **&housespec = (*file)->housespec;
 
	for (GRFFile * const file : _grf_files) {
 
		HouseSpec **&housespec = file->housespec;
 
		if (housespec == NULL) continue;
 

	
 
		for (int i = 0; i < NUM_HOUSES_PER_GRF; i++) {
 
@@ -8774,7 +8765,7 @@ static void FinaliseHouseArray()
 
			const HouseSpec *next2 = (i + 2 < NUM_HOUSES_PER_GRF ? housespec[i + 2] : NULL);
 
			const HouseSpec *next3 = (i + 3 < NUM_HOUSES_PER_GRF ? housespec[i + 3] : NULL);
 

	
 
			if (!IsHouseSpecValid(hs, next1, next2, next3, (*file)->filename)) continue;
 
			if (!IsHouseSpecValid(hs, next1, next2, next3, file->filename)) continue;
 

	
 
			_house_mngr.SetEntitySpec(hs);
 
		}
 
@@ -8823,10 +8814,9 @@ static void FinaliseHouseArray()
 
 */
 
static void FinaliseIndustriesArray()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		IndustrySpec **&industryspec = (*file)->industryspec;
 
		IndustryTileSpec **&indtspec = (*file)->indtspec;
 
	for (GRFFile * const file : _grf_files) {
 
		IndustrySpec **&industryspec = file->industryspec;
 
		IndustryTileSpec **&indtspec = file->indtspec;
 
		if (industryspec != NULL) {
 
			for (int i = 0; i < NUM_INDUSTRYTYPES_PER_GRF; i++) {
 
				IndustrySpec *indsp = industryspec[i];
 
@@ -8894,9 +8884,8 @@ static void FinaliseIndustriesArray()
 
 */
 
static void FinaliseObjectsArray()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		ObjectSpec **&objectspec = (*file)->objectspec;
 
	for (GRFFile * const file : _grf_files) {
 
		ObjectSpec **&objectspec = file->objectspec;
 
		if (objectspec != NULL) {
 
			for (int i = 0; i < NUM_OBJECTS_PER_GRF; i++) {
 
				if (objectspec[i] != NULL && objectspec[i]->grf_prop.grffile != NULL && objectspec[i]->enabled) {
 
@@ -8914,9 +8903,8 @@ static void FinaliseObjectsArray()
 
 */
 
static void FinaliseAirportsArray()
 
{
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		AirportSpec **&airportspec = (*file)->airportspec;
 
	for (GRFFile * const file : _grf_files) {
 
		AirportSpec **&airportspec = file->airportspec;
 
		if (airportspec != NULL) {
 
			for (int i = 0; i < NUM_AIRPORTS_PER_GRF; i++) {
 
				if (airportspec[i] != NULL && airportspec[i]->enabled) {
 
@@ -8925,7 +8913,7 @@ static void FinaliseAirportsArray()
 
			}
 
		}
 

	
 
		AirportTileSpec **&airporttilespec = (*file)->airtspec;
 
		AirportTileSpec **&airporttilespec = file->airtspec;
 
		if (airporttilespec != NULL) {
 
			for (uint i = 0; i < NUM_AIRPORTTILES_PER_GRF; i++) {
 
				if (airporttilespec[i] != NULL && airporttilespec[i]->enabled) {
 
@@ -9286,10 +9274,9 @@ static void FinalisePriceBaseMultipliers
 
	}
 

	
 
	/* Apply fallback prices for grf version < 8 */
 
	const GRFFile * const *end = _grf_files.End();
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		if ((*file)->grf_version >= 8) continue;
 
		PriceMultipliers &price_base_multipliers = (*file)->price_base_multipliers;
 
	for (GRFFile * const file : _grf_files) {
 
		if (file->grf_version >= 8) continue;
 
		PriceMultipliers &price_base_multipliers = file->price_base_multipliers;
 
		for (Price p = PR_BEGIN; p < PR_END; p++) {
 
			Price fallback_price = _price_base_specs[p].fallback_price;
 
			if (fallback_price != INVALID_PRICE && price_base_multipliers[p] == INVALID_PRICE_MODIFIER) {
 
@@ -9301,21 +9288,21 @@ static void FinalisePriceBaseMultipliers
 
	}
 

	
 
	/* Decide local/global scope of price base multipliers */
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		PriceMultipliers &price_base_multipliers = (*file)->price_base_multipliers;
 
	for (GRFFile * const file : _grf_files) {
 
		PriceMultipliers &price_base_multipliers = file->price_base_multipliers;
 
		for (Price p = PR_BEGIN; p < PR_END; p++) {
 
			if (price_base_multipliers[p] == INVALID_PRICE_MODIFIER) {
 
				/* No multiplier was set; set it to a neutral value */
 
				price_base_multipliers[p] = 0;
 
			} else {
 
				if (!HasBit((*file)->grf_features, _price_base_specs[p].grf_feature)) {
 
				if (!HasBit(file->grf_features, _price_base_specs[p].grf_feature)) {
 
					/* The grf does not define any objects of the feature,
 
					 * so it must be a difficulty setting. Apply it globally */
 
					DEBUG(grf, 3, "'%s' sets global price base multiplier %d", (*file)->filename, p);
 
					DEBUG(grf, 3, "'%s' sets global price base multiplier %d", file->filename, p);
 
					SetPriceBaseMultiplier(p, price_base_multipliers[p]);
 
					price_base_multipliers[p] = 0;
 
				} else {
 
					DEBUG(grf, 3, "'%s' sets local price base multiplier %d", (*file)->filename, p);
 
					DEBUG(grf, 3, "'%s' sets local price base multiplier %d", file->filename, p);
 
				}
 
			}
 
		}
 
@@ -9327,8 +9314,8 @@ extern void InitGRFTownGeneratorNames();
 
/** Finish loading NewGRFs and execute needed post-processing */
 
static void AfterLoadGRFs()
 
{
 
	for (StringIDMapping *it = _string_to_grf_mapping.Begin(); it != _string_to_grf_mapping.End(); it++) {
 
		*it->target = MapGRFStringID(it->grfid, it->source);
 
	for (StringIDMapping &it : _string_to_grf_mapping) {
 
		*it.target = MapGRFStringID(it.grfid, it.source);
 
	}
 
	_string_to_grf_mapping.clear();
 

	
src/newgrf_commons.cpp
Show inline comments
 
@@ -683,7 +683,7 @@ uint32 NewGRFSpriteLayout::PrepareLayout
 
	 * and apply the default sprite offsets (unless disabled). */
 
	const TileLayoutRegisters *regs = this->registers;
 
	bool ground = true;
 
	foreach_draw_tile_seq(result, result_seq.Begin()) {
 
	foreach_draw_tile_seq(result, result_seq.data()) {
 
		TileLayoutFlags flags = TLF_NOTHING;
 
		if (regs != NULL) flags = regs->flags;
 

	
 
@@ -737,7 +737,7 @@ void NewGRFSpriteLayout::ProcessRegister
 
	DrawTileSeqStruct *result;
 
	const TileLayoutRegisters *regs = this->registers;
 
	bool ground = true;
 
	foreach_draw_tile_seq(result, result_seq.Begin()) {
 
	foreach_draw_tile_seq(result, result_seq.data()) {
 
		TileLayoutFlags flags = TLF_NOTHING;
 
		if (regs != NULL) flags = regs->flags;
 

	
src/newgrf_commons.h
Show inline comments
 
@@ -164,7 +164,7 @@ struct NewGRFSpriteLayout : ZeroedMemory
 
	 */
 
	const DrawTileSeqStruct *GetLayout(PalSpriteID *ground) const
 
	{
 
		DrawTileSeqStruct *front = result_seq.Begin();
 
		DrawTileSeqStruct *front = result_seq.data();
 
		*ground = front->image;
 
		return front + 1;
 
	}
src/newgrf_config.cpp
Show inline comments
 
@@ -182,9 +182,9 @@ void GRFConfig::SetSuitablePalette()
 
 */
 
void GRFConfig::FinalizeParameterInfo()
 
{
 
	for (GRFParameterInfo **info = this->param_info.Begin(); info != this->param_info.End(); ++info) {
 
		if (*info == NULL) continue;
 
		(*info)->Finalize();
 
	for (GRFParameterInfo *info : this->param_info) {
 
		if (info == NULL) continue;
 
		info->Finalize();
 
	}
 
}
 

	
src/newgrf_debug_gui.cpp
Show inline comments
 
@@ -840,8 +840,8 @@ struct SpriteAlignerWindow : Window {
 
				/* Relative offset is new absolute offset - starting absolute offset.
 
				 * Show 0, 0 as the relative offsets if entry is not in the map (meaning they have not been changed yet).
 
				 */
 
				const SmallPair<SpriteID, XyOffs> *key_offs_pair = this->offs_start_map.Find(this->current_sprite);
 
				if (key_offs_pair != this->offs_start_map.End()) {
 
				const auto key_offs_pair = this->offs_start_map.Find(this->current_sprite);
 
				if (key_offs_pair != this->offs_start_map.end()) {
 
					SetDParam(0, spr->x_offs - key_offs_pair->second.first);
 
					SetDParam(1, spr->y_offs - key_offs_pair->second.second);
 
				} else {
src/newgrf_engine.cpp
Show inline comments
 
@@ -1231,13 +1231,12 @@ void CommitVehicleListOrderChanges()
 
	FOR_ALL_ENGINES(e) {
 
		ordering.push_back(e->index);
 
	}
 
	QSortT(ordering.Begin(), ordering.size(), EnginePreSort);
 
	QSortT(ordering.data(), ordering.size(), EnginePreSort);
 

	
 
	/* Apply Insertion-Sort operations */
 
	const ListOrderChange *end = _list_order_changes.End();
 
	for (const ListOrderChange *it = _list_order_changes.Begin(); it != end; ++it) {
 
		EngineID source = it->engine;
 
		uint local_target = it->target;
 
	for (const ListOrderChange &it : _list_order_changes) {
 
		EngineID source = it.engine;
 
		uint local_target = it.target;
 

	
 
		const EngineIDMapping *id_source = _engine_mngr.data() + source;
 
		if (id_source->internal_id == local_target) continue;
 
@@ -1251,7 +1250,7 @@ void CommitVehicleListOrderChanges()
 
		assert(source_index >= 0 && target_index >= 0);
 
		assert(source_index != target_index);
 

	
 
		EngineID *list = ordering.Begin();
 
		EngineID *list = ordering.data();
 
		if (source_index < target_index) {
 
			--target_index;
 
			for (int i = source_index; i < target_index; ++i) list[i] = list[i + 1];
 
@@ -1263,10 +1262,10 @@ void CommitVehicleListOrderChanges()
 
	}
 

	
 
	/* Store final sort-order */
 
	const EngineID *idend = ordering.End();
 
	uint index = 0;
 
	for (const EngineID *it = ordering.Begin(); it != idend; ++it, ++index) {
 
		Engine::Get(*it)->list_position = index;
 
	for (const EngineID &eid : ordering) {
 
		Engine::Get(eid)->list_position = index;
 
		++index;
 
	}
 

	
 
	/* Clear out the queue */
src/newgrf_text.cpp
Show inline comments
 
@@ -168,8 +168,8 @@ static byte _currentLangID = GRFLX_ENGLI
 
int LanguageMap::GetMapping(int newgrf_id, bool gender) const
 
{
 
	const SmallVector<Mapping, 1> &map = gender ? this->gender_map : this->case_map;
 
	for (const Mapping *m = map.Begin(); m != map.End(); m++) {
 
		if (m->newgrf_id == newgrf_id) return m->openttd_id;
 
	for (const Mapping &m : map) {
 
		if (m.newgrf_id == newgrf_id) return m.openttd_id;
 
	}
 
	return -1;
 
}
 
@@ -183,8 +183,8 @@ int LanguageMap::GetMapping(int newgrf_i
 
int LanguageMap::GetReverseMapping(int openttd_id, bool gender) const
 
{
 
	const SmallVector<Mapping, 1> &map = gender ? this->gender_map : this->case_map;
 
	for (const Mapping *m = map.Begin(); m != map.End(); m++) {
 
		if (m->openttd_id == openttd_id) return m->newgrf_id;
 
	for (const Mapping &m : map) {
 
		if (m.openttd_id == openttd_id) return m.newgrf_id;
 
	}
 
	return -1;
 
}
 
@@ -194,8 +194,8 @@ struct UnmappedChoiceList : ZeroedMemory
 
	/** Clean everything up. */
 
	~UnmappedChoiceList()
 
	{
 
		for (SmallPair<byte, char *> *p = this->strings.Begin(); p < this->strings.End(); p++) {
 
			free(p->second);
 
		for (SmallPair<byte, char *> p : this->strings) {
 
			free(p.second);
 
		}
 
	}
 

	
src/object_cmd.cpp
Show inline comments
 
@@ -453,9 +453,8 @@ ClearedObjectArea *FindClearedObject(Til
 
{
 
	TileArea ta = TileArea(tile, 1, 1);
 

	
 
	const ClearedObjectArea *end = _cleared_object_areas.End();
 
	for (ClearedObjectArea *coa = _cleared_object_areas.Begin(); coa != end; coa++) {
 
		if (coa->area.Intersects(ta)) return coa;
 
	for (ClearedObjectArea &coa : _cleared_object_areas) {
 
		if (coa.area.Intersects(ta)) return &coa;
 
	}
 

	
 
	return NULL;
src/os/macosx/string_osx.cpp
Show inline comments
 
@@ -75,8 +75,8 @@ public:
 

	
 
				/* Extract font information for this run. */
 
				CFRange chars = CTRunGetStringRange(run);
 
				FontMap::const_iterator map = fontMapping.Begin();
 
				while (map < fontMapping.End() - 1 && map->first <= chars.location) map++;
 
				auto map = fontMapping.begin();
 
				while (map < fontMapping.end() - 1 && map->first <= chars.location) map++;
 

	
 
				this->push_back(new CoreTextVisualRun(run, map->second, buff));
 
			}
 
@@ -137,8 +137,8 @@ static CTRunDelegateCallbacks _sprite_fo
 
	if (length == 0) return NULL;
 

	
 
	/* Can't layout our in-built sprite fonts. */
 
	for (FontMap::const_iterator i = fontMapping.Begin(); i != fontMapping.End(); i++) {
 
		if (i->second->fc->IsBuiltInFont()) return NULL;
 
	for (const auto &i : fontMapping) {
 
		if (i.second->fc->IsBuiltInFont()) return NULL;
 
	}
 

	
 
	/* Make attributed string with embedded font information. */
 
@@ -152,31 +152,31 @@ static CTRunDelegateCallbacks _sprite_fo
 
	/* Apply font and colour ranges to our string. This is important to make sure
 
	 * that we get proper glyph boundaries on style changes. */
 
	int last = 0;
 
	for (FontMap::const_iterator i = fontMapping.Begin(); i != fontMapping.End(); i++) {
 
		if (i->first - last == 0) continue;
 
	for (const auto &i : fontMapping) {
 
		if (i.first - last == 0) continue;
 

	
 
		if (_font_cache[i->second->fc->GetSize()] == NULL) {
 
		if (_font_cache[i.second->fc->GetSize()] == NULL) {
 
			/* Cache font information. */
 
			CFStringRef font_name = CFStringCreateWithCString(kCFAllocatorDefault, i->second->fc->GetFontName(), kCFStringEncodingUTF8);
 
			_font_cache[i->second->fc->GetSize()] = CTFontCreateWithName(font_name, i->second->fc->GetFontSize(), NULL);
 
			CFStringRef font_name = CFStringCreateWithCString(kCFAllocatorDefault, i.second->fc->GetFontName(), kCFStringEncodingUTF8);
 
			_font_cache[i.second->fc->GetSize()] = CTFontCreateWithName(font_name, i.second->fc->GetFontSize(), NULL);
 
			CFRelease(font_name);
 
		}
 
		CFAttributedStringSetAttribute(str, CFRangeMake(last, i->first - last), kCTFontAttributeName, _font_cache[i->second->fc->GetSize()]);
 
		CFAttributedStringSetAttribute(str, CFRangeMake(last, i.first - last), kCTFontAttributeName, _font_cache[i.second->fc->GetSize()]);
 

	
 
		CGColorRef color = CGColorCreateGenericGray((uint8)i->second->colour / 255.0f, 1.0f); // We don't care about the real colours, just that they are different.
 
		CFAttributedStringSetAttribute(str, CFRangeMake(last, i->first - last), kCTForegroundColorAttributeName, color);
 
		CGColorRef color = CGColorCreateGenericGray((uint8)i.second->colour / 255.0f, 1.0f); // We don't care about the real colours, just that they are different.
 
		CFAttributedStringSetAttribute(str, CFRangeMake(last, i.first - last), kCTForegroundColorAttributeName, color);
 
		CGColorRelease(color);
 

	
 
		/* Install a size callback for our special sprite glyphs. */
 
		for (ssize_t c = last; c < i->first; c++) {
 
		for (ssize_t c = last; c < i.first; c++) {
 
			if (buff[c] >= SCC_SPRITE_START && buff[c] <= SCC_SPRITE_END) {
 
				CTRunDelegateRef del = CTRunDelegateCreate(&_sprite_font_callback, (void *)(size_t)(buff[c] | (i->second->fc->GetSize() << 24)));
 
				CTRunDelegateRef del = CTRunDelegateCreate(&_sprite_font_callback, (void *)(size_t)(buff[c] | (i.second->fc->GetSize() << 24)));
 
				CFAttributedStringSetAttribute(str, CFRangeMake(c, 1), kCTRunDelegateAttributeName, del);
 
				CFRelease(del);
 
			}
 
		}
 

	
 
		last = i->first;
 
		last = i.first;
 
	}
 
	CFAttributedStringEndEditing(str);
 

	
 
@@ -243,8 +243,8 @@ CoreTextParagraphLayout::CoreTextVisualR
 
int CoreTextParagraphLayout::CoreTextLine::GetLeading() const
 
{
 
	int leading = 0;
 
	for (const CoreTextVisualRun * const *run = this->Begin(); run != this->End(); run++) {
 
		leading = max(leading, (*run)->GetLeading());
 
	for (const CoreTextVisualRun * const &run : *this) {
 
		leading = max(leading, run->GetLeading());
 
	}
 

	
 
	return leading;
 
@@ -259,8 +259,8 @@ int CoreTextParagraphLayout::CoreTextLin
 
	if (this->size() == 0) return 0;
 

	
 
	int total_width = 0;
 
	for (const CoreTextVisualRun * const *run = this->Begin(); run != this->End(); run++) {
 
		total_width += (*run)->GetAdvance();
 
	for (const CoreTextVisualRun * const &run : *this) {
 
		total_width += run->GetAdvance();
 
	}
 

	
 
	return total_width;
src/os/windows/string_uniscribe.cpp
Show inline comments
 
@@ -282,8 +282,8 @@ static std::vector<SCRIPT_ITEM> Uniscrib
 
	if (length == 0) return NULL;
 

	
 
	/* Can't layout our in-built sprite fonts. */
 
	for (FontMap::const_iterator i = fontMapping.Begin(); i != fontMapping.End(); i++) {
 
		if (i->second->fc->IsBuiltInFont()) return NULL;
 
	for (auto const &pair : fontMapping) {
 
		if (pair.second->fc->IsBuiltInFont()) return NULL;
 
	}
 

	
 
	/* Itemize text. */
 
@@ -296,12 +296,12 @@ static std::vector<SCRIPT_ITEM> Uniscrib
 

	
 
	int cur_pos = 0;
 
	std::vector<SCRIPT_ITEM>::iterator cur_item = items.begin();
 
	for (FontMap::const_iterator i = fontMapping.Begin(); i != fontMapping.End(); i++) {
 
		while (cur_pos < i->first && cur_item != items.end() - 1) {
 
	for (auto const &i : fontMapping) {
 
		while (cur_pos < i.first && cur_item != items.end() - 1) {
 
			/* Add a range that spans the intersection of the remaining item and font run. */
 
			int stop_pos = min(i->first, (cur_item + 1)->iCharPos);
 
			int stop_pos = min(i.first, (cur_item + 1)->iCharPos);
 
			assert(stop_pos - cur_pos > 0);
 
			ranges.push_back(UniscribeRun(cur_pos, stop_pos - cur_pos, i->second, cur_item->a));
 
			ranges.push_back(UniscribeRun(cur_pos, stop_pos - cur_pos, i.second, cur_item->a));
 

	
 
			/* Shape the range. */
 
			if (!UniscribeShapeRun(buff, ranges.back())) {
 
@@ -448,8 +448,8 @@ static std::vector<SCRIPT_ITEM> Uniscrib
 
int UniscribeParagraphLayout::UniscribeLine::GetLeading() const
 
{
 
	int leading = 0;
 
	for (const UniscribeVisualRun * const *run = this->Begin(); run != this->End(); run++) {
 
		leading = max(leading, (*run)->GetLeading());
 
	for (const UniscribeVisualRun *run : *this) {
 
		leading = max(leading, run->GetLeading());
 
	}
 

	
 
	return leading;
 
@@ -462,8 +462,8 @@ int UniscribeParagraphLayout::UniscribeL
 
int UniscribeParagraphLayout::UniscribeLine::GetWidth() const
 
{
 
	int length = 0;
 
	for (const UniscribeVisualRun * const *run = this->Begin(); run != this->End(); run++) {
 
		length += (*run)->GetAdvance();
 
	for (const UniscribeVisualRun *run : *this) {
 
		length += run->GetAdvance();
 
	}
 

	
 
	return length;
src/rail_cmd.cpp
Show inline comments
 
@@ -1754,8 +1754,8 @@ CommandCost CmdConvertRail(TileIndex til
 

	
 
	if (flags & DC_EXEC) {
 
		/* Railtype changed, update trains as when entering different track */
 
		for (Train **v = affected_trains.Begin(); v != affected_trains.End(); v++) {
 
			(*v)->ConsistChanged(CCF_TRACK);
 
		for (Train *v : affected_trains) {
 
			v->ConsistChanged(CCF_TRACK);
 
		}
 
	}
 

	
src/saveload/afterload.cpp
Show inline comments
 
@@ -2197,12 +2197,12 @@ bool AfterLoadGame()
 

	
 
		extern SmallVector<TileIndex, 256> _animated_tiles;
 

	
 
		for (TileIndex *tile = _animated_tiles.Begin(); tile < _animated_tiles.End(); /* Nothing */) {
 
		for (auto tile = _animated_tiles.begin(); tile < _animated_tiles.end(); /* Nothing */) {
 
			/* Remove if tile is not animated */
 
			bool remove = _tile_type_procs[GetTileType(*tile)]->animate_tile_proc == NULL;
 

	
 
			/* and remove if duplicate */
 
			for (TileIndex *j = _animated_tiles.Begin(); !remove && j < tile; j++) {
 
			for (auto j = _animated_tiles.begin(); !remove && j < tile; j++) {
 
				remove = *tile == *j;
 
			}
 

	
 
@@ -2981,9 +2981,12 @@ bool AfterLoadGame()
 
			while (cur_skip > skip_frames[0]) {
 
				RoadVehicle *u = v;
 
				RoadVehicle *prev = NULL;
 
				for (uint *it = skip_frames.Begin(); it != skip_frames.End(); ++it, prev = u, u = u->Next()) {
 
				for (uint sf : skip_frames) {
 
					extern bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *prev);
 
					if (*it >= cur_skip) IndividualRoadVehicleController(u, prev);
 
					if (sf >= cur_skip) IndividualRoadVehicleController(u, prev);
 

	
 
					prev = u;
 
					u = u->Next();
 
				}
 
				cur_skip--;
 
			}
src/saveload/animated_tile_sl.cpp
Show inline comments
 
@@ -25,8 +25,8 @@ extern SmallVector<TileIndex, 256> _anim
 
 */
 
static void Save_ANIT()
 
{
 
	SlSetLength(_animated_tiles.size() * sizeof(*_animated_tiles.Begin()));
 
	SlArray(_animated_tiles.Begin(), _animated_tiles.size(), SLE_UINT32);
 
	SlSetLength(_animated_tiles.size() * sizeof(_animated_tiles.front()));
 
	SlArray(_animated_tiles.data(), _animated_tiles.size(), SLE_UINT32);
 
}
 

	
 
/**
 
@@ -47,10 +47,10 @@ static void Load_ANIT()
 
		return;
 
	}
 

	
 
	uint count = (uint)SlGetFieldLength() / sizeof(*_animated_tiles.Begin());
 
	uint count = (uint)SlGetFieldLength() / sizeof(_animated_tiles.front());
 
	_animated_tiles.clear();
 
	_animated_tiles.resize(_animated_tiles.size() + count);
 
	SlArray(_animated_tiles.Begin(), count, SLE_UINT32);
 
	SlArray(_animated_tiles.data(), count, SLE_UINT32);
 
}
 

	
 
/**
src/saveload/engine_sl.cpp
Show inline comments
 
@@ -177,11 +177,11 @@ static const SaveLoad _engine_id_mapping
 

	
 
static void Save_EIDS()
 
{
 
	const EngineIDMapping *end = _engine_mngr.End();
 
	uint index = 0;
 
	for (EngineIDMapping *eid = _engine_mngr.Begin(); eid != end; eid++, index++) {
 
	for (EngineIDMapping &eid : _engine_mngr) {
 
		SlSetArrayIndex(index);
 
		SlObject(eid, _engine_id_mapping_desc);
 
		SlObject(&eid, _engine_id_mapping_desc);
 
		index++;
 
	}
 
}
 

	
src/saveload/waypoint_sl.cpp
Show inline comments
 
@@ -52,10 +52,10 @@ static void UpdateWaypointOrder(Order *o
 
{
 
	if (!o->IsType(OT_GOTO_WAYPOINT)) return;
 

	
 
	for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) {
 
		if (wp->index != o->GetDestination()) continue;
 
	for (OldWaypoint &wp : _old_waypoints) {
 
		if (wp.index != o->GetDestination()) continue;
 

	
 
		o->SetDestination((DestinationID)wp->new_index);
 
		o->SetDestination((DestinationID)wp.new_index);
 
		return;
 
	}
 
}
 
@@ -71,25 +71,25 @@ void MoveWaypointsToBaseStations()
 
	 * id which was stored in m4 is now saved as a grf/id reference in the
 
	 * waypoint struct. */
 
	if (IsSavegameVersionBefore(SLV_17)) {
 
		for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) {
 
			if (wp->delete_ctr != 0) continue; // The waypoint was deleted
 
		for (OldWaypoint &wp : _old_waypoints) {
 
			if (wp.delete_ctr != 0) continue; // The waypoint was deleted
 

	
 
			/* Waypoint indices were not added to the map prior to this. */
 
			_m[wp->xy].m2 = (StationID)wp->index;
 
			_m[wp.xy].m2 = (StationID)wp.index;
 

	
 
			if (HasBit(_m[wp->xy].m3, 4)) {
 
				wp->spec = StationClass::Get(STAT_CLASS_WAYP)->GetSpec(_m[wp->xy].m4 + 1);
 
			if (HasBit(_m[wp.xy].m3, 4)) {
 
				wp.spec = StationClass::Get(STAT_CLASS_WAYP)->GetSpec(_m[wp.xy].m4 + 1);
 
			}
 
		}
 
	} else {
 
		/* As of version 17, we recalculate the custom graphic ID of waypoints
 
		 * from the GRF ID / station index. */
 
		for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) {
 
		for (OldWaypoint &wp : _old_waypoints) {
 
			StationClass* stclass = StationClass::Get(STAT_CLASS_WAYP);
 
			for (uint i = 0; i < stclass->GetSpecCount(); i++) {
 
				const StationSpec *statspec = stclass->GetSpec(i);
 
				if (statspec != NULL && statspec->grf_prop.grffile->grfid == wp->grfid && statspec->grf_prop.local_id == wp->localidx) {
 
					wp->spec = statspec;
 
				if (statspec != NULL && statspec->grf_prop.grffile->grfid == wp.grfid && statspec->grf_prop.local_id == wp.localidx) {
 
					wp.spec = statspec;
 
					break;
 
				}
 
			}
 
@@ -99,19 +99,19 @@ void MoveWaypointsToBaseStations()
 
	if (!Waypoint::CanAllocateItem(_old_waypoints.size())) SlError(STR_ERROR_TOO_MANY_STATIONS_LOADING);
 

	
 
	/* All saveload conversions have been done. Create the new waypoints! */
 
	for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) {
 
		Waypoint *new_wp = new Waypoint(wp->xy);
 
		new_wp->town       = wp->town;
 
		new_wp->town_cn    = wp->town_cn;
 
		new_wp->name       = wp->name;
 
	for (OldWaypoint &wp : _old_waypoints) {
 
		Waypoint *new_wp = new Waypoint(wp.xy);
 
		new_wp->town       = wp.town;
 
		new_wp->town_cn    = wp.town_cn;
 
		new_wp->name       = wp.name;
 
		new_wp->delete_ctr = 0; // Just reset delete counter for once.
 
		new_wp->build_date = wp->build_date;
 
		new_wp->owner      = wp->owner;
 
		new_wp->build_date = wp.build_date;
 
		new_wp->owner      = wp.owner;
 

	
 
		new_wp->string_id = STR_SV_STNAME_WAYPOINT;
 

	
 
		TileIndex t = wp->xy;
 
		if (IsTileType(t, MP_RAILWAY) && GetRailTileType(t) == 2 /* RAIL_TILE_WAYPOINT */ && _m[t].m2 == wp->index) {
 
		TileIndex t = wp.xy;
 
		if (IsTileType(t, MP_RAILWAY) && GetRailTileType(t) == 2 /* RAIL_TILE_WAYPOINT */ && _m[t].m2 == wp.index) {
 
			/* The tile might've been reserved! */
 
			bool reserved = !IsSavegameVersionBefore(SLV_100) && HasBit(_m[t].m5, 4);
 

	
 
@@ -122,13 +122,13 @@ void MoveWaypointsToBaseStations()
 

	
 
			SetRailStationReservation(t, reserved);
 

	
 
			if (wp->spec != NULL) {
 
				SetCustomStationSpecIndex(t, AllocateSpecToStation(wp->spec, new_wp, true));
 
			if (wp.spec != NULL) {
 
				SetCustomStationSpecIndex(t, AllocateSpecToStation(wp.spec, new_wp, true));
 
			}
 
			new_wp->rect.BeforeAddTile(t, StationRect::ADD_FORCE);
 
		}
 

	
 
		wp->new_index = new_wp->index;
 
		wp.new_index = new_wp->index;
 
	}
 

	
 
	/* Update the orders of vehicles */
 
@@ -189,15 +189,15 @@ static void Load_WAYP()
 

	
 
static void Ptrs_WAYP()
 
{
 
	for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) {
 
		SlObject(wp, _old_waypoint_desc);
 
	for (OldWaypoint &wp : _old_waypoints) {
 
		SlObject(&wp, _old_waypoint_desc);
 

	
 
		if (IsSavegameVersionBefore(SLV_12)) {
 
			wp->town_cn = (wp->string_id & 0xC000) == 0xC000 ? (wp->string_id >> 8) & 0x3F : 0;
 
			wp->town = ClosestTownFromTile(wp->xy, UINT_MAX);
 
			wp.town_cn = (wp.string_id & 0xC000) == 0xC000 ? (wp.string_id >> 8) & 0x3F : 0;
 
			wp.town = ClosestTownFromTile(wp.xy, UINT_MAX);
 
		} else if (IsSavegameVersionBefore(SLV_122)) {
 
			/* Only for versions 12 .. 122 */
 
			if (!Town::IsValidID(wp->town_index)) {
 
			if (!Town::IsValidID(wp.town_index)) {
 
				/* Upon a corrupted waypoint we'll likely get here. The next step will be to
 
				 * loop over all Ptrs procs to NULL the pointers. However, we don't know
 
				 * whether we're in the NULL or "normal" Ptrs proc. So just clear the list
 
@@ -206,10 +206,10 @@ static void Ptrs_WAYP()
 
				_old_waypoints.clear();
 
				SlErrorCorrupt("Referencing invalid Town");
 
			}
 
			wp->town = Town::Get(wp->town_index);
 
			wp.town = Town::Get(wp.town_index);
 
		}
 
		if (IsSavegameVersionBefore(SLV_84)) {
 
			wp->name = CopyFromOldName(wp->string_id);
 
			wp.name = CopyFromOldName(wp.string_id);
 
		}
 
	}
 
}
src/script/script_info.cpp
Show inline comments
 
@@ -26,8 +26,8 @@ ScriptInfo::~ScriptInfo()
 
		free((*it).name);
 
		free((*it).description);
 
		if (it->labels != NULL) {
 
			for (LabelMapping::iterator it2 = (*it).labels->Begin(); it2 != (*it).labels->End(); it2++) {
 
				free(it2->second);
 
			for (auto &lbl_map : *(*it).labels) {
 
				free(lbl_map.second);
 
			}
 
			delete it->labels;
 
		}
src/script/squirrel_helper.hpp
Show inline comments
 
@@ -149,7 +149,7 @@ namespace SQConvert {
 

	
 
		Array *arr = (Array*)MallocT<byte>(sizeof(Array) + sizeof(int32) * data.size());
 
		arr->size = data.size();
 
		memcpy(arr->array, data.Begin(), sizeof(int32) * data.size());
 
		memcpy(arr->array, data.data(), sizeof(int32) * data.size());
 

	
 
		ptr->push_back(arr);
 
		return arr;
src/settings.cpp
Show inline comments
 
@@ -747,8 +747,8 @@ static void IniSaveSettingList(IniFile *
 
	if (group == NULL || list == NULL) return;
 
	group->Clear();
 

	
 
	for (char **iter = list->Begin(); iter != list->End(); iter++) {
 
		group->GetItem(*iter, true)->SetValue("");
 
	for (char *iter : *list) {
 
		group->GetItem(iter, true)->SetValue("");
 
	}
 
}
 

	
src/settings_gui.cpp
Show inline comments
 
@@ -215,7 +215,7 @@ struct GameOptionsWindow : Window {
 
					if (i == CURRENCY_CUSTOM) continue;
 
					list->push_back(new DropDownListStringItem(*items, i, HasBit(disabled, i)));
 
				}
 
				QSortT(list->Begin(), list->size(), DropDownListStringItem::NatSortFunc);
 
				QSortT(list->data(), list->size(), DropDownListStringItem::NatSortFunc);
 

	
 
				/* Append custom currency at the end */
 
				list->push_back(new DropDownListItem(-1, false)); // separator line
 
@@ -253,7 +253,7 @@ struct GameOptionsWindow : Window {
 
					int result = _nb_orig_names + i;
 
					list->push_back(new DropDownListStringItem(_grf_names[i], result, enabled_item != result && enabled_item >= 0));
 
				}
 
				QSortT(list->Begin(), list->size(), DropDownListStringItem::NatSortFunc);
 
				QSortT(list->data(), list->size(), DropDownListStringItem::NatSortFunc);
 

	
 
				int newgrf_size = list->size();
 
				/* Insert newgrf_names at the top of the list */
 
@@ -266,7 +266,7 @@ struct GameOptionsWindow : Window {
 
				for (int i = 0; i < _nb_orig_names; i++) {
 
					list->push_back(new DropDownListStringItem(STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + i, i, enabled_item != i && enabled_item >= 0));
 
				}
 
				QSortT(list->Begin() + newgrf_size, list->size() - newgrf_size, DropDownListStringItem::NatSortFunc);
 
				QSortT(list->data() + newgrf_size, list->size() - newgrf_size, DropDownListStringItem::NatSortFunc);
 
				break;
 
			}
 

	
 
@@ -286,7 +286,7 @@ struct GameOptionsWindow : Window {
 
					if (&_languages[i] == _current_language) *selected_index = i;
 
					list->push_back(new DropDownListStringItem(SPECSTR_LANGUAGE_START + i, i, false));
 
				}
 
				QSortT(list->Begin(), list->size(), DropDownListStringItem::NatSortFunc);
 
				QSortT(list->data(), list->size(), DropDownListStringItem::NatSortFunc);
 
				break;
 
			}
 

	
 
@@ -432,11 +432,11 @@ struct GameOptionsWindow : Window {
 
				DropDownList *list = this->BuildDropDownList(widget, &selected);
 
				if (list != NULL) {
 
					/* Find the biggest item for the default size. */
 
					for (const DropDownListItem * const *it = list->Begin(); it != list->End(); it++) {
 
					for (const DropDownListItem * const ddli : *list) {
 
						Dimension string_dim;
 
						int width = (*it)->Width();
 
						int width = ddli->Width();
 
						string_dim.width = width + padding.width;
 
						string_dim.height = (*it)->Height(width) + padding.height;
 
						string_dim.height = ddli->Height(width) + padding.height;
 
						*size = maxdim(*size, string_dim);
 
					}
 
					delete list;
src/settingsgen/settingsgen.cpp
Show inline comments
 
@@ -136,8 +136,8 @@ public:
 
	 */
 
	void Write(FILE *out_fp) const
 
	{
 
		for (const OutputBuffer *out_data = this->output_buffer.Begin(); out_data != this->output_buffer.End(); out_data++) {
 
			out_data->Write(out_fp);
 
		for (const OutputBuffer &out_data : output_buffer) {
 
			out_data.Write(out_fp);
 
		}
 
	}
 

	
src/station_cmd.cpp
Show inline comments
 
@@ -1622,8 +1622,7 @@ CommandCost RemoveFromRailBaseStation(Ti
 

	
 
	if (quantity == 0) return error.Failed() ? error : CommandCost(STR_ERROR_THERE_IS_NO_STATION);
 

	
 
	for (T **stp = affected_stations.Begin(); stp != affected_stations.End(); stp++) {
 
		T *st = *stp;
 
	for (T *st : affected_stations) {
 

	
 
		/* now we need to make the "spanned" area of the railway station smaller
 
		 * if we deleted something at the edges.
 
@@ -1667,8 +1666,7 @@ CommandCost CmdRemoveFromRailStation(Til
 
	if (ret.Failed()) return ret;
 

	
 
	/* Do all station specific functions here. */
 
	for (Station **stp = affected_stations.Begin(); stp != affected_stations.End(); stp++) {
 
		Station *st = *stp;
 
	for (Station *st : affected_stations) {
 

	
 
		if (st->train_station.tile == INVALID_TILE) SetWindowWidgetDirty(WC_STATION_VIEW, st->index, WID_SV_TRAINS);
 
		st->MarkTilesDirty(false);
src/story_gui.cpp
Show inline comments
 
@@ -130,8 +130,7 @@ protected:
 
	int GetSelPageNum() const
 
	{
 
		int page_number = 0;
 
		for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) {
 
			const StoryPage *p = *iter;
 
		for (const StoryPage *p : this->story_pages) {
 
			if (p->index == this->selected_page_id) {
 
				return page_number;
 
			}
 
@@ -148,7 +147,7 @@ protected:
 
		/* Verify that the selected page exist. */
 
		if (!_story_page_pool.IsValidID(this->selected_page_id)) return false;
 

	
 
		return (*this->story_pages.Begin())->index == this->selected_page_id;
 
		return this->story_pages.front()->index == this->selected_page_id;
 
	}
 

	
 
	/**
 
@@ -160,7 +159,7 @@ protected:
 
		if (!_story_page_pool.IsValidID(this->selected_page_id)) return false;
 

	
 
		if (this->story_pages.size() <= 1) return true;
 
		const StoryPage *last = *(this->story_pages.End() - 1);
 
		const StoryPage *last = this->story_pages.back();
 
		return last->index == this->selected_page_id;
 
	}
 

	
 
@@ -195,8 +194,7 @@ protected:
 
		/* Find the last available page which is previous to the current selected page. */
 
		const StoryPage *last_available;
 
		last_available = NULL;
 
		for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) {
 
			const StoryPage *p = *iter;
 
		for (const StoryPage *p : this->story_pages) {
 
			if (p->index == this->selected_page_id) {
 
				if (last_available == NULL) return; // No previous page available.
 
				this->SetSelectedPage(last_available->index);
 
@@ -214,12 +212,12 @@ protected:
 
		if (!_story_page_pool.IsValidID(this->selected_page_id)) return;
 

	
 
		/* Find selected page. */
 
		for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) {
 
		for (auto iter = this->story_pages.begin(); iter != this->story_pages.end(); iter++) {
 
			const StoryPage *p = *iter;
 
			if (p->index == this->selected_page_id) {
 
				/* Select the page after selected page. */
 
				iter++;
 
				if (iter != this->story_pages.End()) {
 
				if (iter != this->story_pages.end()) {
 
					this->SetSelectedPage((*iter)->index);
 
				}
 
				return;
 
@@ -234,8 +232,7 @@ protected:
 
	{
 
		DropDownList *list = new DropDownList();
 
		uint16 page_num = 1;
 
		for (const StoryPage *const*iter = this->story_pages.Begin(); iter != this->story_pages.End(); iter++) {
 
			const StoryPage *p = *iter;
 
		for (const StoryPage *p : this->story_pages) {
 
			bool current_page = p->index == this->selected_page_id;
 
			DropDownListStringItem *item = NULL;
 
			if (p->title != NULL) {
 
@@ -353,8 +350,7 @@ protected:
 
		uint height = GetHeadHeight(max_width);
 

	
 
		/* Body */
 
		for (const StoryPageElement **iter = this->story_page_elements.Begin(); iter != this->story_page_elements.End(); iter++) {
 
			const StoryPageElement *pe = *iter;
 
		for (const StoryPageElement *pe : this->story_page_elements) {
 
			height += element_vertical_dist;
 
			height += GetPageElementHeight(*pe, max_width);
 
		}
 
@@ -532,8 +528,7 @@ public:
 
		y_offset = DrawStringMultiLine(0, right - x, y_offset, bottom - y, STR_STORY_BOOK_TITLE, TC_BLACK, SA_TOP | SA_HOR_CENTER);
 

	
 
		/* Page elements */
 
		for (const StoryPageElement *const*iter = this->story_page_elements.Begin(); iter != this->story_page_elements.End(); iter++) {
 
			const StoryPageElement *const pe = *iter;
 
		for (const StoryPageElement *const pe : this->story_page_elements) {
 
			y_offset += line_height; // margin to previous element
 

	
 
			switch (pe->type) {
 
@@ -650,8 +645,7 @@ public:
 
				/* Detect if a page element was clicked. */
 
				uint y = head_height;
 
				uint element_vertical_dist = FONT_HEIGHT_NORMAL;
 
				for (const StoryPageElement *const*iter = this->story_page_elements.Begin(); iter != this->story_page_elements.End(); iter++) {
 
					const StoryPageElement *const pe = *iter;
 
				for (const StoryPageElement *const pe : this->story_page_elements) {
 

	
 
					y += element_vertical_dist; // margin row
 

	
src/strgen/strgen_base.cpp
Show inline comments
 
@@ -1045,7 +1045,7 @@ void LanguageWriter::WriteLang(const Str
 
			if (cmdp != NULL) PutCommandString(&buffer, cmdp);
 

	
 
			this->WriteLength(buffer.size());
 
			this->Write(buffer.Begin(), buffer.size());
 
			this->Write(buffer.data(), buffer.size());
 
			buffer.clear();
 
		}
 
	}
src/string.cpp
Show inline comments
 
@@ -674,7 +674,7 @@ public:
 

	
 
		UText text = UTEXT_INITIALIZER;
 
		UErrorCode status = U_ZERO_ERROR;
 
		utext_openUChars(&text, this->utf16_str.Begin(), this->utf16_str.size() - 1, &status);
 
		utext_openUChars(&text, this->utf16_str.data(), this->utf16_str.size() - 1, &status);
 
		this->char_itr->setText(&text, status);
 
		this->word_itr->setText(&text, status);
 
		this->char_itr->first();
src/stringfilter.cpp
Show inline comments
 
@@ -91,9 +91,8 @@ void StringFilter::SetFilterTerm(const c
 
void StringFilter::ResetState()
 
{
 
	this->word_matches = 0;
 
	const WordState *end = this->word_index.End();
 
	for (WordState *it = this->word_index.Begin(); it != end; ++it) {
 
		it->match = false;
 
	for (WordState &ws : this->word_index) {
 
		ws.match = false;
 
	}
 
}
 

	
 
@@ -110,11 +109,10 @@ void StringFilter::AddLine(const char *s
 
	if (str == NULL) return;
 

	
 
	bool match_case = this->case_sensitive != NULL && *this->case_sensitive;
 
	const WordState *end = this->word_index.End();
 
	for (WordState *it = this->word_index.Begin(); it != end; ++it) {
 
		if (!it->match) {
 
			if ((match_case ? strstr(str, it->start) : strcasestr(str, it->start)) != NULL) {
 
				it->match = true;
 
	for (WordState &ws : this->word_index) {
 
		if (!ws.match) {
 
			if ((match_case ? strstr(str, ws.start) : strcasestr(str, ws.start)) != NULL) {
 
				ws.match = true;
 
				this->word_matches++;
 
			}
 
		}
src/strings.cpp
Show inline comments
 
@@ -1876,8 +1876,8 @@ int CDECL StringIDSorter(const StringID 
 
 */
 
const LanguageMetadata *GetLanguage(byte newgrflangid)
 
{
 
	for (const LanguageMetadata *lang = _languages.Begin(); lang != _languages.End(); lang++) {
 
		if (newgrflangid == lang->newgrflangid) return lang;
 
	for (const LanguageMetadata &lang : _languages) {
 
		if (newgrflangid == lang.newgrflangid) return &lang;
 
	}
 

	
 
	return NULL;
 
@@ -1960,22 +1960,22 @@ void InitializeLanguagePacks()
 

	
 
	const LanguageMetadata *chosen_language   = NULL; ///< Matching the language in the configuration file or the current locale
 
	const LanguageMetadata *language_fallback = NULL; ///< Using pt_PT for pt_BR locale when pt_BR is not available
 
	const LanguageMetadata *en_GB_fallback    = _languages.Begin(); ///< Fallback when no locale-matching language has been found
 
	const LanguageMetadata *en_GB_fallback    = _languages.data(); ///< Fallback when no locale-matching language has been found
 

	
 
	/* Find a proper language. */
 
	for (const LanguageMetadata *lng = _languages.Begin(); lng != _languages.End(); lng++) {
 
	for (const LanguageMetadata &lng : _languages) {
 
		/* We are trying to find a default language. The priority is by
 
		 * configuration file, local environment and last, if nothing found,
 
		 * English. */
 
		const char *lang_file = strrchr(lng->file, PATHSEPCHAR) + 1;
 
		const char *lang_file = strrchr(lng.file, PATHSEPCHAR) + 1;
 
		if (strcmp(lang_file, _config_language_file) == 0) {
 
			chosen_language = lng;
 
			chosen_language = &lng;
 
			break;
 
		}
 

	
 
		if (strcmp (lng->isocode, "en_GB") == 0) en_GB_fallback    = lng;
 
		if (strncmp(lng->isocode, lang, 5) == 0) chosen_language   = lng;
 
		if (strncmp(lng->isocode, lang, 2) == 0) language_fallback = lng;
 
		if (strcmp (lng.isocode, "en_GB") == 0) en_GB_fallback    = &lng;
 
		if (strncmp(lng.isocode, lang, 5) == 0) chosen_language   = &lng;
 
		if (strncmp(lng.isocode, lang, 2) == 0) language_fallback = &lng;
 
	}
 

	
 
	/* We haven't found the language in the config nor the one in the locale.
src/subsidy.cpp
Show inline comments
 
@@ -601,9 +601,9 @@ bool CheckSubsidised(CargoID cargo_type,
 
					}
 
					break;
 
				case ST_TOWN:
 
					for (const Town * const *tp = towns_near.Begin(); tp != towns_near.End(); tp++) {
 
						if (s->dst == (*tp)->index) {
 
							assert((*tp)->cache.part_of_subsidy & POS_DST);
 
					for (const Town *tp : towns_near) {
 
						if (s->dst == tp->index) {
 
							assert(tp->cache.part_of_subsidy & POS_DST);
 
							subsidised = true;
 
							if (!s->IsAwarded()) s->AwardTo(company);
 
						}
src/texteff.cpp
Show inline comments
 
@@ -89,20 +89,19 @@ void MoveAllTextEffects(uint delta_ms)
 
	uint count = texteffecttimer.CountElapsed(delta_ms);
 
	if (count == 0) return;
 

	
 
	const TextEffect *end = _text_effects.End();
 
	for (TextEffect *te = _text_effects.Begin(); te != end; te++) {
 
		if (te->string_id == INVALID_STRING_ID) continue;
 
		if (te->mode != TE_RISING) continue;
 
	for (TextEffect &te : _text_effects) {
 
		if (te.string_id == INVALID_STRING_ID) continue;
 
		if (te.mode != TE_RISING) continue;
 

	
 
		if (te->duration < count) {
 
			te->Reset();
 
		if (te.duration < count) {
 
			te.Reset();
 
			continue;
 
		}
 

	
 
		te->MarkDirty(ZOOM_LVL_OUT_8X);
 
		te->duration -= count;
 
		te->top -= count * ZOOM_LVL_BASE;
 
		te->MarkDirty(ZOOM_LVL_OUT_8X);
 
		te.MarkDirty(ZOOM_LVL_OUT_8X);
 
		te.duration -= count;
 
		te.top -= count * ZOOM_LVL_BASE;
 
		te.MarkDirty(ZOOM_LVL_OUT_8X);
 
	}
 
}
 

	
 
@@ -117,11 +116,10 @@ void DrawTextEffects(DrawPixelInfo *dpi)
 
	/* Don't draw the text effects when zoomed out a lot */
 
	if (dpi->zoom > ZOOM_LVL_OUT_8X) return;
 

	
 
	const TextEffect *end = _text_effects.End();
 
	for (TextEffect *te = _text_effects.Begin(); te != end; te++) {
 
		if (te->string_id == INVALID_STRING_ID) continue;
 
		if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) {
 
			ViewportAddString(dpi, ZOOM_LVL_OUT_8X, te, te->string_id, te->string_id - 1, STR_NULL, te->params_1, te->params_2);
 
	for (TextEffect &te : _text_effects) {
 
		if (te.string_id == INVALID_STRING_ID) continue;
 
		if (te.mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) {
 
			ViewportAddString(dpi, ZOOM_LVL_OUT_8X, &te, te.string_id, te.string_id - 1, STR_NULL, te.params_1, te.params_2);
 
		}
 
	}
 
}
src/timetable_cmd.cpp
Show inline comments
 
@@ -295,13 +295,12 @@ CommandCost CmdSetTimetableStart(TileInd
 
		int num_vehs = vehs.size();
 

	
 
		if (num_vehs >= 2) {
 
			QSortT(vehs.Begin(), vehs.size(), &VehicleTimetableSorter);
 
			QSortT(vehs.data(), vehs.size(), &VehicleTimetableSorter);
 
		}
 

	
 
		int idx = vehs.begin() - std::find(vehs.begin(), vehs.end(), v);
 

	
 
		for (Vehicle **viter = vehs.Begin(); viter != vehs.End(); viter++) {
 
			Vehicle *w = *viter;
 
		for (Vehicle *w : vehs) {
 

	
 
			w->lateness_counter = 0;
 
			ClrBit(w->vehicle_flags, VF_TIMETABLE_STARTED);
src/train_cmd.cpp
Show inline comments
 
@@ -837,8 +837,7 @@ static void RestoreTrainBackup(TrainList
 

	
 
	Train *prev = NULL;
 
	/* Iterate over the list and rebuild it. */
 
	for (Train **iter = list.Begin(); iter != list.End(); iter++) {
 
		Train *t = *iter;
 
	for (Train *t : list) {
 
		if (prev != NULL) {
 
			prev->SetNext(t);
 
		} else if (t->Previous() != NULL) {
src/train_gui.cpp
Show inline comments
 
@@ -278,10 +278,10 @@ static void GetCargoSummaryOfArticulated
 
		new_item.subtype = GetCargoSubtypeText(v);
 
		if (new_item.cargo == INVALID_CARGO && new_item.subtype == STR_EMPTY) continue;
 

	
 
		CargoSummaryItem *item = &*std::find(summary->begin(), summary->end(), new_item);
 
		if (item == summary->End()) {
 
			/*C++17: item = &*/ summary->emplace_back();
 
			item = &summary->back();
 
		auto item = std::find(summary->begin(), summary->end(), new_item);
 
		if (item == summary->end()) {
 
			summary->emplace_back();
 
			item = summary->end() - 1;
 
			item->cargo = new_item.cargo;
 
			item->subtype = new_item.subtype;
 
			item->capacity = 0;
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -698,8 +698,9 @@ CommandCost CmdBuildTunnel(TileIndex sta
 
		 * Deliberately clear the coa pointer to avoid leaving dangling pointers which could
 
		 * inadvertently be dereferenced.
 
		 */
 
		assert(coa >= _cleared_object_areas.Begin() && coa < _cleared_object_areas.End());
 
		size_t coa_index = coa - _cleared_object_areas.Begin();
 
		ClearedObjectArea *begin = _cleared_object_areas.data();
 
		assert(coa >= begin && coa < begin + _cleared_object_areas.size());
 
		size_t coa_index = coa - begin;
 
		assert(coa_index < UINT_MAX); // more than 2**32 cleared areas would be a bug in itself
 
		coa = NULL;
 

	
src/vehicle.cpp
Show inline comments
 
@@ -1028,15 +1028,15 @@ void CallVehicleTicks()
 
	}
 

	
 
	Backup<CompanyByte> cur_company(_current_company, FILE_LINE);
 
	for (AutoreplaceMap::iterator it = _vehicles_to_autoreplace.Begin(); it != _vehicles_to_autoreplace.End(); it++) {
 
		v = it->first;
 
	for (auto &it : _vehicles_to_autoreplace) {
 
		v = it.first;
 
		/* Autoreplace needs the current company set as the vehicle owner */
 
		cur_company.Change(v->owner);
 

	
 
		/* Start vehicle if we stopped them in VehicleEnteredDepotThisTick()
 
		 * We need to stop them between VehicleEnteredDepotThisTick() and here or we risk that
 
		 * they are already leaving the depot again before being replaced. */
 
		if (it->second) v->vehstatus &= ~VS_STOPPED;
 
		if (it.second) v->vehstatus &= ~VS_STOPPED;
 

	
 
		/* Store the position of the effect as the vehicle pointer will become invalid later */
 
		int x = v->x_pos;
src/vehicle_cmd.cpp
Show inline comments
 
@@ -422,17 +422,17 @@ static CommandCost RefitVehicle(Vehicle 
 

	
 
	if (flags & DC_EXEC) {
 
		/* Store the result */
 
		for (RefitResult *result = refit_result.Begin(); result != refit_result.End(); result++) {
 
			Vehicle *u = result->v;
 
			u->refit_cap = (u->cargo_type == new_cid) ? min(result->capacity, u->refit_cap) : 0;
 
		for (RefitResult &result : refit_result) {
 
			Vehicle *u = result.v;
 
			u->refit_cap = (u->cargo_type == new_cid) ? min(result.capacity, u->refit_cap) : 0;
 
			if (u->cargo.TotalCount() > u->refit_cap) u->cargo.Truncate(u->cargo.TotalCount() - u->refit_cap);
 
			u->cargo_type = new_cid;
 
			u->cargo_cap = result->capacity;
 
			u->cargo_subtype = result->subtype;
 
			u->cargo_cap = result.capacity;
 
			u->cargo_subtype = result.subtype;
 
			if (u->type == VEH_AIRCRAFT) {
 
				Vehicle *w = u->Next();
 
				w->refit_cap = min(w->refit_cap, result->mail_capacity);
 
				w->cargo_cap = result->mail_capacity;
 
				w->refit_cap = min(w->refit_cap, result.mail_capacity);
 
				w->cargo_cap = result.mail_capacity;
 
				if (w->cargo.TotalCount() > w->refit_cap) w->cargo.Truncate(w->cargo.TotalCount() - w->refit_cap);
 
			}
 
		}
src/vehicle_gui.cpp
Show inline comments
 
@@ -106,8 +106,8 @@ const StringID BaseVehicleListWindow::ve
 
uint GetUnitNumberDigits(VehicleList &vehicles)
 
{
 
	uint unitnumber = 0;
 
	for (const Vehicle **v = vehicles.Begin(); v != vehicles.End(); v++) {
 
		unitnumber = max<uint>(unitnumber, (*v)->unitnumber);
 
	for (const Vehicle *v : vehicles) {
 
		unitnumber = max<uint>(unitnumber, v->unitnumber);
 
	}
 

	
 
	if (unitnumber >= 10000) return 5;
 
@@ -194,7 +194,7 @@ void BaseVehicleListWindow::SortVehicleL
 
void DepotSortList(VehicleList *list)
 
{
 
	if (list->size() < 2) return;
 
	QSortT(list->Begin(), list->size(), &VehicleNumberSorter);
 
	QSortT(list->data(), list->size(), &VehicleNumberSorter);
 
}
 

	
 
/** draw the vehicle profit button in the vehicle list window. */
src/viewport.cpp
Show inline comments
 
@@ -628,8 +628,8 @@ static void AddCombinedSprite(SpriteID i
 
			pt.y + spr->y_offs + spr->height <= _vd.dpi.top)
 
		return;
 

	
 
	const ParentSpriteToDraw *pstd = _vd.parent_sprites_to_draw.End() - 1;
 
	AddChildSpriteScreen(image, pal, pt.x - pstd->left, pt.y - pstd->top, false, sub, false);
 
	const ParentSpriteToDraw &pstd = _vd.parent_sprites_to_draw.back();
 
	AddChildSpriteScreen(image, pal, pt.x - pstd.left, pt.y - pstd.top, false, sub, false);
 
}
 

	
 
/**
 
@@ -1393,9 +1393,8 @@ void ViewportSign::MarkDirty(ZoomLevel m
 

	
 
static void ViewportDrawTileSprites(const TileSpriteToDrawVector *tstdv)
 
{
 
	const TileSpriteToDraw *tsend = tstdv->End();
 
	for (const TileSpriteToDraw *ts = tstdv->Begin(); ts != tsend; ++ts) {
 
		DrawSpriteViewport(ts->image, ts->pal, ts->x, ts->y, ts->sub);
 
	for (const TileSpriteToDraw &ts : *tstdv) {
 
		DrawSpriteViewport(ts.image, ts.pal, ts.x, ts.y, ts.sub);
 
	}
 
}
 

	
 
@@ -1408,8 +1407,8 @@ static bool ViewportSortParentSpritesChe
 
/** Sort parent sprites pointer array */
 
static void ViewportSortParentSprites(ParentSpriteToSortVector *psdv)
 
{
 
	ParentSpriteToDraw **psdvend = psdv->End();
 
	ParentSpriteToDraw **psd = psdv->Begin();
 
	auto psdvend = psdv->end();
 
	auto psd = psdv->begin();
 
	while (psd != psdvend) {
 
		ParentSpriteToDraw *ps = *psd;
 

	
 
@@ -1420,7 +1419,7 @@ static void ViewportSortParentSprites(Pa
 

	
 
		ps->comparison_done = true;
 

	
 
		for (ParentSpriteToDraw **psd2 = psd + 1; psd2 != psdvend; psd2++) {
 
		for (auto psd2 = psd + 1; psd2 != psdvend; psd2++) {
 
			ParentSpriteToDraw *ps2 = *psd2;
 

	
 
			if (ps2->comparison_done) continue;
 
@@ -1455,7 +1454,7 @@ static void ViewportSortParentSprites(Pa
 

	
 
			/* Move ps2 in front of ps */
 
			ParentSpriteToDraw *temp = ps2;
 
			for (ParentSpriteToDraw **psd3 = psd2; psd3 > psd; psd3--) {
 
			for (auto psd3 = psd2; psd3 > psd; psd3--) {
 
				*psd3 = *(psd3 - 1);
 
			}
 
			*psd = temp;
 
@@ -1465,9 +1464,7 @@ static void ViewportSortParentSprites(Pa
 

	
 
static void ViewportDrawParentSprites(const ParentSpriteToSortVector *psd, const ChildScreenSpriteToDrawVector *csstdv)
 
{
 
	const ParentSpriteToDraw * const *psd_end = psd->End();
 
	for (const ParentSpriteToDraw * const *it = psd->Begin(); it != psd_end; it++) {
 
		const ParentSpriteToDraw *ps = *it;
 
	for (const ParentSpriteToDraw *ps : *psd) {
 
		if (ps->image != SPR_EMPTY_BOUNDING_BOX) DrawSpriteViewport(ps->image, ps->pal, ps->x, ps->y, ps->sub);
 

	
 
		int child_idx = ps->first_child;
 
@@ -1485,9 +1482,7 @@ static void ViewportDrawParentSprites(co
 
 */
 
static void ViewportDrawBoundingBoxes(const ParentSpriteToSortVector *psd)
 
{
 
	const ParentSpriteToDraw * const *psd_end = psd->End();
 
	for (const ParentSpriteToDraw * const *it = psd->Begin(); it != psd_end; it++) {
 
		const ParentSpriteToDraw *ps = *it;
 
	for (const ParentSpriteToDraw *ps : *psd) {
 
		Point pt1 = RemapCoords(ps->xmax + 1, ps->ymax + 1, ps->zmax + 1); // top front corner
 
		Point pt2 = RemapCoords(ps->xmin    , ps->ymax + 1, ps->zmax + 1); // top left corner
 
		Point pt3 = RemapCoords(ps->xmax + 1, ps->ymin    , ps->zmax + 1); // top right corner
 
@@ -1524,38 +1519,37 @@ static void ViewportDrawDirtyBlocks()
 

	
 
static void ViewportDrawStrings(ZoomLevel zoom, const StringSpriteToDrawVector *sstdv)
 
{
 
	const StringSpriteToDraw *ssend = sstdv->End();
 
	for (const StringSpriteToDraw *ss = sstdv->Begin(); ss != ssend; ++ss) {
 
	for (const StringSpriteToDraw &ss : *sstdv) {
 
		TextColour colour = TC_BLACK;
 
		bool small = HasBit(ss->width, 15);
 
		int w = GB(ss->width, 0, 15);
 
		int x = UnScaleByZoom(ss->x, zoom);
 
		int y = UnScaleByZoom(ss->y, zoom);
 
		bool small = HasBit(ss.width, 15);
 
		int w = GB(ss.width, 0, 15);
 
		int x = UnScaleByZoom(ss.x, zoom);
 
		int y = UnScaleByZoom(ss.y, zoom);
 
		int h = VPSM_TOP + (small ? FONT_HEIGHT_SMALL : FONT_HEIGHT_NORMAL) + VPSM_BOTTOM;
 

	
 
		SetDParam(0, ss->params[0]);
 
		SetDParam(1, ss->params[1]);
 

	
 
		if (ss->colour != INVALID_COLOUR) {
 
		SetDParam(0, ss.params[0]);
 
		SetDParam(1, ss.params[1]);
 

	
 
		if (ss.colour != INVALID_COLOUR) {
 
			/* Do not draw signs nor station names if they are set invisible */
 
			if (IsInvisibilitySet(TO_SIGNS) && ss->string != STR_WHITE_SIGN) continue;
 

	
 
			if (IsTransparencySet(TO_SIGNS) && ss->string != STR_WHITE_SIGN) {
 
			if (IsInvisibilitySet(TO_SIGNS) && ss.string != STR_WHITE_SIGN) continue;
 

	
 
			if (IsTransparencySet(TO_SIGNS) && ss.string != STR_WHITE_SIGN) {
 
				/* Don't draw the rectangle.
 
				 * Real colours need the TC_IS_PALETTE_COLOUR flag.
 
				 * Otherwise colours from _string_colourmap are assumed. */
 
				colour = (TextColour)_colour_gradient[ss->colour][6] | TC_IS_PALETTE_COLOUR;
 
				colour = (TextColour)_colour_gradient[ss.colour][6] | TC_IS_PALETTE_COLOUR;
 
			} else {
 
				/* Draw the rectangle if 'transparent station signs' is off,
 
				 * or if we are drawing a general text sign (STR_WHITE_SIGN). */
 
				DrawFrameRect(
 
					x, y, x + w, y + h, ss->colour,
 
					x, y, x + w, y + h, ss.colour,
 
					IsTransparencySet(TO_SIGNS) ? FR_TRANSPARENT : FR_NONE
 
				);
 
			}
 
		}
 

	
 
		DrawString(x + VPSM_LEFT, x + w - 1 - VPSM_RIGHT, y + VPSM_TOP, ss->string, colour, SA_HOR_CENTER);
 
		DrawString(x + VPSM_LEFT, x + w - 1 - VPSM_RIGHT, y + VPSM_TOP, ss.string, colour, SA_HOR_CENTER);
 
	}
 
}
 

	
 
@@ -1590,9 +1584,8 @@ void ViewportDoDraw(const ViewPort *vp, 
 

	
 
	if (_vd.tile_sprites_to_draw.size() != 0) ViewportDrawTileSprites(&_vd.tile_sprites_to_draw);
 

	
 
	ParentSpriteToDraw *psd_end = _vd.parent_sprites_to_draw.End();
 
	for (ParentSpriteToDraw *it = _vd.parent_sprites_to_draw.Begin(); it != psd_end; it++) {
 
		_vd.parent_sprites_to_sort.push_back(it);
 
	for (auto &psd : _vd.parent_sprites_to_draw) {
 
		_vd.parent_sprites_to_sort.push_back(&psd);
 
	}
 

	
 
	_vp_sprite_sorter(&_vd.parent_sprites_to_sort);
src/viewport_sprite_sorter_sse4.cpp
Show inline comments
 
@@ -29,8 +29,8 @@
 
void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv)
 
{
 
	const __m128i mask_ptest = _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  0,  0,  0,  0);
 
	ParentSpriteToDraw ** const psdvend = psdv->End();
 
	ParentSpriteToDraw **psd = psdv->Begin();
 
	auto const psdvend = psdv->end();
 
	auto psd = psdv->begin();
 
	while (psd != psdvend) {
 
		ParentSpriteToDraw * const ps = *psd;
 

	
 
@@ -41,7 +41,7 @@ void ViewportSortParentSpritesSSE41(Pare
 

	
 
		ps->comparison_done = true;
 

	
 
		for (ParentSpriteToDraw **psd2 = psd + 1; psd2 != psdvend; psd2++) {
 
		for (auto psd2 = psd + 1; psd2 != psdvend; psd2++) {
 
			ParentSpriteToDraw * const ps2 = *psd2;
 

	
 
			if (ps2->comparison_done) continue;
 
@@ -85,7 +85,7 @@ void ViewportSortParentSpritesSSE41(Pare
 

	
 
			/* Move ps2 in front of ps */
 
			ParentSpriteToDraw * const temp = ps2;
 
			for (ParentSpriteToDraw **psd3 = psd2; psd3 > psd; psd3--) {
 
			for (auto psd3 = psd2; psd3 > psd; psd3--) {
 
				*psd3 = *(psd3 - 1);
 
			}
 
			*psd = temp;
src/widgets/dropdown.cpp
Show inline comments
 
@@ -174,8 +174,7 @@ struct DropdownWindow : Window {
 

	
 
		/* Total length of list */
 
		int list_height = 0;
 
		for (const DropDownListItem * const *it = list->Begin(); it != list->End(); ++it) {
 
			const DropDownListItem *item = *it;
 
		for (const DropDownListItem *item : *list) {
 
			list_height += item->Height(items_width);
 
		}
 

	
 
@@ -230,13 +229,10 @@ struct DropdownWindow : Window {
 
		int width = nwi->current_x - 4;
 
		int pos   = this->vscroll->GetPosition();
 

	
 
		const DropDownList *list = this->list;
 

	
 
		for (const DropDownListItem * const *it = list->Begin(); it != list->End(); ++it) {
 
		for (const DropDownListItem *item : *this->list) {
 
			/* Skip items that are scrolled up */
 
			if (--pos >= 0) continue;
 

	
 
			const DropDownListItem *item = *it;
 
			int item_height = item->Height(width);
 

	
 
			if (y < item_height) {
 
@@ -259,8 +255,7 @@ struct DropdownWindow : Window {
 

	
 
		int y = r.top + 2;
 
		int pos = this->vscroll->GetPosition();
 
		for (const DropDownListItem * const *it = this->list->Begin(); it != this->list->End(); ++it) {
 
			const DropDownListItem *item = *it;
 
		for (const DropDownListItem *item : *this->list) {
 
			int item_height = item->Height(r.right - r.left + 1);
 

	
 
			/* Skip items that are scrolled up */
 
@@ -389,8 +384,7 @@ void ShowDropDownListAt(Window *w, const
 
	/* Total height of list */
 
	uint height = 0;
 

	
 
	for (const DropDownListItem * const *it = list->Begin(); it != list->End(); ++it) {
 
		const DropDownListItem *item = *it;
 
	for (const DropDownListItem *item : *list) {
 
		height += item->Height(width);
 
		if (auto_width) max_item_width = max(max_item_width, item->Width() + 5);
 
	}
src/window.cpp
Show inline comments
 
@@ -144,9 +144,9 @@ void WindowDesc::LoadFromConfig()
 
{
 
	IniFile *ini = new IniFile();
 
	ini->LoadFromDisk(_windows_file, NO_DIRECTORY);
 
	for (WindowDesc **it = _window_descs->Begin(); it != _window_descs->End(); ++it) {
 
		if ((*it)->ini_key == NULL) continue;
 
		IniLoadWindowSettings(ini, (*it)->ini_key, *it);
 
	for (WindowDesc *wd : *_window_descs) {
 
		if (wd->ini_key == NULL) continue;
 
		IniLoadWindowSettings(ini, wd->ini_key, wd);
 
	}
 
	delete ini;
 
}
 
@@ -166,13 +166,13 @@ static int CDECL DescSorter(WindowDesc *
 
void WindowDesc::SaveToConfig()
 
{
 
	/* Sort the stuff to get a nice ini file on first write */
 
	QSortT(_window_descs->Begin(), _window_descs->size(), DescSorter);
 
	QSortT(_window_descs->data(), _window_descs->size(), DescSorter);
 

	
 
	IniFile *ini = new IniFile();
 
	ini->LoadFromDisk(_windows_file, NO_DIRECTORY);
 
	for (WindowDesc **it = _window_descs->Begin(); it != _window_descs->End(); ++it) {
 
		if ((*it)->ini_key == NULL) continue;
 
		IniSaveWindowSettings(ini, (*it)->ini_key, *it);
 
	for (WindowDesc *wd : *_window_descs) {
 
		if (wd->ini_key == NULL) continue;
 
		IniSaveWindowSettings(ini, wd->ini_key, wd);
 
	}
 
	ini->SaveToDisk(_windows_file);
 
	delete ini;
 
@@ -330,8 +330,8 @@ Scrollbar *Window::GetScrollbar(uint wid
 
 */
 
const QueryString *Window::GetQueryString(uint widnum) const
 
{
 
	const SmallMap<int, QueryString*>::Pair *query = this->querystrings.Find(widnum);
 
	return query != this->querystrings.End() ? query->second : NULL;
 
	auto query = this->querystrings.Find(widnum);
 
	return query != this->querystrings.end() ? query->second : NULL;
 
}
 

	
 
/**
 
@@ -1944,8 +1944,8 @@ static void DecreaseWindowCounters()
 
		}
 

	
 
		/* Handle editboxes */
 
		for (SmallMap<int, QueryString*>::Pair *it = w->querystrings.Begin(); it != w->querystrings.End(); ++it) {
 
			it->second->HandleEditBox(w, it->first);
 
		for (SmallMap<int, QueryString*>::Pair &pair : w->querystrings) {
 
			pair.second->HandleEditBox(w, pair.first);
 
		}
 

	
 
		w->OnMouseLoop();
 
@@ -3252,8 +3252,9 @@ void Window::InvalidateData(int data, bo
 
 */
 
void Window::ProcessScheduledInvalidations()
 
{
 
	for (int *data = this->scheduled_invalidation_data.Begin(); this->window_class != WC_INVALID && data != this->scheduled_invalidation_data.End(); data++) {
 
		this->OnInvalidateData(*data, true);
 
	for (int data : this->scheduled_invalidation_data) {
 
		if (this->window_class == WC_INVALID) break;
 
		this->OnInvalidateData(data, true);
 
	}
 
	this->scheduled_invalidation_data.clear();
 
}
0 comments (0 inline, 0 general)