123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- /* -*- mode: c; tab-width: 4; c-basic-offset: 4; c-file-style: "linux" -*- */
- //
- // Copyright (c) 2009-2011, Wei Mingzhi <whistler_wmz@users.sf.net>.
- // Copyright (c) 2011-2017, SDLPAL development team.
- // All rights reserved.
- //
- // This file is part of SDLPAL.
- //
- // SDLPAL is free software: you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
- // the Free Software Foundation, either version 3 of the License, or
- // (at your option) any later version.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License
- // along with this program. If not, see <http://www.gnu.org/licenses/>.
- //
- #ifndef UTIL_H
- #define UTIL_H
- #include "common.h"
- PAL_C_LINKAGE_BEGIN
- void
- UTIL_MsgBox(
- char *string
- );
- long
- flength(
- FILE *fp
- );
- void
- trim(
- char *str
- );
- char *
- UTIL_GlobalBuffer(
- int index
- );
- #define PAL_BUFFER_SIZE_ARGS(i) UTIL_GlobalBuffer(i), PAL_GLOBAL_BUFFER_SIZE
- /*++
- Purpose:
- Does a varargs printf into the user-supplied buffer,
- so we don't need to have varargs versions of all text functions.
- Parameters:
- buffer - user-supplied buffer.
- buflen - size of the buffer, including null-terminator.
- format - the format string.
- Return value:
- The value of buffer if buffer is non-NULL and buflen > 0, otherwise NULL.
- --*/
- char *
- UTIL_va(
- char *buffer,
- int buflen,
- const char *format,
- ...
- );
- #define PAL_va(i, fmt, ...) UTIL_va(UTIL_GlobalBuffer(i), PAL_GLOBAL_BUFFER_SIZE, fmt, __VA_ARGS__)
- int
- RandomLong(
- int from,
- int to
- );
- float
- RandomFloat(
- float from,
- float to
- );
- void
- UTIL_Delay(
- unsigned int ms
- );
- void
- TerminateOnError(
- const char *fmt,
- ...
- );
- void *
- UTIL_malloc(
- size_t buffer_size
- );
- void *
- UTIL_calloc(
- size_t n,
- size_t size
- );
- FILE *
- UTIL_OpenRequiredFile(
- LPCSTR lpszFileName
- );
- FILE *
- UTIL_OpenRequiredFileForMode(
- LPCSTR lpszFileName,
- LPCSTR szMode
- );
- FILE *
- UTIL_OpenFile(
- LPCSTR lpszFileName
- );
- FILE *
- UTIL_OpenFileForMode(
- LPCSTR lpszFileName,
- LPCSTR szMode
- );
- FILE *
- UTIL_OpenFileAtPath(
- LPCSTR lpszPath,
- LPCSTR lpszFileName
- );
- /*++
- Purpose:
- Open a file in desired mode at the specific path.
- If fails, return NULL.
- Parameters:
- [IN] lpszPath - path to locate the file.
- [IN] lpszFileName - file name to open.
- [IN] szMode - file open mode.
- Return value:
- Pointer to the file.
- --*/
- FILE *
- UTIL_OpenFileAtPathForMode(
- LPCSTR lpszPath,
- LPCSTR lpszFileName,
- LPCSTR szMode
- );
- VOID
- UTIL_CloseFile(
- FILE *fp
- );
- /*++
- Purpose:
- Combine the 'dir' and 'file' part into a single path string.
- If 'dir' is non-NULL, then it ensures that the output string contains
- '/' between 'dir' and 'file' (no matter whether 'file' is NULL or not).
- Parameters:
- buffer - user-supplied buffer.
- buflen - size of the buffer, including null-terminator.
- dir - the directory path.
- file - the file path.
- Return value:
- The value of buffer if buffer is non-NULL and buflen > 0, otherwise NULL.
- --*/
- const char *
- UTIL_CombinePath(
- char *buffer,
- size_t buflen,
- int numentry,
- ...
- );
- #define PAL_CombinePath(i, d, f) UTIL_CombinePath(UTIL_GlobalBuffer(i), PAL_GLOBAL_BUFFER_SIZE, 2, (d), (f))
- const char *
- UTIL_GetFullPathName(
- char *buffer,
- size_t buflen,
- const char *basepath,
- const char *subpath
- );
- /*
- * Platform-specific utilities
- */
- BOOL
- UTIL_GetScreenSize(
- DWORD *pdwScreenWidth,
- DWORD *pdwScreenHeight
- );
- BOOL
- UTIL_IsAbsolutePath(
- const char *lpszFileName
- );
- int
- UTIL_Platform_Init(
- int argc,
- char *argv[]
- );
- void
- UTIL_Platform_Quit(
- void
- );
- /*
- * Logging utilities
- */
- /*++
- Purpose:
- The pointer to callback function that produces actual log output.
- Parameters:
- [IN] level - The log level of this output call.
- [IN] full_log - The full log string produced by UTIL_LogOutput.
- [IN] user_log - The log string produced by user-provided format.
- Return value:
- None.
- --*/
- typedef void(*LOGCALLBACK)(LOGLEVEL level, const char *full_log, const char *user_log);
- /*++
- Purpose:
- Adds a log output callback.
- Parameters:
- [IN] callback - The callback function to be added. Once added,
- it will be called by UTIL_LogOutput.
- [IN] loglevel - The minimal log level that the callback should
- be called. Any log whose level below this will
- be ignored by the callback.
- Return value:
- The slot id (>= 0), -1 if all slots are used or callback is NULL.
- --*/
- int
- UTIL_LogAddOutputCallback(
- LOGCALLBACK callback,
- LOGLEVEL loglevel
- );
- /*++
- Purpose:
- Removes a log output callback.
- Parameters:
- [IN] id - The id of callback function to be removed.
- Return value:
- None
- --*/
- void
- UTIL_LogRemoveOutputCallback(
- int id
- );
- /*++
- Purpose:
- Set the minimal log level that could be output.
- Any level below this level will produce no output.
- Parameters:
- [IN] minlevel - The minimal log level, must be within the
- range [LOGLEVEL_MIN, LOGLEVEL_MAX].
- Return value:
- None.
- --*/
- void
- UTIL_LogOutput(
- LOGLEVEL level,
- const char *fmt,
- ...
- );
- /*++
- Purpose:
- Set the minimal log level that could be output.
- Any level below this level will produce no output.
- Parameters:
- [IN] minlevel - The minimal log level, must be within the
- range [LOGLEVEL_MIN, LOGLEVEL_MAX].
- Return value:
- None.
- --*/
- void
- UTIL_LogSetLevel(
- LOGLEVEL minlevel
- );
- void
- UTIL_LogToFile(
- LOGLEVEL _,
- const char *string,
- const char *__
- );
- PAL_C_LINKAGE_END
- #endif
|