Search
lxdream.org :: lxdream/src/lxdream.h
lxdream 0.9.1
released Jun 29
Download Now
filename src/lxdream.h
changeset 1096:3f8f4c5b9ef4
prev1065:bc1cc0c54917
next1109:700c5ab26a63
author nkeynes
date Sun Jan 31 18:30:13 2010 +1000 (10 years ago)
permissions -rw-r--r--
last change Add first cut of error-reporting structure + macro
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 SET_ERROR(err, n, ...) if( (err) != NULL ) { (err)->code = n; snprintf( (err)->msg, sizeof((err)->msg), __VA_ARGS__ ); }
    98 #define CLEAR_ERROR(err) do { err.code = 0; err.msg[0] = 0; } while(0)
   101 #ifdef HAVE_FASTCALL
   102 #define FASTCALL __attribute__((regparm(2)))
   103 #else
   104 #define FASTCALL
   105 #endif
   107 #ifdef __cplusplus
   108 }
   109 #endif
   111 #endif /* !lxdream_lxdream_H */
.