| package jp.ac.kobe_u.cs.prolog.lang; |
| import java.io.Serializable; |
| /** |
| * Prolog class loader. |
| * |
| * @author Mutsunori Banbara (banbara@kobe-u.ac.jp) |
| * @author Naoyuki Tamura (tamura@kobe-u.ac.jp) |
| * @version 1.1 |
| */ |
| public class PrologClassLoader extends ClassLoader implements Serializable { |
| |
| /** |
| * Returns a <code>java.lang.Class</code> object associated with the predicate |
| * class with the given arguments. |
| * @param pkg package name |
| * @param functor predicate name |
| * @param arity predicate arity |
| * @param resolve If <code>true</code> then resolve the class |
| * @return a <code>java.lang.Class</code> object associated with the predicate |
| * class that corresponds to <code>pkg:functor/arity</code> |
| * if exists, otherwise throws <code>ClassNotFoundException</code>. |
| * @exception ClassNotFoundException |
| */ |
| public Class loadPredicateClass(String pkg, |
| String functor, |
| int arity, |
| boolean resolve) throws ClassNotFoundException { |
| return loadClass(PredicateEncoder.encode(pkg, functor, arity), resolve); |
| } |
| |
| /** |
| * Check whether the predicate class for the given arguments is defined. |
| * @param pkg package name |
| * @param functor predicate name |
| * @param arity predicate arity |
| * @return <code>true</code> if the predicate <code>pkg:functor/arity</code> |
| * is defined, otherwise <code>false</code>. |
| */ |
| public boolean definedPredicate(String pkg, |
| String functor, |
| int arity) { |
| String cname = PredicateEncoder.encode(pkg, functor, arity); |
| cname = cname.replace('.', '/') + ".class"; |
| java.net.URL url = getResource(cname); |
| return url != null; |
| } |
| |
| public Class findClass(String name) throws ClassNotFoundException { |
| throw new ClassNotFoundException(); |
| } |
| } |