Changeset - r28392:a6dea280bbeb
[Not reviewed]
master
0 2 0
Jonathan G Rennison - 4 months ago 2024-01-04 00:25:07
j.g.rennison@gmail.com
Codechange: No longer advance parent offset in StringParameters parent mode

Add method to manually advance offset
2 files changed with 13 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/strings.cpp
Show inline comments
 
@@ -1140,6 +1140,7 @@ static void FormatString(StringBuilder &
 
				} else {
 
					StringParameters sub_args(args, size);
 
					GetStringWithArgs(builder, string_id, sub_args, next_substr_case_index, game_script);
 
					args.AdvanceOffset(size);
 
				}
 
				next_substr_case_index = 0;
 
				break;
src/strings_internal.h
Show inline comments
 
@@ -39,20 +39,13 @@ protected:
 
public:
 
	/**
 
	 * Create a new StringParameters instance that can reference part of the data of
 
	 * the given partent instance.
 
	 * the given parent instance.
 
	 */
 
	StringParameters(StringParameters &parent, size_t size) :
 
		parent(&parent),
 
		parameters(parent.parameters.subspan(parent.offset, size))
 
	{}
 

	
 
	~StringParameters()
 
	{
 
		if (this->parent != nullptr) {
 
			this->parent->offset += this->parameters.size();
 
		}
 
	}
 

	
 
	void PrepareForNextRun();
 
	void SetTypeOfNextParameter(char32_t type) { this->next_type = type; }
 

	
 
@@ -82,6 +75,17 @@ public:
 
	}
 

	
 
	/**
 
	 * Advance the offset within the string from where to return the next result of
 
	 * \c GetInt64 or \c GetInt32.
 
	 * @param advance The amount to advance the offset by.
 
	 */
 
	void AdvanceOffset(size_t advance)
 
	{
 
		this->offset += advance;
 
		assert(this->offset <= this->parameters.size());
 
	}
 

	
 
	/**
 
	 * Get the next parameter from our parameters.
 
	 * This updates the offset, so the next time this is called the next parameter
 
	 * will be read.
0 comments (0 inline, 0 general)