src/strings_func.h
author rubidium
Sat, 26 Apr 2008 20:54:56 +0000
branch0.6
changeset 10366 960aae8c20e2
parent 8941 f93c669d3ca6
child 10250 e64ee7484b43
permissions -rw-r--r--
(svn r12907) [0.6] -Backport from trunk r12906:
- Fix: Vehicle groups, engine replacement rules and player/company names were not properly reset/freed after bankrupt (r12906)
[0.6] -Prepare: for 0.6.1-RC1.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2087
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2087
diff changeset
     2
8610
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8581
diff changeset
     3
/** @file strings_func.h Functions related to OTTD's strings. */
6916
e87d54a598ea (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6646
diff changeset
     4
8610
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8581
diff changeset
     5
#ifndef STRINGS_FUNC_H
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8581
diff changeset
     6
#define STRINGS_FUNC_H
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8581
diff changeset
     7
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8581
diff changeset
     8
#include "strings_type.h"
1309
dab90d4cbf2d (svn r1813) Declare functions implemented in strings.c in their own shiny new header (though i think some of these function don't belong into strings.c)
tron
parents:
diff changeset
     9
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    10
char *InlineString(char *buf, StringID string);
7814
fe643468ad64 (svn r10673) -Cleanup: some assorted style cleanups. Primarily type* var -> type *var.
rubidium
parents: 7762
diff changeset
    11
char *GetString(char *buffr, StringID string, const char *last);
8941
f93c669d3ca6 (svn r12015) -Fix [FS#1716] (Revert r11422): Patch in FS#1430 avoided instead of fixed the problem. GetStringWithArgs() discards information that SCC_GENDER_LIST needs to work. Now use pointers to retrieve GRF strings, so that GetStringPtr() will work correctly. This is advantageous as now no buffer copy is made when using all GRF strings.
peter1138
parents: 8826
diff changeset
    12
const char *GetStringPtr(StringID string);
2063
95259a31ceb5 (svn r2572) - Codechange: [string] Changed string system so it's not as dependent on decode_parameters
ludde
parents: 2056
diff changeset
    13
2202
2d6c235d53cc (svn r2718) Forgot one file
tron
parents: 2186
diff changeset
    14
extern char _userstring[128];
2d6c235d53cc (svn r2718) Forgot one file
tron
parents: 2186
diff changeset
    15
1309
dab90d4cbf2d (svn r1813) Declare functions implemented in strings.c in their own shiny new header (though i think some of these function don't belong into strings.c)
tron
parents:
diff changeset
    16
void InjectDParam(int amount);
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    17
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    18
static inline void SetDParamX(uint64 *s, uint n, uint64 v)
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    19
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    20
	s[n] = v;
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    21
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    22
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    23
static inline void SetDParam(uint n, uint64 v)
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    24
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    25
	extern uint64 _decode_parameters[20];
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    26
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    27
	assert(n < lengthof(_decode_parameters));
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    28
	_decode_parameters[n] = v;
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    29
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    30
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    31
/* Used to bind a C string name to a dparam number.
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    32
 * NOTE: This has a short lifetime. You can't
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    33
 *       use this string much later or it will be gone. */
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    34
void SetDParamStr(uint n, const char *str);
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    35
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    36
/** This function takes a C-string and allocates a temporary string ID.
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    37
 * The duration of the bound string is valid only until the next call to GetString,
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    38
 * so be careful. */
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    39
StringID BindCString(const char *str);
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    40
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    41
static inline uint64 GetDParamX(const uint64 *s, uint n)
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    42
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    43
	return s[n];
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    44
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    45
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    46
static inline uint64 GetDParam(uint n)
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    47
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    48
	extern uint64 _decode_parameters[20];
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    49
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    50
	assert(n < lengthof(_decode_parameters));
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    51
	return _decode_parameters[n];
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    52
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    53
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    54
static inline void CopyInDParam(int offs, const uint64 *src, int num)
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    55
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    56
	extern uint64 _decode_parameters[20];
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    57
	memcpy(_decode_parameters + offs, src, sizeof(uint64) * (num));
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    58
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    59
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    60
static inline void CopyOutDParam(uint64 *dst, int offs, int num)
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    61
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    62
	extern uint64 _decode_parameters[20];
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    63
	memcpy(dst, _decode_parameters + offs, sizeof(uint64) * (num));
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    64
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    65
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    66
extern DynamicLanguages _dynlang; // defined in strings.cpp
1309
dab90d4cbf2d (svn r1813) Declare functions implemented in strings.c in their own shiny new header (though i think some of these function don't belong into strings.c)
tron
parents:
diff changeset
    67
6646
0e3b3d315288 (svn r9271) -Codechange: make the language pack initialisation a little more clear and extendable (more language paths).
rubidium
parents: 6573
diff changeset
    68
bool ReadLanguagePack(int index);
0e3b3d315288 (svn r9271) -Codechange: make the language pack initialisation a little more clear and extendable (more language paths).
rubidium
parents: 6573
diff changeset
    69
void InitializeLanguagePacks();
0e3b3d315288 (svn r9271) -Codechange: make the language pack initialisation a little more clear and extendable (more language paths).
rubidium
parents: 6573
diff changeset
    70
7289
d6a004877931 (svn r10032) -Add: sort the strings in server language dropdown
glx
parents: 6916
diff changeset
    71
int CDECL StringIDSorter(const void *a, const void *b);
d6a004877931 (svn r10032) -Add: sort the strings in server language dropdown
glx
parents: 6916
diff changeset
    72
8817
9df6e6b40d12 (svn r11886) -Add: sort the strings in languages dropdown
glx
parents: 8610
diff changeset
    73
/** Key comparison function for std::map */
9df6e6b40d12 (svn r11886) -Add: sort the strings in languages dropdown
glx
parents: 8610
diff changeset
    74
struct StringIDCompare
9df6e6b40d12 (svn r11886) -Add: sort the strings in languages dropdown
glx
parents: 8610
diff changeset
    75
{
8826
35a3dfe12641 (svn r11896) -Fix (r11886): a missing const broke compilation with MSVC
glx
parents: 8817
diff changeset
    76
	bool operator()(StringID s1, StringID s2) const { return StringIDSorter(&s1, &s2) < 0; }
8817
9df6e6b40d12 (svn r11886) -Add: sort the strings in languages dropdown
glx
parents: 8610
diff changeset
    77
};
9df6e6b40d12 (svn r11886) -Add: sort the strings in languages dropdown
glx
parents: 8610
diff changeset
    78
8581
8e4e36a205fe (svn r11646) -Codechange: check whether (some) characters are missing in the current 'font' for the 'currently' chosen language and give a warning when that does happen.
rubidium
parents: 7814
diff changeset
    79
void CheckForMissingGlyphsInLoadedLanguagePack();
8e4e36a205fe (svn r11646) -Codechange: check whether (some) characters are missing in the current 'font' for the 'currently' chosen language and give a warning when that does happen.
rubidium
parents: 7814
diff changeset
    80
8610
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8581
diff changeset
    81
#endif /* STRINGS_TYPE_H */