mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
C++ compilability - don't define types inside others
The following is legal code in both C and C++:
struct foo {
struct bar { int a } x;
int y;
};
...however in C++ it defines a type called "foo::bar" instead of "bar".
Just avoid this construct altogether
This commit is contained in:
@@ -11,12 +11,14 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct mrb_range_edges {
|
||||
mrb_value beg;
|
||||
mrb_value end;
|
||||
};
|
||||
|
||||
struct RRange {
|
||||
MRUBY_OBJECT_HEADER;
|
||||
struct mrb_range_edges {
|
||||
mrb_value beg;
|
||||
mrb_value end;
|
||||
} *edges;
|
||||
struct mrb_range_edges *edges;
|
||||
int excl;
|
||||
};
|
||||
|
||||
|
||||
+9
-7
@@ -20,14 +20,16 @@
|
||||
typedef mrb_ast_node node;
|
||||
typedef struct mrb_parser_state parser_state;
|
||||
|
||||
enum looptype {
|
||||
LOOP_NORMAL,
|
||||
LOOP_BLOCK,
|
||||
LOOP_FOR,
|
||||
LOOP_BEGIN,
|
||||
LOOP_RESCUE,
|
||||
} type;
|
||||
|
||||
struct loopinfo {
|
||||
enum looptype {
|
||||
LOOP_NORMAL,
|
||||
LOOP_BLOCK,
|
||||
LOOP_FOR,
|
||||
LOOP_BEGIN,
|
||||
LOOP_RESCUE,
|
||||
} type;
|
||||
enum looptype type;
|
||||
int pc1, pc2, pc3, acc;
|
||||
int ensure_level;
|
||||
struct loopinfo *prev;
|
||||
|
||||
@@ -11,12 +11,14 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct free_obj {
|
||||
MRUBY_OBJECT_HEADER;
|
||||
struct RBasic *next;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
union {
|
||||
struct free_obj {
|
||||
MRUBY_OBJECT_HEADER;
|
||||
struct RBasic *next;
|
||||
} free;
|
||||
struct free_obj free;
|
||||
struct RBasic basic;
|
||||
struct RObject object;
|
||||
struct RClass klass;
|
||||
|
||||
+9
-7
@@ -8,15 +8,17 @@
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
struct mrb_pool_page {
|
||||
struct mrb_pool_page *next;
|
||||
size_t offset;
|
||||
size_t len;
|
||||
void *last;
|
||||
char page[1];
|
||||
};
|
||||
|
||||
struct mrb_pool {
|
||||
mrb_state *mrb;
|
||||
struct mrb_pool_page {
|
||||
struct mrb_pool_page *next;
|
||||
size_t offset;
|
||||
size_t len;
|
||||
void *last;
|
||||
char page[1];
|
||||
} *pages;
|
||||
struct mrb_pool_page *pages;
|
||||
};
|
||||
|
||||
#undef TEST_POOL
|
||||
|
||||
+7
-5
@@ -65,6 +65,12 @@ allocate_converted_string(mrb_state *mrb,
|
||||
unsigned char *caller_dst_buf, size_t caller_dst_bufsize,
|
||||
size_t *dst_len_ptr);
|
||||
|
||||
union mrb_transcoding_state_t { /* opaque data for stateful encoding */
|
||||
void *ptr;
|
||||
char ary[sizeof(double) > sizeof(void*) ? sizeof(double) : sizeof(void*)];
|
||||
double dummy_for_alignment;
|
||||
};
|
||||
|
||||
/* dynamic structure, one per conversion (similar to iconv_t) */
|
||||
/* may carry conversion state (e.g. for iso-2022-jp) */
|
||||
typedef struct mrb_transcoding {
|
||||
@@ -92,11 +98,7 @@ typedef struct mrb_transcoding {
|
||||
unsigned char *ptr; /* length: max_output */
|
||||
} writebuf;
|
||||
|
||||
union mrb_transcoding_state_t { /* opaque data for stateful encoding */
|
||||
void *ptr;
|
||||
char ary[sizeof(double) > sizeof(void*) ? sizeof(double) : sizeof(void*)];
|
||||
double dummy_for_alignment;
|
||||
} state;
|
||||
union mrb_transcoding_state_t state;
|
||||
} mrb_transcoding;
|
||||
#define TRANSCODING_READBUF(tc) \
|
||||
((tc)->transcoder->max_input <= (int)sizeof((tc)->readbuf.ary) ? \
|
||||
|
||||
Reference in New Issue
Block a user