summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMitchell Blank Jr <[email protected]>2012-05-19 22:40:57 -0700
committerMitchell Blank Jr <[email protected]>2012-05-19 22:40:57 -0700
commit3471e2b1340cb84504272da26051f149f350ee94 (patch)
tree3e84410470fb2f98bd5369511c53901c612d0b0d /src
parent4105b595684bb9f1e176563f819de2917d0471fd (diff)
downloadmruby-3471e2b1340cb84504272da26051f149f350ee94.tar.gz
mruby-3471e2b1340cb84504272da26051f149f350ee94.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c16
-rw-r--r--src/gc.h10
-rw-r--r--src/pool.c16
-rw-r--r--src/transcode.c12
4 files changed, 31 insertions, 23 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 769f9e538..263490f27 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -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;
diff --git a/src/gc.h b/src/gc.h
index 0a4bc1c51..fea761d1b 100644
--- a/src/gc.h
+++ b/src/gc.h
@@ -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;
diff --git a/src/pool.c b/src/pool.c
index a367a30a5..3cbb2b163 100644
--- a/src/pool.c
+++ b/src/pool.c
@@ -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
diff --git a/src/transcode.c b/src/transcode.c
index 42c86d167..d6d41b667 100644
--- a/src/transcode.c
+++ b/src/transcode.c
@@ -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) ? \