Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.api / src / main / java / org / gvsig / expressionevaluator / ExpressionBuilder.java @ 44431

History | View | Annotate | Download (19.6 KB)

1 44006 jjdelcerro
package org.gvsig.expressionevaluator;
2 43020 jjdelcerro
3
import java.util.List;
4 44198 jjdelcerro
import java.util.Map;
5 43020 jjdelcerro
import org.cresques.cts.IProjection;
6
import org.gvsig.fmap.geom.Geometry;
7 43034 jjdelcerro
import org.gvsig.fmap.geom.primitive.Envelope;
8 44198 jjdelcerro
import org.gvsig.tools.util.PropertiesSupport;
9
import org.gvsig.tools.util.PropertiesSupportHelper;
10 43020 jjdelcerro
11
public interface ExpressionBuilder {
12
13 44198 jjdelcerro
    public static final String OPERATOR_NOT = "NOT";
14 44207 jjdelcerro
    public static final String OPERATOR_NEGATE = "NEGATE";
15 44198 jjdelcerro
    public static final String OPERATOR_IS = "IS";
16
    public static final String OPERATOR_AND = "AND";
17
    public static final String OPERATOR_OR = "OR";
18 44207 jjdelcerro
    public static final String OPERATOR_EQ = "=";
19
    public static final String OPERATOR_NE = "<>";
20
    public static final String OPERATOR_GT = ">";
21
    public static final String OPERATOR_GE = ">=";
22
    public static final String OPERATOR_LT = "<";
23
    public static final String OPERATOR_LE = "<=";
24 44198 jjdelcerro
    public static final String OPERATOR_LIKE = "LIKE";
25
    public static final String OPERATOR_ILIKE = "ILIKE";
26 44207 jjdelcerro
    public static final String OPERATOR_ADD = "+";
27
    public static final String OPERATOR_SUBST = "-";
28
    public static final String OPERATOR_MULT = "*";
29
    public static final String OPERATOR_DIV = "/";
30
    public static final String OPERATOR_MOD = "%";
31
    public static final String OPERATOR_CONCAT = "||";
32
    public static final String OPERATOR_REGEXP = "~";
33
    public static final String OPERATOR_AND2 = "&&";
34 44198 jjdelcerro
35
    public static final String FUNCTION_ST_SRID = "ST_SRID";
36
    public static final String FUNCTION_ST_ASTEXT = "ST_AsText";
37
    public static final String FUNCTION_ST_ASBINARY = "ST_AsBinary";
38
    public static final String FUNCTION_ST_ASEWKB = "ST_AsEWKB";
39
    public static final String FUNCTION_ST_ENVELOPE = "ST_Envelope";
40
    public static final String FUNCTION_ST_GEOMFROMTEXT = "ST_GeomFromText";
41
    public static final String FUNCTION_ST_GEOMFROMWKB = "ST_GeomFromWKB";
42
    public static final String FUNCTION_ST_GEOMFROMEWKB = "ST_GeomFromEWKB";
43
    public static final String FUNCTION_ST_SIMPLIFY = "ST_Simplify";
44
    public static final String FUNCTION_ST_EQUALS = "ST_Equals";
45
    public static final String FUNCTION_ST_INTERSECTS = "ST_Intersects";
46
    public static final String FUNCTION_ST_CONTAINS = "ST_Contains";
47
    public static final String FUNCTION_ST_DISJOINT = "ST_Disjoint";
48
    public static final String FUNCTION_ST_CROSSES = "ST_Crosses";
49
    public static final String FUNCTION_ST_ISCLOSED = "ST_IsClosed";
50
    public static final String FUNCTION_ST_OVERLAPS = "ST_Overlaps";
51
    public static final String FUNCTION_ST_TOUCHES = "ST_Touches";
52
    public static final String FUNCTION_ST_WITHIN = "ST_Within";
53 44253 jjdelcerro
    public static final String FUNCTION_ST_SETSRID = "ST_SetSRID";
54
    public static final String FUNCTION_ST_POINT = "ST_Point";
55 44431 jjdelcerro
    public static final String FUNCTION_ST_MAKEPOINT = "ST_MakePoint";
56 44198 jjdelcerro
    public static final String FUNCTION_ST_UNIONAGGREGATE = "ST_UnionAggregate";
57
    public static final String FUNCTION_ST_EXTENTAGGREGATE = "ST_ExtentAggregate";
58
59
    public static final String FUNCTION_IIF = "IIF";
60
    public static final String FUNCTION_IFNULL = "IFNULL";
61
62
    public static final String FUNCTION_LEFT = "LEFT";
63
    public static final String FUNCTION_RIGHT = "RIGHT";
64
    public static final String FUNCTION_LOCATE = "LOCATE";
65
    public static final String FUNCTION_POSITION = "POSITION";
66
    public static final String FUNCTION_LPAD = "LPAD";
67
    public static final String FUNCTION_RPAD = "RPAD";
68
    public static final String FUNCTION_LTRIM = "LTRIM";
69
    public static final String FUNCTION_RTRIM = "RTRIM";
70
    public static final String FUNCTION_TRIM = "TRIM";
71
    public static final String FUNCTION_REPEAT = "REPEAT";
72
    public static final String FUNCTION_REPLACE = "REPLACE";
73
    public static final String FUNCTION_ASCII = "ASCII";
74
    public static final String FUNCTION_LENGHT = "LENGHT";
75
    public static final String FUNCTION_INSTR = "INSTR";
76
    public static final String FUNCTION_LOWER = "LOWER";
77
    public static final String FUNCTION_UPPER = "UPPER";
78
    public static final String FUNCTION_SPACE = "SPACE";
79
    public static final String FUNCTION_SUBSTRING = "SUBSTRING";
80
    public static final String FUNCTION_ACOS = "ACOS";
81
    public static final String FUNCTION_ASIN = "ASIN";
82
    public static final String FUNCTION_ATAN = "ATAN";
83
    public static final String FUNCTION_COS = "COS";
84
    public static final String FUNCTION_COSH = "COSH";
85
    public static final String FUNCTION_COT = "COT";
86
    public static final String FUNCTION_BITAND = "BITAND";
87
    public static final String FUNCTION_BITOR = "BITOR";
88
    public static final String FUNCTION_BITXOR = "BITXOR";
89
    public static final String FUNCTION_CEIL = "CEIL";
90
    public static final String FUNCTION_DEGREES = "DEGREES";
91
    public static final String FUNCTION_EXP = "EXP";
92
    public static final String FUNCTION_FLOOR = "FLOOR";
93
    public static final String FUNCTION_LOG = "LOG";
94
    public static final String FUNCTION_LOG10 = "LOG10";
95
    public static final String FUNCTION_PI = "PI";
96
    public static final String FUNCTION_POWER = "POWER";
97
    public static final String FUNCTION_RADIANS = "RADIANS";
98
    public static final String FUNCTION_RAND = "RAND";
99
    public static final String FUNCTION_ROUND = "ROUND";
100
    public static final String FUNCTION_SQRT = "SQRT";
101
    public static final String FUNCTION_SIGN = "SIGN";
102
    public static final String FUNCTION_SIN = "SIN";
103
    public static final String FUNCTION_SINH = "SINH";
104
    public static final String FUNCTION_TAN = "TAN";
105
    public static final String FUNCTION_TANH = "TANH";
106
    public static final String FUNCTION_ZERO = "ZERO";
107
    public static final String FUNCTION_CHR = "CHR";
108
    public static final String FUNCTION_DATE = "DATE";
109 44266 jjdelcerro
    public static final String FUNCTION_DATEDIFF = "DATEDIFF";
110
    public static final String FUNCTION_DATEADD = "DATEADD";
111 44198 jjdelcerro
    public static final String FUNCTION_NOW = "NOW";
112
    public static final String FUNCTION_TIME = "TIME";
113
    public static final String FUNCTION_TIMESTAMP = "TIMESTAMP";
114
115
    public static final String FUNCTION_CAST = "CAST";
116
    public static final String FUNCTION_DECODE = "DECODE";
117
    public static final String FUNCTION_TODOUBLE = "TODOUBLE";
118
    public static final String FUNCTION_TOFLOAT = "TOFLOAT";
119
    public static final String FUNCTION_TOINTEGER = "TOINTEGER";
120
    public static final String FUNCTION_TOLONG = "TOLONG";
121
    public static final String FUNCTION_TOSTR = "TOSTR";
122
123 44206 jjdelcerro
    public static final String FUNCTION_INCR = "INCR";
124
    public static final String FUNCTION_DECR = "DECR";
125
126 44207 jjdelcerro
    public static final String FUNCTION_RANGE = "RANGE";
127 44269 omartinez
    public static final String FUNCTION_EVAL = "EVAL";
128 44262 jjdelcerro
    public static final String FUNCTION_LIST = "LIST";
129 44376 jjdelcerro
    public static final String FUNCTION_TUPLE = "TUPLE";
130 44207 jjdelcerro
131 43020 jjdelcerro
    public enum GeometrySupportType {
132
        WKT,
133
        WKB,
134 43358 jjdelcerro
        EWKB,
135
        NATIVE
136 43020 jjdelcerro
    }
137
138
    public enum ParameterType {
139
        Variable,
140
        Constant,
141
        Geometry
142
    }
143 44198 jjdelcerro
144 43020 jjdelcerro
    public interface VisitorFilter {
145
        boolean accept(Visitable visitable);
146
    }
147
148
     public interface Visitor {
149
        public void visit(Visitable value);
150
    }
151
152
    public interface Visitable {
153
        public void accept(Visitor visitor, VisitorFilter filter);
154
    }
155
156 44198 jjdelcerro
    public interface Value extends Visitable, PropertiesSupport {
157
        public String toString(Formatter<Value> formatter);
158 44376 jjdelcerro
        public void replace(Value target, Value replacement);
159 43020 jjdelcerro
    }
160
161
    public interface Group extends Value {
162 44198 jjdelcerro
        public Value value();
163 43020 jjdelcerro
    }
164
165
    public interface Constant extends Value {
166 44198 jjdelcerro
        public Object value();
167 43020 jjdelcerro
    }
168
169
    public interface Custom extends Value {
170 44198 jjdelcerro
        public Object value();
171 43020 jjdelcerro
        public Custom add(Variable variable);
172
        public Custom add(Parameter parameter);
173
    }
174
175
    public interface Variable extends Value, Comparable<Variable> {
176 44198 jjdelcerro
        public String name();
177 43020 jjdelcerro
    }
178
179
    public interface Parameter extends Value {
180
        public Parameter as_constant();
181
        public Parameter as_variable();
182 43093 jjdelcerro
        public Parameter as_geometry_variable();
183 43020 jjdelcerro
        public Parameter srs(Value srs);
184
        public Parameter srs(IProjection srs);
185 43093 jjdelcerro
        public Parameter value(Object value);
186
        public Parameter name(String value);
187 44198 jjdelcerro
        public String name();
188
        public Object value();
189
        public ParameterType type();
190
        public Value srs();
191 43020 jjdelcerro
        public boolean is_constant();
192
        public boolean is_variable();
193
        public boolean is_geometry_variable();
194
    }
195 43093 jjdelcerro
196 44198 jjdelcerro
    public interface Function extends Value {
197
        public String name();
198
        public List<Value> parameters();
199
        public Function parameter(Value parameter);
200 43093 jjdelcerro
    }
201 43020 jjdelcerro
202 44198 jjdelcerro
    public interface Method extends Value {
203
        public String name();
204
        public Value instance();
205 43020 jjdelcerro
        public List<Value> parameters();
206
        public Function parameter(Value parameter);
207
    }
208
209
    public interface BinaryOperator extends Value {
210 44198 jjdelcerro
        public String name();
211
        public Value left();
212
        public Value right();
213
        public BinaryOperator left(Value operand);
214
        public BinaryOperator right(Value operand);
215 43020 jjdelcerro
    }
216 44198 jjdelcerro
217
    public abstract class AbstractValue implements Value {
218
219
        private PropertiesSupport properties;
220
221
        protected AbstractValue() {
222
            this.properties = new PropertiesSupportHelper();
223
        }
224
225
        @Override
226
        public void accept(Visitor visitor, VisitorFilter filter) {
227
            if (filter == null || filter.accept(this)) {
228
                visitor.visit(this);
229
            }
230
        }
231
232
        @Override
233
        public Map<String, Object> getProperties() {
234
            return this.properties.getProperties();
235
        }
236
237
        @Override
238
        public Object getProperty(String name) {
239
            return this.properties.getProperty(name);
240
        }
241
242
        @Override
243
        public void setProperty(String name, Object value) {
244
            this.properties.setProperty(name, value);
245
        }
246
247 44376 jjdelcerro
        @Override
248
        public void replace(Value target, Value replacement) {
249
            // Do nothing
250
        }
251 44198 jjdelcerro
    }
252
253
    public class ClassVisitorFilter implements VisitorFilter {
254
255
        private final Class classFilter;
256
257
        public ClassVisitorFilter(Class classFilter) {
258
            this.classFilter = classFilter;
259
        }
260
261
        @Override
262
        public boolean accept(Visitable visitable) {
263 44369 jjdelcerro
            if( classFilter==null ) {
264
                return true;
265
            }
266 44198 jjdelcerro
            return classFilter.isInstance(visitable);
267
        }
268
269
    }
270
271
    public static final Formatter<Value> EMPTY_FORMATTER = new Formatter<Value>() {
272
        @Override
273
        public boolean canApply(Value value) {
274
            return false;
275
        }
276
277
        @Override
278
        public String format(Value value) {
279
            return "";
280
        }
281
    };
282
283
    public String quote_for_identifiers();
284 43020 jjdelcerro
285 44198 jjdelcerro
    public String quote_for_strings();
286
287 43020 jjdelcerro
    public void accept(Visitor visitor, VisitorFilter filter);
288
289 44198 jjdelcerro
    public List<Variable> variables();
290 43020 jjdelcerro
291 44198 jjdelcerro
    public List<String> variables_names();
292 43020 jjdelcerro
293 44198 jjdelcerro
    public List<Parameter> parameters();
294 43020 jjdelcerro
295 44198 jjdelcerro
    public List<String> parameters_names();
296
297 43020 jjdelcerro
    public GeometrySupportType geometry_support_type();
298 44198 jjdelcerro
299
    public ExpressionBuilder geometry_support_type(GeometrySupportType geometrySupportType);
300 43020 jjdelcerro
301
    public String identifier(String name);
302
303 44006 jjdelcerro
    public String bytearray_hex(byte[] data);
304 43020 jjdelcerro
305 44006 jjdelcerro
    public String bytearray_0x(byte[] data);
306
307
    public String bytearray_x(byte[] data);
308
309 43020 jjdelcerro
    public String string(String s);
310
311 44198 jjdelcerro
    public Object srs_id(IProjection projection);
312 43020 jjdelcerro
313 44198 jjdelcerro
    public Value value();
314
315
    public ExpressionBuilder value(Value value);
316 43020 jjdelcerro
317 44198 jjdelcerro
    public Group group(Value group);
318 43020 jjdelcerro
319 44198 jjdelcerro
    public Constant bytearray(byte[] data);
320 43020 jjdelcerro
321
    public Variable variable(String name);
322
323
    public Variable column(String name); // Alias for variable(name)
324
325 43093 jjdelcerro
    public Parameter parameter(String name);
326 43020 jjdelcerro
327 43093 jjdelcerro
    public Parameter parameter();
328
329 43020 jjdelcerro
    public Constant constant(Object value);
330
331 44198 jjdelcerro
    public Constant geometry(Geometry geom, IProjection projection);
332 43020 jjdelcerro
333 44198 jjdelcerro
    public Constant geometry(Geometry geom);
334 43020 jjdelcerro
335 44198 jjdelcerro
    public Constant envelope(Envelope envelope, IProjection projection);
336 44006 jjdelcerro
337 44198 jjdelcerro
    public Constant envelope(Envelope envelope);
338 43034 jjdelcerro
339 44198 jjdelcerro
    public Constant srs(IProjection projection);
340 44006 jjdelcerro
341 43020 jjdelcerro
    public Custom custom(Object value);
342
343 44198 jjdelcerro
    public Function as_geometry(Value value);
344 44020 jjdelcerro
345 44198 jjdelcerro
    public Method method(Value instance, String name, Value... values);
346 43020 jjdelcerro
347 44198 jjdelcerro
    public Function function(String name, Value... values);
348
349
    public BinaryOperator binaryOperator(String name, Value leftOperand, Value rightOperand);
350 43020 jjdelcerro
351 44198 jjdelcerro
    public Value toValue(String expression);
352 43020 jjdelcerro
353 44198 jjdelcerro
    public String toString(Formatter<Value> formatter);
354
355 43020 jjdelcerro
    public Function not(Value value);
356
357 44198 jjdelcerro
    public Function not_is_null(Value value);
358 43020 jjdelcerro
359 44198 jjdelcerro
    public Function is_null(Value value);
360 43020 jjdelcerro
361
362 44364 jjdelcerro
    public Function ST_Area(Value geom);
363 43020 jjdelcerro
364
    public Function ST_AsBinary(Value geom);
365
366
    public Function ST_AsEWKB(Value geom);
367
368 44364 jjdelcerro
    public Function ST_AsText(Value geom);
369
370
    public Function ST_Buffer(Value geom);
371
372
    public Function ST_Centroid(Value geom);
373
374
    public Function ST_Contains(Value geom1, Value geom2);
375
376
    public Function ST_CoveredBy(Value geom1, Value geom2);
377
378
    public Function ST_Covers(Value geom1, Value geom2);
379
380
    public Function ST_Crosses(Value geom1, Value geom2);
381
382
    public Function ST_Diference(Value geom1, Value geom2);
383
384
    public Function ST_Dimension(Value geom1);
385
386
    public Function ST_Disjoint(Value geom1, Value geom2);
387
388
    public Function ST_Distance(Value geom1, Value geom2);
389
390
    public Function ST_EndPoint(Value geom1);
391
392 43020 jjdelcerro
    public Function ST_Envelope(Value geom);
393
394 44364 jjdelcerro
    public Function ST_Equals(Value geom1, Value geom2);
395
396 43020 jjdelcerro
    public Function ST_GeomFromText(Value geom, Value crs);
397
398
    public Function ST_GeomFromWKB(Value geom, Value crs);
399
400
    public Function ST_GeomFromEWKB(Value geom, Value crs);
401
402 44364 jjdelcerro
    public Function ST_Intersection(Value geom1, Value geom2);
403 43355 jjdelcerro
404 43020 jjdelcerro
    public Function ST_Intersects(Value geom1, Value geom2);
405
406 44364 jjdelcerro
    public Function ST_IsClosed(Value geom);
407 43020 jjdelcerro
408 44364 jjdelcerro
    public Function ST_IsSimple(Value geom);
409 43034 jjdelcerro
410 44364 jjdelcerro
    public Function ST_IsValid(Value geom);
411 43020 jjdelcerro
412 44364 jjdelcerro
    public Function ST_NumGeometries(Value geom);
413
414
    public Function ST_NumPoints(Value geom);
415 43020 jjdelcerro
416
    public Function ST_Overlaps(Value geom1, Value geom2);
417
418 44364 jjdelcerro
    public Function ST_Perimeter(Value geom);
419
420
    public Function ST_Point(Value x, Value y);
421
422 44431 jjdelcerro
    public Function ST_MakePoint(Value x, Value y);
423
424
    public Function ST_MakePoint(Value x, Value y, Value z);
425
426
    public Function ST_MakePoint(Value x, Value y, Value z, Value m);
427
428 44364 jjdelcerro
    public Function ST_PointN(Value geom, Value n);
429
430
    public Function ST_SRID(Value geom);
431
432
    public Function ST_SetSRID(Value geom, Value srid);
433
434
    public Function ST_StartPoint(Value geom);
435
436
    public Function ST_Simplify(Value geom, Value tolerance);
437
438 43020 jjdelcerro
    public Function ST_Touches(Value geom1, Value geom2);
439
440 44364 jjdelcerro
    public Function ST_Union(Value geom1, Value geom2);
441
442 43020 jjdelcerro
    public Function ST_Within(Value geom1, Value geom2);
443
444 44364 jjdelcerro
    public Function ST_X(Value geom);
445 44253 jjdelcerro
446 44364 jjdelcerro
    public Function ST_Y(Value geom);
447 44253 jjdelcerro
448 44364 jjdelcerro
    public Function ST_Z(Value geom);
449
450
451 44198 jjdelcerro
    public Function ST_UnionAggregate(Value geom);
452 43020 jjdelcerro
453 44198 jjdelcerro
    public Function ST_ExtentAggregate(Value geom);
454 44364 jjdelcerro
455
456 44198 jjdelcerro
457 43020 jjdelcerro
    public BinaryOperator and(Value op1, Value op2);
458
459 44274 jjdelcerro
    public BinaryOperator and(Expression op1, Expression op2);
460
461
    public BinaryOperator and(Expression op1, Value op2);
462
463 43020 jjdelcerro
    public BinaryOperator or(Value op1, Value op2);
464
465
    public BinaryOperator eq(Value op1, Value op2);
466
467
    public BinaryOperator ne(Value op1, Value op2);
468
469
    public BinaryOperator gt(Value op1, Value op2);
470
471
    public BinaryOperator ge(Value op1, Value op2);
472
473
    public BinaryOperator lt(Value op1, Value op2);
474
475
    public BinaryOperator le(Value op1, Value op2);
476
477
    public BinaryOperator like(Value op1, Value op2);
478
479
    public BinaryOperator ilike(Value op1, Value op2);
480
481
    public BinaryOperator add(Value op1, Value op2);
482
483
    public BinaryOperator subst(Value op1, Value op2);
484
485
    public BinaryOperator mult(Value op1, Value op2);
486
487
    public BinaryOperator div(Value op1, Value op2);
488
489
    public BinaryOperator concat(Value op1, Value op2);
490
491
    public ExpressionBuilder set(Value value);
492 44198 jjdelcerro
493 43020 jjdelcerro
    public ExpressionBuilder and(Value value);
494
495
    public ExpressionBuilder or(Value value);
496
497 44038 jjdelcerro
    public Function iif(Value condition, Value iftrue, Value iffalse);
498
499
    public Function ifnull(Value value, Value iftrue, Value iffalse);
500
501 43020 jjdelcerro
    public ExpressionBuilder createExpressionBuilder();
502 44051 omartinez
503
    public Function left(Value str, Value size);
504
505
    public Function right(Value str, Value len);
506
507
    public Function locate(Value search, Value str, Value start) ;
508
509
    public Function position(Value search, Value str);
510
511
    public Function lpad(Value str, Value len, Value padstr) ;
512
513
    public Function rpad(Value str, Value len, Value padstr);
514
515
    public Function ltrim(Value str);
516
517
    public Function rtrim(Value str);
518
519
    public Function trim(Value str);
520
521
    public Function repeat(Value str, Value size);
522
523
    public Function replace(Value str, Value search, Value replstr);
524
525
    public Function ascii(Value str);
526
527
    public Function lenght(Value str);
528
529
    public Function instr(Value str, Value search, Value start);
530
531
    public Function lower(Value str);
532
533
    public Function upper(Value str);
534
535
    public Function space(Value size);
536
537
    public Function substring(Value str, Value start, Value len);
538
539
    public Function acos(Value num);
540
541
    public Function asin(Value num);
542
543
    public Function atan(Value num);
544
545
    public Function cos(Value num);
546
547
    public Function cosh(Value num);
548
549
    public Function cot(Value num);
550
551
    public Function bitand(Value num1, Value num2);
552
553
    public Function bitor(Value num1, Value num2);
554
555
    public Function bitxor(Value num1, Value num2);
556
557
    public Function ceil(Value num);
558
559
    public Function degrees(Value num);
560
561
    public Function exp(Value num);
562
563
    public Function floor(Value num);
564
565
    public Function log(Value num);
566
567
    public Function log10(Value num);
568
569
    public Function pi(Value num);
570
571
    public Function power(Value num);
572
573
    public Function radians(Value num);
574
575
    public Function rand(Value num);
576
577
    public Function round(Value num);
578
579
    public Function sqrt(Value num);
580
581
    public Function sign(Value num);
582
583
    public Function sin(Value num);
584
585
    public Function sinh(Value num);
586
587
    public Function tan(Value num);
588
589
    public Function tanh(Value num);
590
591
    public Function zero();
592 44054 omartinez
593
    public Function chr(Value num);
594 44198 jjdelcerro
595
    public Function decode(Value value, Value format);
596
597
    public Function cast(Value object, Value typeName);
598
599
    public Function toDouble(Value object);
600
601
    public Function toFloat(Value object);
602
603
    public Function toLong(Value object);
604
605
    public Function toInteger(Value object);
606
607
    public Function toStr(Value object);
608
609 44262 jjdelcerro
    public Function list();
610
611 44376 jjdelcerro
    public Function tuple();
612
613
    public Function tuple(Constant... values);
614
615 44259 jjdelcerro
    public boolean isEmpty();
616 43020 jjdelcerro
}