src/newgrf_string_type.h
author peter1138
Tue, 22 Jan 2008 07:27:06 +0000
changeset 8374 7a1b6c89cb89
parent 8298 681e3c5f50ad
permissions -rw-r--r--
(svn r11940) -Codechange: Store short filename once per open file instead of once per sprite cache entry. Not all file types need this, but most of the time no sprite cache entry needed it either.
/* $Id$ */

/** @file newgrf_string_type.h */

#ifndef NEWGRF_STRING_TYPE_H
#define NEWGRF_STRING_TYPE_H

#include "strings_type.h"

/**
 * A string with the required information to perform a GRF string remapping.
 */
struct GRFMappedStringID
{
private:
	/** The GRF ID associated to the to-be-remapped string */
	uint32 grfid;
	/** The string; when grfid != 0 it should be remapped */
	StringID string;

public:
	/**
	 * Create the struct.
	 * @param str    the string to store (or remap)
	 * @param grf_id the GRF to remap it with
	 */
	GRFMappedStringID(StringID str, uint32 grf_id) : grfid(grf_id), string(str) {}

	/**
	 * An empty string.
	 */
	GRFMappedStringID() {}

	/** Cast operator, returns the string */
	inline operator StringID() const
	{
		return string;
	}

	/** Assigns the string and resets the GRF ID. */
	GRFMappedStringID& operator = (StringID str)
	{
		string = str;
		grfid = 0;
		return *this;
	}

	/**
	 * Map the string.
	 */
	void MapString();
};

#endif /* NEWGRF_STRING_TYPE_H */