src/strings.h
author rubidium
Tue, 24 Jul 2007 17:01:23 +0000
changeset 7318 632cd0497770
parent 7266 b16e67e992b4
child 8085 5b58f6315fb8
permissions -rw-r--r--
(svn r10673) -Cleanup: some assorted style cleanups. Primarily type* var -> type *var.
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2087
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2087
diff changeset
     2
6420
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6320
diff changeset
     3
/** @file strings.h */
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6320
diff changeset
     4
1309
4403a69da4f8 (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
4403a69da4f8 (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
4403a69da4f8 (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
7266
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
     8
char *InlineString(char *buf, StringID string);
7318
632cd0497770 (svn r10673) -Cleanup: some assorted style cleanups. Primarily type* var -> type *var.
rubidium
parents: 7266
diff changeset
     9
char *GetString(char *buffr, StringID string, const char *last);
2063
ae866a12f2df (svn r2572) - Codechange: [string] Changed string system so it's not as dependent on decode_parameters
ludde
parents: 2056
diff changeset
    10
2202
c1ad4a86798b (svn r2718) Forgot one file
tron
parents: 2186
diff changeset
    11
extern char _userstring[128];
c1ad4a86798b (svn r2718) Forgot one file
tron
parents: 2186
diff changeset
    12
1309
4403a69da4f8 (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);
7266
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    14
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    15
static inline void SetDParamX(uint64 *s, uint n, uint64 v)
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    16
{
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    17
	s[n] = v;
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    18
}
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    19
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    20
static inline void SetDParam(uint n, uint64 v)
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    21
{
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    22
	extern uint64 _decode_parameters[20];
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    23
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    24
	assert(n < lengthof(_decode_parameters));
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    25
	_decode_parameters[n] = v;
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    26
}
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    27
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    28
/* Used to bind a C string name to a dparam number.
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    29
 * NOTE: This has a short lifetime. You can't
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    30
 *       use this string much later or it will be gone. */
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    31
void SetDParamStr(uint n, const char *str);
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    32
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    33
/** This function takes a C-string and allocates a temporary string ID.
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    34
 * The duration of the bound string is valid only until the next call to GetString,
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    35
 * so be careful. */
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    36
StringID BindCString(const char *str);
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    37
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    38
static inline uint64 GetDParamX(const uint64 *s, uint n)
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    39
{
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    40
	return s[n];
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    41
}
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    42
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    43
static inline uint64 GetDParam(uint n)
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    44
{
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    45
	extern uint64 _decode_parameters[20];
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    46
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    47
	assert(n < lengthof(_decode_parameters));
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    48
	return _decode_parameters[n];
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    49
}
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    50
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    51
static inline void CopyInDParam(int offs, const uint64 *src, int num)
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    52
{
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    53
	extern uint64 _decode_parameters[20];
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    54
	memcpy(_decode_parameters + offs, src, sizeof(uint64) * (num));
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    55
}
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    56
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    57
static inline void CopyOutDParam(uint64 *dst, int offs, int num)
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    58
{
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    59
	extern uint64 _decode_parameters[20];
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    60
	memcpy(dst, _decode_parameters + offs, sizeof(uint64) * (num));
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    61
}
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    62
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    63
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    64
/** Information about a language */
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    65
struct Language {
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    66
	char *name; ///< The internal name of the language
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    67
	char *file; ///< The name of the language as it appears on disk
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    68
};
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    69
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    70
/** Used for dynamic language support */
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    71
struct DynamicLanguages {
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    72
	int num;                         ///< Number of languages
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    73
	int curr;                        ///< Currently selected language index
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    74
	char curr_file[MAX_PATH];        ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    75
	StringID dropdown[MAX_LANG + 1]; ///< List of languages in the settings gui
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    76
	Language ent[MAX_LANG];          ///< Information about the languages
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    77
};
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    78
b16e67e992b4 (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 6793
diff changeset
    79
extern DynamicLanguages _dynlang; // defined in strings.cpp
1309
4403a69da4f8 (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
6320
32d0f299e2fd (svn r9271) -Codechange: make the language pack initialisation a little more clear and extendable (more language paths).
rubidium
parents: 6247
diff changeset
    81
bool ReadLanguagePack(int index);
32d0f299e2fd (svn r9271) -Codechange: make the language pack initialisation a little more clear and extendable (more language paths).
rubidium
parents: 6247
diff changeset
    82
void InitializeLanguagePacks();
32d0f299e2fd (svn r9271) -Codechange: make the language pack initialisation a little more clear and extendable (more language paths).
rubidium
parents: 6247
diff changeset
    83
6793
05d91fa1c75c (svn r10032) -Add: sort the strings in server language dropdown
glx
parents: 6420
diff changeset
    84
int CDECL StringIDSorter(const void *a, const void *b);
05d91fa1c75c (svn r10032) -Add: sort the strings in server language dropdown
glx
parents: 6420
diff changeset
    85
2436
7d5df545bd5d (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 */