be83a4a309
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1120 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
200 lines
7.2 KiB
Java
200 lines
7.2 KiB
Java
//tabstop=4
|
|
//*****************************************************************************/
|
|
// Project: jpl
|
|
//
|
|
// File: $Id: JPL.java,v 1.1 2004-08-27 20:27:56 vsc Exp $
|
|
// Date: $Date: 2004-08-27 20:27:56 $
|
|
// Author: Fred Dushin <fadushin@syr.edu>
|
|
//
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// -------------------------------------------------------------------------
|
|
// Copyright (c) 2004 Paul Singleton
|
|
// Copyright (c) 1998 Fred Dushin
|
|
// All rights reserved.
|
|
//
|
|
// This library is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU Library Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your option) any later version.
|
|
//
|
|
// This library is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Library Public License for more details.
|
|
//*****************************************************************************/
|
|
package jpl;
|
|
|
|
import jpl.fli.Prolog;
|
|
|
|
//----------------------------------------------------------------------/
|
|
// JPL
|
|
/**
|
|
* The jpl.JPL class contains methods which allow (i) inspection and alteration
|
|
* of the "default" initialisation arguments (ii) explicit initialisation
|
|
* (iii) discovery of whether the Prolog engine is already initialised,
|
|
* and if so, with what arguments.
|
|
* The Prolog engine must be initialized
|
|
* before any queries are made, but this will happen automatically
|
|
* (upon the first call to a Prolog FLI routine) if it has not already
|
|
* been done explicitly.
|
|
*
|
|
* <hr><i>
|
|
* Copyright (C) 2004 Paul Singleton<p>
|
|
* Copyright (C) 1998 Fred Dushin<p>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.<p>
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Library Public License for more details.<p>
|
|
* </i><hr>
|
|
* @author Fred Dushin <fadushin@syr.edu>
|
|
* @version $Revision: 1.1 $
|
|
*/
|
|
public class JPL {
|
|
protected static final boolean DEBUG = false;
|
|
|
|
protected static boolean modeDontTellMe = true;
|
|
|
|
//------------------------------------------------------------------/
|
|
// setDTMMode
|
|
/**
|
|
* Sets the global "dont-tell-me" mode (default value: true).
|
|
* When 'true', bindings will *not* be returned for any variable (in a Query's goal)
|
|
* whose name begins with an underscore character (except for "anonymous" variables,
|
|
* i.e. those whose name comprises just the underscore character, whose bindings are never returned).
|
|
* When 'false', bindings are returned for *all* variables except anonymous ones;
|
|
* this mode may be useful when traditional top-level interpreter behaviour is wanted,
|
|
* e.g. in a Java-based Prolog IDE or debugger.<p>
|
|
* This method should be regarded as experimental, and may subsequently be deprecated
|
|
* in favour of some more general mechanism for setting options, perhaps per-Query and
|
|
* per-call as well as globally.
|
|
*
|
|
* @param dtm new "dont-tell-me" mode value
|
|
*/
|
|
public static void setDTMMode( boolean dtm){
|
|
modeDontTellMe = dtm;
|
|
}
|
|
|
|
//------------------------------------------------------------------/
|
|
// getDefaultInitArgs
|
|
/**
|
|
* Returns, in an array of String, the sequence of command-line
|
|
* arguments that would be used if the Prolog engine were to be initialised now.
|
|
* Returns null if the Prolog VM has already been initialised (in which
|
|
* case the default init args are irrelevant and the actual init args are of interest)<p>
|
|
*
|
|
* @see jpl.JPL#getActualInitArgs
|
|
* @return current default initialisation arguments, or null if already initialised
|
|
*/
|
|
public static String[] getDefaultInitArgs() {
|
|
return Prolog.get_default_init_args();
|
|
}
|
|
|
|
//------------------------------------------------------------------/
|
|
// setDefaultInitArgs
|
|
/**
|
|
* Specifies, in an array of String, the sequence of command-line
|
|
* arguments that should be used if the Prolog engine is subsequently initialised.<p>
|
|
*
|
|
* @param args new default initialization arguments
|
|
*/
|
|
public static void setDefaultInitArgs(String[] args) {
|
|
Prolog.set_default_init_args(args);
|
|
}
|
|
|
|
//------------------------------------------------------------------/
|
|
// getActualInitArgs
|
|
/**
|
|
* Returns, in an array of String, the sequence of command-line
|
|
* arguments that were actually used when the Prolog engine was formerly initialised.
|
|
*
|
|
* This method returns null if the Prolog engine has not yet been initialised,
|
|
* and thus may be used to test this condition.
|
|
*
|
|
* @return actual initialization arguments
|
|
*/
|
|
public static String[] getActualInitArgs() {
|
|
return Prolog.get_actual_init_args();
|
|
}
|
|
|
|
//------------------------------------------------------------------/
|
|
// init
|
|
/**
|
|
* Initializes the Prolog engine, using the String argument
|
|
* parameters passed. This method need be called only if you want to both
|
|
* (i) initialise the Prolog engine with parameters other than the default ones
|
|
* and (ii) force initialisation to occur
|
|
* (rather than allow it to occur automatically at the first query).
|
|
* For parameter options, consult your local
|
|
* Prolog documentation. The parameter values are passed directly
|
|
* to initialization routines for the Prolog environment.<p>
|
|
*
|
|
* This method must be called before making any queries.
|
|
*
|
|
* @param args Initialization parameter list
|
|
*/
|
|
public static boolean init(String[] args) {
|
|
return Prolog.set_default_init_args(args) && init();
|
|
}
|
|
|
|
//------------------------------------------------------------------/
|
|
// init
|
|
/**
|
|
* Initialises the Prolog engine using the current default initialisation parameters,
|
|
* and returns 'true' (or 'false' if already initialised).
|
|
*/
|
|
public static boolean init() {
|
|
return Prolog.initialise();
|
|
}
|
|
|
|
//------------------------------------------------------------------/
|
|
// halt
|
|
/**
|
|
* Terminates the Prolog session.<p>
|
|
*
|
|
* <b>Note.</b> This method calls the FLI halt() method with a
|
|
* status of 0, but the halt method currently is a no-op in SWI.
|
|
* @deprecated
|
|
*/
|
|
public static void halt() {
|
|
Prolog.halt(0);
|
|
}
|
|
|
|
// a static reference to the current Version
|
|
private static final Version version_ = new Version();
|
|
|
|
//------------------------------------------------------------------/
|
|
// version
|
|
/**
|
|
* Returns (as a Version) an identification of this version of JPL.
|
|
* @return the running version of JPL.
|
|
*/
|
|
public static Version version() {
|
|
return version_;
|
|
}
|
|
|
|
//------------------------------------------------------------------/
|
|
// version_string
|
|
/**
|
|
* Returns a String (eg "3.0.0-alpha") identifying this version of JPL.
|
|
* @return a String (eg "3.0.0-alpha") identifying this version of JPL.
|
|
*/
|
|
public static String version_string() {
|
|
return version_.major + "." + version_.minor + "." + version_.patch + "-" + version_.status;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
System.out.println(version_string());
|
|
}
|
|
}
|
|
|
|
//345678901234567890123456789012346578901234567890123456789012345678901234567890
|