KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > kawa > standard > IfFeature


1 package kawa.standard;
2 import kawa.lang.*;
3 import gnu.expr.*;
4
5 public class IfFeature
6 {
7   public static boolean testFeature (Object JavaDoc form)
8   {
9     if (form instanceof SyntaxForm)
10       {
11     SyntaxForm sf = (SyntaxForm) form;
12     form = sf.form;
13       }
14     if (form instanceof String JavaDoc)
15       return hasFeature((String JavaDoc) form);
16     return false; // FIXME - return error
17
}
18
19   public static boolean hasFeature (String JavaDoc name)
20   {
21     if (name == "kawa")
22       return true;
23     if (name == "srfi-0") // cond-expand
24
return true;
25     //if (name == "srfi-1") return true; // lists - only if require used.
26
if (name == "srfi-4") // Homogeneous numeric vector datatypes
27
return true;
28     if (name == "srfi-6") // Basic String Ports
29
return true;
30     if (name == "srfi-8") // receive: Binding to multiple values
31
return true;
32     if (name == "srfi-9") // Defining Record Types
33
return true;
34     if (name == "srfi-11") // let-values, let*-values
35
return true;
36     if (name == "srfi-16") // case-lambda
37
return true;
38     if (name == "srfi-17") // Generalized set!
39
return true;
40     if (name == "srfi-23") // Error reporting mechanism
41
return true;
42     if (name == "srfi-25") // Multi-dimensional Array Primitives
43
return true;
44     if (name == "srfi-26") // Notation for Specializing Parameters
45
return true;
46     if (name == "srfi-28") // Basic Format Strings
47
return true;
48     if (name == "srfi-30") // Nested Multi-line Comments.
49
return true;
50     if (name == "srfi-39") // Parameter objects
51
return true;
52
53     String JavaDoc provide_name = ("%provide%"+name).intern();
54     Compilation comp = Compilation.getCurrent();
55     Declaration decl = comp.lookup(provide_name, -1);
56     if (decl!=null && ! decl.getFlag(Declaration.IS_UNKNOWN))
57       return true;
58     return false;
59   }
60 }
61
Popular Tags