src/strings.h
author rubidium
Mon, 24 Sep 2007 20:56:33 +0000
changeset 8123 2f8dfb527d7c
parent 7814 fe643468ad64
child 8581 8e4e36a205fe
permissions -rw-r--r--
(svn r11158) -Codechange: reduce the amount of Random calls needed when we do not have NewGRF industries that actually need the random bits.
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
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
     3
/** @file strings.h */
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
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
     5
#ifndef STRINGS_H
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
     6
#define STRINGS_H
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
     7
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
     8
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
     9
char *GetString(char *buffr, StringID string, const char *last);
2063
95259a31ceb5 (svn r2572) - Codechange: [string] Changed string system so it's not as dependent on decode_parameters
ludde
parents: 2056
diff changeset
    10
2202
2d6c235d53cc (svn r2718) Forgot one file
tron
parents: 2186
diff changeset
    11
extern char _userstring[128];
2d6c235d53cc (svn r2718) Forgot one file
tron
parents: 2186
diff changeset
    12
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
    13
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
    14
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    15
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
    16
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    17
	s[n] = v;
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    18
}
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
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
    21
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    22
	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
    23
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    24
	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
    25
	_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
    26
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    27
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    28
/* 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
    29
 * 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
    30
 *       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
    31
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
    32
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    33
/** 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
    34
 * 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
    35
 * so be careful. */
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    36
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
    37
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    38
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
    39
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    40
	return s[n];
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    41
}
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
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
    44
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    45
	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
    46
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    47
	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
    48
	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
    49
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    50
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    51
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
    52
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    53
	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
    54
	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
    55
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    56
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    57
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
    58
{
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    59
	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
    60
	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
    61
}
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    62
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    63
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    64
/** Information about a language */
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    65
struct Language {
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    66
	char *name; ///< The internal name of the language
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    67
	char *file; ///< The name of the language as it appears on disk
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    68
};
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    69
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    70
/** Used for dynamic language support */
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    71
struct DynamicLanguages {
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    72
	int num;                         ///< Number of languages
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    73
	int curr;                        ///< Currently selected language index
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    74
	char curr_file[MAX_PATH];        ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    75
	StringID dropdown[MAX_LANG + 1]; ///< List of languages in the settings gui
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    76
	Language ent[MAX_LANG];          ///< Information about the languages
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    77
};
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    78
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7289
diff changeset
    79
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
    80
6646
0e3b3d315288 (svn r9271) -Codechange: make the language pack initialisation a little more clear and extendable (more language paths).
rubidium
parents: 6573
diff changeset
    81
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
    82
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
    83
7289
d6a004877931 (svn r10032) -Add: sort the strings in server language dropdown
glx
parents: 6916
diff changeset
    84
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
    85
2436
177cb6a8339f (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2291
diff changeset
    86
#endif /* STRINGS_H */