1 package kawa.standard; 2 import kawa.lang.*; 3 import gnu.expr.*; 4 5 public class IfFeature 6 { 7 public static boolean testFeature (Object form) 8 { 9 if (form instanceof SyntaxForm) 10 { 11 SyntaxForm sf = (SyntaxForm) form; 12 form = sf.form; 13 } 14 if (form instanceof String ) 15 return hasFeature((String ) form); 16 return false; } 18 19 public static boolean hasFeature (String name) 20 { 21 if (name == "kawa") 22 return true; 23 if (name == "srfi-0") return true; 25 if (name == "srfi-4") return true; 28 if (name == "srfi-6") return true; 30 if (name == "srfi-8") return true; 32 if (name == "srfi-9") return true; 34 if (name == "srfi-11") return true; 36 if (name == "srfi-16") return true; 38 if (name == "srfi-17") return true; 40 if (name == "srfi-23") return true; 42 if (name == "srfi-25") return true; 44 if (name == "srfi-26") return true; 46 if (name == "srfi-28") return true; 48 if (name == "srfi-30") return true; 50 if (name == "srfi-39") return true; 52 53 String 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 |