Search
lxdream.org :: lxdream/src/lxdream.h
lxdream 0.9.1
released Jun 29
Download Now
filename src/lxdream.h
changeset 1109:700c5ab26a63
prev1096:3f8f4c5b9ef4
next1159:580436b01b6c
author nkeynes
date Wed Sep 08 08:43:15 2010 +1000 (13 years ago)
permissions -rw-r--r--
last change Actually report the error when the command-line disc or bin couldn't be loaded
view annotate diff log raw
     1 /**
     2  * $Id$
     3  *
     4  * Common type definitions and forward declarations
     5  *
     6  * Copyright (c) 2005 Nathan Keynes.
     7  *
     8  * This program is free software; you can redistribute it and/or modify
     9  * it under the terms of the GNU General Public License as published by
    10  * the Free Software Foundation; either version 2 of the License, or
    11  * (at your option) any later version.
    12  *
    13  * This program is distributed in the hope that it will be useful,
    14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16  * GNU General Public License for more details.
    17  */
    19 #ifndef lxdream_lxdream_H
    20 #define lxdream_lxdream_H 1
    22 #include <stdint.h>
    23 #include <glib/gtypes.h>
    25 #include "../config.h"
    27 #ifdef __cplusplus
    28 extern "C" {
    29 #endif
    31 #define APP_NAME PACKAGE
    32 extern const char lxdream_package_name[];
    33 extern const char lxdream_short_version[];
    34 extern const char lxdream_full_version[];
    35 extern const char lxdream_copyright[];
    38 #define MB *1024*1024
    39 #define KB *1024
    41 #ifndef max
    42 #define max(a,b) ( (a) > (b) ? (a) : (b) )
    43 #endif
    45 /**
    46  * A 29-bit address in SH4 external address space
    47  */
    48 typedef uint32_t sh4addr_t;
    50 /**
    51  * A 32-bit address in SH4 virtual address space.
    52  */
    53 typedef uint32_t sh4vma_t;
    55 /**
    56  * A direct pointer into SH4 memory
    57  */
    58 typedef unsigned char *sh4ptr_t;
    60 /******************* Forward type declarations ******************/
    62 typedef struct render_buffer *render_buffer_t;
    63 typedef struct frame_buffer *frame_buffer_t;
    65 /*************************** Logging ****************************/
    67 #define EMIT_FATAL 0
    68 #define EMIT_ERR 1
    69 #define EMIT_WARN 2
    70 #define EMIT_INFO 3
    71 #define EMIT_DEBUG 4
    72 #define EMIT_TRACE 5
    74 #ifdef MODULE
    75 #define MODULE_NAME MODULE.name
    76 #else
    77 #define MODULE_NAME "*****"
    78 #endif
    80 gboolean set_global_log_level( const gchar *level );
    81 void log_message( void *, int level, const char *source, const char *msg, ... );
    83 #define FATAL( ... ) log_message( NULL, EMIT_FATAL, MODULE_NAME, __VA_ARGS__ )
    84 #define ERROR( ... ) log_message( NULL, EMIT_ERR, MODULE_NAME, __VA_ARGS__ )
    85 #define WARN( ... ) log_message( NULL, EMIT_WARN, MODULE_NAME, __VA_ARGS__ )
    86 #define INFO( ... ) log_message( NULL, EMIT_INFO, MODULE_NAME, __VA_ARGS__ )
    87 #define DEBUG( ... ) log_message( NULL, EMIT_DEBUG, MODULE_NAME, __VA_ARGS__ )
    88 #define TRACE( ... ) log_message( NULL, EMIT_TRACE, MODULE_NAME, __VA_ARGS__ )
    90 /* Error reporting */
    91 #define MAX_ERROR_MSG_SIZE 512
    92 typedef struct error_struct {
    93     unsigned int code;
    94     char msg[MAX_ERROR_MSG_SIZE];
    95 } ERROR;
    97 #define LX_ERR_NONE          0
    98 #define LX_ERR_NOMEM         1  /* Out-of-memory */
    99 #define LX_ERR_CONFIG        2  /* Configuration problem */
   100 #define LX_ERR_UNHANDLED     3  /* A lower-level error occurred which we don't understand */
   101 #define LX_ERR_BUG           4
   102 #define LX_ERR_FILE_NOOPEN   9  /* File could not be opened (ENOENT or EACCESS usually) */
   103 #define LX_ERR_FILE_IOERROR 10  /* I/O error encountered in file */
   104 #define LX_ERR_FILE_INVALID 11  /* File contents are invalid for its type */
   105 #define LX_ERR_FILE_UNKNOWN 12  /* File type is unrecognized */
   106 #define LX_ERR_FILE_UNSUP   13  /* File type is unsupported */
   108 #define SET_ERROR(err, n, ...) if( (err) != NULL ) { (err)->code = n; snprintf( (err)->msg, sizeof((err)->msg), __VA_ARGS__ ); }
   109 #define CLEAR_ERROR(err) do { (err)->code = 0; (err)->msg[0] = 0; } while(0)
   112 #ifdef HAVE_FASTCALL
   113 #define FASTCALL __attribute__((regparm(2)))
   114 #else
   115 #define FASTCALL
   116 #endif
   118 #ifdef __cplusplus
   119 }
   120 #endif
   122 #endif /* !lxdream_lxdream_H */
.