filename | src/lxdream.h |
changeset | 1109:700c5ab26a63 |
prev | 1096:3f8f4c5b9ef4 |
next | 1159:580436b01b6c |
author | nkeynes |
date | Mon Sep 13 10:13:42 2010 +1000 (13 years ago) |
permissions | -rw-r--r-- |
last change | Implement shadow-execution 'core' to run translator + interpreter side by side (for testing) |
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 */
.