tron@2186: /* $Id$ */ tron@2186: rubidium@8610: /** @file strings_func.h Functions related to OTTD's strings. */ belugas@6916: rubidium@8610: #ifndef STRINGS_FUNC_H rubidium@8610: #define STRINGS_FUNC_H rubidium@8610: rubidium@8610: #include "strings_type.h" tron@1309: rubidium@7762: char *InlineString(char *buf, StringID string); rubidium@7814: char *GetString(char *buffr, StringID string, const char *last); peter1138@8941: const char *GetStringPtr(StringID string); ludde@2063: tron@1309: void InjectDParam(int amount); rubidium@7762: rubidium@7762: static inline void SetDParamX(uint64 *s, uint n, uint64 v) rubidium@7762: { rubidium@7762: s[n] = v; rubidium@7762: } rubidium@7762: rubidium@7762: static inline void SetDParam(uint n, uint64 v) rubidium@7762: { rubidium@7762: extern uint64 _decode_parameters[20]; rubidium@7762: rubidium@7762: assert(n < lengthof(_decode_parameters)); rubidium@7762: _decode_parameters[n] = v; rubidium@7762: } rubidium@7762: rubidium@7762: void SetDParamStr(uint n, const char *str); rubidium@7762: rubidium@7762: static inline uint64 GetDParamX(const uint64 *s, uint n) rubidium@7762: { rubidium@7762: return s[n]; rubidium@7762: } rubidium@7762: rubidium@7762: static inline uint64 GetDParam(uint n) rubidium@7762: { rubidium@7762: extern uint64 _decode_parameters[20]; rubidium@7762: rubidium@7762: assert(n < lengthof(_decode_parameters)); rubidium@7762: return _decode_parameters[n]; rubidium@7762: } rubidium@7762: rubidium@7762: static inline void CopyInDParam(int offs, const uint64 *src, int num) rubidium@7762: { rubidium@7762: extern uint64 _decode_parameters[20]; rubidium@7762: memcpy(_decode_parameters + offs, src, sizeof(uint64) * (num)); rubidium@7762: } rubidium@7762: rubidium@7762: static inline void CopyOutDParam(uint64 *dst, int offs, int num) rubidium@7762: { rubidium@7762: extern uint64 _decode_parameters[20]; rubidium@7762: memcpy(dst, _decode_parameters + offs, sizeof(uint64) * (num)); rubidium@7762: } rubidium@7762: rubidium@7762: extern DynamicLanguages _dynlang; // defined in strings.cpp tron@1309: rubidium@6646: bool ReadLanguagePack(int index); rubidium@6646: void InitializeLanguagePacks(); rubidium@6646: glx@7289: int CDECL StringIDSorter(const void *a, const void *b); glx@7289: glx@8817: /** Key comparison function for std::map */ glx@8817: struct StringIDCompare glx@8817: { glx@8826: bool operator()(StringID s1, StringID s2) const { return StringIDSorter(&s1, &s2) < 0; } glx@8817: }; glx@8817: rubidium@8581: void CheckForMissingGlyphsInLoadedLanguagePack(); rubidium@8581: rubidium@10250: StringID RemapOldStringID(StringID s); rubidium@10250: char *CopyFromOldName(StringID id); rubidium@10250: rubidium@8610: #endif /* STRINGS_TYPE_H */