ruby_rnv 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|