ruby_rnv 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/rnv/src/drv.c +12 -0
- data/ext/rnv/src/type.h +9 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 899300861f1a2b315f879d451a7a5ee472302fbdac26ea775a2e56e09793d98c
|
4
|
+
data.tar.gz: 4f2139ddde96c34a077e124600bb7cbbb0e98ef5db5fe5c57066bdcc8fd4c089
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9660b568d0a4fe092080bb095fd80125540ece28c669ecae73faa9391567a337fcd8799702b29bdcecd022b9613f76c3d9e6013f3c289000a5a98950bd67860
|
7
|
+
data.tar.gz: 63924d0755a95489733c62ccde564260750dcfea5e0a366e26d6663178b00e47d6ee095f18b8cee293c7c4eba457746a86cb9eedb696c7e63321449cbbf89536
|
data/ext/rnv/src/drv.c
CHANGED
@@ -381,7 +381,18 @@ static int text(rnv_t *rnv, rn_st_t *rn_st, rx_st_t *rx_st, drv_st_t *drv_st, in
|
|
381
381
|
ret=rn_nullable(list(rnv, rn_st, rx_st, drv_st, p1,s,n))?rnv->rn_empty:rnv->rn_notAllowed;
|
382
382
|
break;
|
383
383
|
case RN_P_DATA: rn_Data(p,dt,ps); rn_Datatype(dt,lib,typ);
|
384
|
+
int i;
|
385
|
+
// avoid dtl called multiple times for same data
|
386
|
+
for(i = 0;i<drv_st->n_dtl_cb;i++) {
|
387
|
+
if(drv_st->dtl_cb[i].p == p)
|
388
|
+
ret = drv_st->dtl_cb[i].ret;
|
389
|
+
}
|
390
|
+
if(!ret) {
|
384
391
|
ret=getdtl(rnv, drv_st, lib)->allows(rnv,rn_st,rx_st, lib, rnv->rn_string+typ,rnv->rn_string+ps,s,n)?rnv->rn_empty:rnv->rn_notAllowed;
|
392
|
+
drv_st->dtl_cb[drv_st->n_dtl_cb].p = p;
|
393
|
+
drv_st->dtl_cb[drv_st->n_dtl_cb].ret = ret;
|
394
|
+
drv_st->n_dtl_cb++;
|
395
|
+
}
|
385
396
|
break;
|
386
397
|
case RN_P_DATA_EXCEPT: rn_DataExcept(p,p1,p2);
|
387
398
|
ret=text(rnv, rn_st, rx_st, drv_st, p1,s,n)==rnv->rn_empty&&!rn_nullable(text(rnv, rn_st, rx_st, drv_st, p2,s,n))?rnv->rn_empty:rnv->rn_notAllowed;
|
@@ -395,6 +406,7 @@ static int text(rnv_t *rnv, rn_st_t *rn_st, rx_st_t *rx_st, drv_st_t *drv_st, in
|
|
395
406
|
}
|
396
407
|
|
397
408
|
static int textws(rnv_t *rnv, rn_st_t *rn_st, rx_st_t *rx_st, drv_st_t *drv_st, int p,char *s,int n) {
|
409
|
+
drv_st->n_dtl_cb = 0;
|
398
410
|
int p1=text(rnv, rn_st, rx_st, drv_st, p,s,n),ws=1;
|
399
411
|
char *end=s+n;
|
400
412
|
while(s!=end) {if(!xmlc_white_space(*s)) {ws=0; break;} ++s;}
|
data/ext/rnv/src/type.h
CHANGED
@@ -105,6 +105,12 @@ typedef struct rx_st
|
|
105
105
|
|
106
106
|
} rx_st_t;
|
107
107
|
|
108
|
+
typedef struct dtl_cb
|
109
|
+
{
|
110
|
+
int p;
|
111
|
+
int ret;
|
112
|
+
} dtl_cb_t;
|
113
|
+
|
108
114
|
typedef struct drv_st
|
109
115
|
{
|
110
116
|
struct dtl *dtl;
|
@@ -115,6 +121,9 @@ typedef struct drv_st
|
|
115
121
|
struct hashtable ht_m;
|
116
122
|
int (*memo)[5];
|
117
123
|
|
124
|
+
dtl_cb_t dtl_cb[256];
|
125
|
+
int n_dtl_cb;
|
126
|
+
|
118
127
|
int drv_compact;
|
119
128
|
|
120
129
|
int (*verror_handler)(void *data, int erno, char *format, va_list ap);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_rnv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Boulnois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|