src/strings.h
author rubidium
Fri, 03 Aug 2007 22:09:42 +0000
branchnoai
changeset 9694 e72987579514
parent 9686 d3c195c226f9
child 8581 8e4e36a205fe
permissions -rw-r--r--
(svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
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
9574
698395509d12 (svn r9575) [NoAI] -Sync with trunk r9504:9574
glx
parents: 9476
diff changeset
     3
/** @file strings.h */
698395509d12 (svn r9575) [NoAI] -Sync with trunk r9504:9574
glx
parents: 9476
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
9686
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
     8
char *InlineString(char *buf, StringID string);
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9686
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);
9686
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    14
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    15
static inline void SetDParamX(uint64 *s, uint n, uint64 v)
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    16
{
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    17
	s[n] = v;
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    18
}
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    19
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    20
static inline void SetDParam(uint n, uint64 v)
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    21
{
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    22
	extern uint64 _decode_parameters[20];
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    23
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    24
	assert(n < lengthof(_decode_parameters));
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    25
	_decode_parameters[n] = v;
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    26
}
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    27
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    28
/* Used to bind a C string name to a dparam number.
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    29
 * NOTE: This has a short lifetime. You can't
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    30
 *       use this string much later or it will be gone. */
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    31
void SetDParamStr(uint n, const char *str);
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    32
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    33
/** This function takes a C-string and allocates a temporary string ID.
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    34
 * The duration of the bound string is valid only until the next call to GetString,
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    35
 * so be careful. */
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    36
StringID BindCString(const char *str);
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    37
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    38
static inline uint64 GetDParamX(const uint64 *s, uint n)
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    39
{
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    40
	return s[n];
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    41
}
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    42
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    43
static inline uint64 GetDParam(uint n)
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    44
{
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    45
	extern uint64 _decode_parameters[20];
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    46
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    47
	assert(n < lengthof(_decode_parameters));
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    48
	return _decode_parameters[n];
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    49
}
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    50
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    51
static inline void CopyInDParam(int offs, const uint64 *src, int num)
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    52
{
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    53
	extern uint64 _decode_parameters[20];
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    54
	memcpy(_decode_parameters + offs, src, sizeof(uint64) * (num));
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    55
}
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    56
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    57
static inline void CopyOutDParam(uint64 *dst, int offs, int num)
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    58
{
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    59
	extern uint64 _decode_parameters[20];
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    60
	memcpy(dst, _decode_parameters + offs, sizeof(uint64) * (num));
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    61
}
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    62
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    63
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    64
/** Information about a language */
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    65
struct Language {
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    66
	char *name; ///< The internal name of the language
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    67
	char *file; ///< The name of the language as it appears on disk
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    68
};
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    69
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    70
/** Used for dynamic language support */
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    71
struct DynamicLanguages {
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    72
	int num;                         ///< Number of languages
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    73
	int curr;                        ///< Currently selected language index
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    74
	char curr_file[MAX_PATH];        ///< Currently selected language file name without path (needed for saving the filename of the loaded language).
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    75
	StringID dropdown[MAX_LANG + 1]; ///< List of languages in the settings gui
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    76
	Language ent[MAX_LANG];          ///< Information about the languages
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    77
};
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
diff changeset
    78
d3c195c226f9 (svn r10636) [NoAI] -Sync with trunk r10532:10635.
rubidium
parents: 9626
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
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6573
diff changeset
    81
bool ReadLanguagePack(int index);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6573
diff changeset
    82
void InitializeLanguagePacks();
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6573
diff changeset
    83
9626
79f2b5a0cdd7 (svn r10118) [NoAI] -Sync with trunk r10015:r10096
glx
parents: 9574
diff changeset
    84
int CDECL StringIDSorter(const void *a, const void *b);
79f2b5a0cdd7 (svn r10118) [NoAI] -Sync with trunk r10015:r10096
glx
parents: 9574
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 */