commit 2c65cf0923048e3d3f6a068b91f64cdc8364aee4
parent 12e715ab9bd62d8a88637972d94f65c87e0df9b6
Author: Tomas Hlavaty <tom@logand.com>
Date: Tue, 17 Jan 2012 01:19:42 +0100
some() simplified
Diffstat:
3 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/unoidl2.c b/unoidl2.c
@@ -162,10 +162,10 @@ Any print(Any x) {
return x;
}
-int some(void *env, int (*fn)(void *env, Any e), Any x) {
- for(Any y = x; NIL != y; y = cdr(y)) {
- int z = fn(env, car(y));
- if(z) return z;
+Any some(Fn1 test, Any lst) {
+ for(; NIL != lst; lst = cdr(lst)) {
+ Any x = test(car(lst));
+ if(NIL != x) return x;
}
return 0;
}
diff --git a/unoidl2.h b/unoidl2.h
@@ -59,7 +59,7 @@ Any cdddddr(Any x);
int equal_(Any x, Any y);
Any equal(Any x, Any y);
Any print(Any x);
-int some(void *env, int (*fn)(void *env, Any e), Any x);
+Any some(Fn1 test, Any lst);
Any mapc(void *env, Any (*fn)(void *env, Any e), Any x);
Any find(Any elt, Any lst, Fn2 cmp, Fn1 key);
Any reverse(Any x, Any a);
diff --git a/unoidl2java.c b/unoidl2java.c
@@ -243,7 +243,9 @@ static int type_flags(Any x) {
return 0;
}
-static int readonlyp(void *env, Any x) {return READONLY == kind(x);}
+static Any kindeq(Kind k, Any a) {return k == kind(a) ? T : NIL;}
+
+static Any readonlyp(Any a) {return kindeq(READONLY, a);}
static Any pr_TypeInfo1(void *env, Any x) {
int f = 0;
@@ -252,7 +254,7 @@ static Any pr_TypeInfo1(void *env, Any x) {
case ATTRIBUTE: // (attribute (string) KeyName (readonly))
t = cadr(x);
f |= type_flags(t);
- if(some(NULL, readonlyp, cadddr(x))) f |= _READONLY;
+ if(NIL != some(readonlyp, cadddr(x))) f |= _READONLY;
pr_TypeInfo2("Attribute", caddr(x), t, f, env, -1);
break;
case ID: // (NewValue (any))
@@ -293,7 +295,7 @@ static Any pr_TypeInfo1(void *env, Any x) {
static Any pr_TypeInfo1_attribute(void *env, Any x) {
if(ATTRIBUTE == kind(car(x))) {
pr_TypeInfo1(env, x);
- if(!some(NULL, readonlyp, cadddr(x)))
+ if(NIL == some(readonlyp, cadddr(x)))
++*((int *) env);
}
return NIL;
@@ -305,10 +307,10 @@ static Any pr_TypeInfo1_nonattribute(void *env, Any x) {
return NIL;
}
-static int pr_TypeInfo_p(void *env, Any x) {return INTERFACE != kind(car(x));}
+static Any pr_TypeInfo_p(Any a) {return kindeq(INTERFACE, a);}
static void pr_TypeInfo(Any body) {
- if(some(NULL, pr_TypeInfo_p, body)) {
+ if(NIL != some(pr_TypeInfo_p, body)) {
pr(" public static final com.sun.star.lib.uno.typeinfo.TypeInfo UNOTYPEINFO[] = {");
int i = -1;
k = -1;
@@ -458,7 +460,7 @@ static void pr_attribute(Any x) { // (attribute (string) KeyName (readonly))
Any n = caddr(x);
Any o = cadddr(x);
pr(" public abstract "); pp(t); pr(" get"); pp(n); pl("();");
- if(!some(NULL, readonlyp, o)) {
+ if(NIL == some(readonlyp, o)) {
pr(" public abstract void set"); pp(n); pr("("); pp(t); pl(" x);");
}
}
@@ -579,15 +581,13 @@ static void pr_absolute(Any x) {
}
}
-static int propertyp(void *env, Any e) {return READONLY == kind(car(e));}
-
static void pr_property(Any x) {
Any n = cadr(x);
Any t = caddr(x);
Any o = cadddr(x);
pr(" protected "); pp(t); pr(" "); pp(n); pl(";");
pr(" public "); pp(t); pr(" get"); pp(n); pl("();");
- if(!some(NULL, readonlyp, o)) {
+ if(NIL == some(readonlyp, o)) {
pr(" public void set"); pp(n); pr("("); pp(t); pr(" "); pp(n); pl(");");
}
}