slow_blink 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/slow_blink/ext_schema_parser/lexer.c +7 -7
- data/ext/slow_blink/ext_schema_parser/parser.c +384 -347
- data/ext/slow_blink/ext_schema_parser/parser.h +9 -1
- data/ext/slow_blink/message/ext_compact_encoder/ext_compact_encoder.c +2 -12
- data/lib/slow_blink/schema.rb +9 -2
- data/lib/slow_blink/version.rb +1 -1
- metadata +3 -3
@@ -39,6 +39,14 @@
|
|
39
39
|
#if YYDEBUG
|
40
40
|
extern int yydebug;
|
41
41
|
#endif
|
42
|
+
/* "%code requires" blocks. */
|
43
|
+
#line 7 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:197 */
|
44
|
+
|
45
|
+
|
46
|
+
#define YY_DECL int yylex(YYSTYPE * yylval_param, YYLTYPE * yylloc_param, yyscan_t yyscanner, VALUE crefs)
|
47
|
+
|
48
|
+
|
49
|
+
#line 50 "ext/slow_blink/ext_schema_parser/parser.h" /* glr.c:197 */
|
42
50
|
|
43
51
|
/* Token type. */
|
44
52
|
#ifndef YYTOKENTYPE
|
@@ -106,6 +114,6 @@ struct YYLTYPE
|
|
106
114
|
|
107
115
|
|
108
116
|
|
109
|
-
int yyparse (yyscan_t scanner, VALUE filename, VALUE *tree);
|
117
|
+
int yyparse (yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree);
|
110
118
|
|
111
119
|
#endif /* !YY_YY_EXT_SLOW_BLINK_EXT_SCHEMA_PARSER_PARSER_H_INCLUDED */
|
@@ -84,12 +84,7 @@ static VALUE cWeakError11;
|
|
84
84
|
|
85
85
|
static const struct blink_stream_user cUserStream = {
|
86
86
|
.read = myRead,
|
87
|
-
.write = myWrite
|
88
|
-
.tell = NULL,
|
89
|
-
.peek = NULL,
|
90
|
-
.seekCur = NULL,
|
91
|
-
.seekSet = NULL,
|
92
|
-
.eof = NULL
|
87
|
+
.write = myWrite
|
93
88
|
};
|
94
89
|
|
95
90
|
/* functions **********************************************************/
|
@@ -152,8 +147,6 @@ void Init_ext_compact_encoder(void)
|
|
152
147
|
|
153
148
|
/* static functions ***************************************************/
|
154
149
|
|
155
|
-
#include <assert.h>
|
156
|
-
|
157
150
|
static bool myRead(void *state, void *buf, size_t nbyte)
|
158
151
|
{
|
159
152
|
bool retval = false;
|
@@ -474,7 +467,7 @@ static VALUE getU32(VALUE self)
|
|
474
467
|
VALUE retval = Qnil;
|
475
468
|
uint32_t val;
|
476
469
|
bool isNull;
|
477
|
-
|
470
|
+
|
478
471
|
struct blink_stream stream;
|
479
472
|
(void)BLINK_Stream_initUser(&stream, &self, cUserStream);
|
480
473
|
if(BLINK_Compact_decodeU32(&stream, &val, &isNull)){
|
@@ -634,7 +627,6 @@ static VALUE getBool(VALUE self)
|
|
634
627
|
bool val;
|
635
628
|
bool isNull;
|
636
629
|
struct blink_stream stream;
|
637
|
-
rb_gc_mark(self);
|
638
630
|
|
639
631
|
(void)BLINK_Stream_initUser(&stream, &self, cUserStream);
|
640
632
|
if(BLINK_Compact_decodeBool(&stream, &val, &isNull)){
|
@@ -655,7 +647,6 @@ static VALUE getBinary(VALUE self)
|
|
655
647
|
uint32_t size;
|
656
648
|
bool isNull;
|
657
649
|
struct blink_stream stream;
|
658
|
-
rb_gc_mark(self);
|
659
650
|
|
660
651
|
(void)BLINK_Stream_initUser(&stream, &self, cUserStream);
|
661
652
|
|
@@ -664,7 +655,6 @@ static VALUE getBinary(VALUE self)
|
|
664
655
|
if(!isNull){
|
665
656
|
|
666
657
|
retval = rb_funcall(self, rb_intern("read"), 1, UINT2NUM(size));
|
667
|
-
rb_gc_mark(retval);
|
668
658
|
|
669
659
|
if((retval == Qnil) || ((uint32_t)NUM2UINT(rb_funcall(retval, rb_intern("size"), 0)) != size)){
|
670
660
|
|
data/lib/slow_blink/schema.rb
CHANGED
@@ -70,20 +70,27 @@ module SlowBlink
|
|
70
70
|
# @param buffer [Array<SchemaBuffer,String>]
|
71
71
|
def initialize(*buffer)
|
72
72
|
|
73
|
+
# This array keeps references to the various objects
|
74
|
+
# created in the C extension parser
|
75
|
+
@crefs = []
|
76
|
+
|
73
77
|
namespace = []
|
74
78
|
|
75
79
|
if buffer.size > 0
|
76
80
|
buffer.each do |b|
|
77
81
|
if b.kind_of? String
|
78
|
-
namespace <<
|
82
|
+
namespace << parse_file_buffer(b, nil)
|
79
83
|
else
|
80
|
-
namespace <<
|
84
|
+
namespace << parse_file_buffer(b.buffer, b.filename)
|
81
85
|
end
|
82
86
|
end
|
83
87
|
else
|
84
88
|
raise ArgumentError.new "at least one buffer required"
|
85
89
|
end
|
86
90
|
|
91
|
+
# we safely have all our c references rooted at namespace so this can go away
|
92
|
+
@crefs = nil
|
93
|
+
|
87
94
|
@defs = {}
|
88
95
|
|
89
96
|
# create groups and definitions
|
data/lib/slow_blink/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slow_blink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Harper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: '0'
|
146
146
|
requirements: []
|
147
147
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.6.
|
148
|
+
rubygems_version: 2.6.11
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: Blink Protocol in Ruby
|