All Packages Class Hierarchy This Package Previous Next Index
Class prolog.PrologGoal
java.lang.Object
|
+----prolog.PrologGoal
- public class PrologGoal
- extends Object
- implements Serializable
Représente un but (ou prédicat) Prolog avec toutes les fonctions
permettant de récupérer et de modifier les termes qui appartiennent
à ce but.
Attention, lors de l'appel d'une fonction Java depuis Prolog,
il ne faut jamais modifier l'arité du
prédicat reçu. Le prédicat renvoyé à Prolog
doit avoir la même arité que le prédicat qui avait
été envoyé par Prolog.
- Version:
- 1.0 -- Last update : 22/09/97
- Author:
- Stéphane CABAGNO -- Copyright © 1997 PrologIA
- See Also:
- PrologTerm, PrologDot, PrologFloat, PrologFunctor, PrologIdent, PrologInt, PrologNil, PrologRat, PrologString, PrologVar, PrologGoalException, PrologException
-
PrologGoal()
- Construit un nouveau but Prolog.
-
PrologGoal(PrologGoal)
- Construit un nouveau but Prolog à partir d'un autre but Prolog.
-
PrologGoal(String)
- Construit un nouveau but Prolog de nom donné.
-
clone()
- Retourne l'objet représentant le but Prolog.
-
getAllTerms()
- Retourne le vecteur contenant les termes du but.
-
getArite()
- Retourne l'arité du but Prolog.
-
getError()
- Retourne le numéro d'erreur du but (0 indique qu'il n'y a pas
d'erreur).
-
getName()
- Retourne le nom du but.
-
getTerm(int)
- Renvoie le terme se trouvant à la position voulue.
-
getType()
- Retourne le type du but.
-
initialise()
- Cette méthode permet d'initialiser le but Prolog à exécuter
depuis JAVA.
-
nextSolution()
- Demande à Prolog la prochaine solution du prédicat.
-
prologConnection(String, int, int, int)
- Ouvre une socket entre le programme et le serveur Java dans le but
de lancer un prédicat Prolog depuis Java.
-
prologDeconnection()
- Déconnecte Prolog et le programme Java du serveur Java.
-
putTerm(int, PrologTerm)
- Insère un terme à la position voulue dans le but.
-
putTerm(PrologTerm)
- Insère un terme à la dernière position dans le but.
-
readIn(DataInputStream)
- Lit dans le flot d'entrée le code représentant le but Prolog.
-
readJavaIn(DataInputStream)
- Lit dans le flot d'entrée le code représentant le but Prolog.
-
setAllTerms(Vector)
- Remplace la totalité des termes du but par les termes donnés.
-
setArite(int)
- Modifie l'arité du prédicat.
-
setError(int)
- Met à jour le numéro d'erreur du prédicat.
-
setName(String)
- Modifie le nom du but.
-
setTerm(int, PrologTerm)
- Remplace le terme à la position voulue dans le but.
-
setType(byte)
- Modifie le type du but.
-
stopGoal()
- Cette méthode permet de stopper l'exécution du but avant qu'il
n'y ait plus de solutions.
-
toString()
- Retourne la représentation du but Prolog sous forme de chaîne.
-
writeIn(DataOutputStream)
- Ecrit dans le flot de sortie le code représentant le but Prolog.
-
writeJavaIn(DataOutputStream)
- Ecrit dans le flot de sortie le code représentant le but Prolog.
PrologGoal
public PrologGoal()
- Construit un nouveau but Prolog.
PrologGoal
public PrologGoal(PrologGoal theGoal)
- Construit un nouveau but Prolog à partir d'un autre but Prolog.
- Parameters:
- theGoal - le but à recopier
PrologGoal
public PrologGoal(String theName)
- Construit un nouveau but Prolog de nom donné.
Il est préférable d'utilisé ce constructeur uniquement dans
le cas de l'appel d'un but Prolog depuis JAVA.
- Parameters:
- theName - le nom du but
getTerm
public PrologTerm getTerm(int position)
- Renvoie le terme se trouvant à la position voulue.
- Parameters:
- position - position du terme dans le but
- Returns:
- le terme à la position demandée
getAllTerms
public Vector getAllTerms()
- Retourne le vecteur contenant les termes du but.
- Returns:
- le vecteur contenant les termes du but
getName
public String getName()
- Retourne le nom du but.
- Returns:
- le nom (ou étiquette) du but
getType
public byte getType()
- Retourne le type du but.
Les différents types possibles sont les suivants :
- '#' : appel d'un prédicat Java depuis Prolog
- 'S' : sélection dans une base de données
- 'M' : modification d'une base de données
- 'P' : exécution d'un but Prolog II+ depuis Java
- Returns:
- le type du but
getArite
public int getArite()
- Retourne l'arité du but Prolog.
- Returns:
- l'arité du but Prolog
getError
public int getError()
- Retourne le numéro d'erreur du but (0 indique qu'il n'y a pas
d'erreur).
Attention, il est important de choisir des numéros d'erreur
supérieurs à 1000.
- Returns:
- le numéro d'erreur du prédicat
setType
public void setType(byte theType)
- Modifie le type du but.
- Parameters:
- theType - le nouveau type du but
setName
public void setName(String theName)
- Modifie le nom du but.
- Parameters:
- theName - le nouveau nom du but
setArite
public void setArite(int theArite)
- Modifie l'arité du prédicat.
- Parameters:
- theArite - la nouvelle arité du prédicat
setTerm
public void setTerm(int position,
PrologTerm theTerm)
- Remplace le terme à la position voulue dans le but.
- Parameters:
- position - position du terme qui doit être remplacé
- theTerm - le nouveau terme Prolog
setAllTerms
public void setAllTerms(Vector theTerms)
- Remplace la totalité des termes du but par les termes donnés.
- Parameters:
- theTerms - le vecteur contenant tous les nouveaux termes
setError
public void setError(int theErrno)
- Met à jour le numéro d'erreur du prédicat.
Attention, il est important de choisir des numéros d'erreur
supérieurs à 1000.
- Parameters:
- theErrno - le numéro d'erreur du prédicat
putTerm
public void putTerm(int position,
PrologTerm theTerm)
- Insère un terme à la position voulue dans le but.
- Parameters:
- position - position à laquelle le terme doit être placé
- theTerm - le terme Prolog que l'on veut rajouter dans le but
- See Also:
- putTerm
putTerm
public void putTerm(PrologTerm theTerm)
- Insère un terme à la dernière position dans le but.
- Parameters:
- theTerm - le terme Prolog que l'on veut rajouter dans le but
- See Also:
- putTerm
clone
public Object clone()
- Retourne l'objet représentant le but Prolog.
- Returns:
- l'objet représentant le but Prolog
- Overrides:
- clone in class Object
toString
public String toString()
- Retourne la représentation du but Prolog sous forme de chaîne.
- Returns:
- la représentation du but Prolog sous forme de chaîne
- Overrides:
- toString in class Object
prologConnection
public static int prologConnection(String serverAddress,
int order,
int secondaryPort,
int serverTimeOut) throws UnknownHostException, SocketException, EOFException, IOException
- Ouvre une socket entre le programme et le serveur Java dans le but
de lancer un prédicat Prolog depuis Java.
Deux cas peuvent se présenter :
- le programme Java est lancé en premier : dans ce cas, le
paramètre
order
doit être positionné à
1
et le paramètre secondaryPort
sera
le port sur lequel le serveur attendra une connexion de Prolog II+.
- le programme Java est lancé en second (après Prolog) : dans
ce cas, le paramètre
order
doit être
positionné à 2
et le paramètre
secondaryPort
sera utilisé pour le transfert de
données entre le programme Java et le serveur.
- Parameters:
- serverAddress - l'adresse du serveur JAVA
- order - entier qui donne l'ordre de lancement du programme Java,
1
si c'est le premier à être lancé ( = avant
Prolog) et 2
si le programme Java est lancé après
Prolog.
- secondaryPort - port utilisé par le second programme pour se
connecter au serveur (soit Prolog II+, soit le programme Java)
- serverTimeOut - temps pendant lequel le serveur Java va attendre que
Prolog II+ se connecte (ce paramètre n'est pris en compte que dans le
cas où le paramètre
order
est positionné
à 1
)
- Returns:
- 0 si la connexion s'est effectuée sans problème,
1 si le programme est déjà connecté au serveur
Java,
2 si Prolog a renvoyé une erreur lors de la connexion,
3 si l'argument order
n'est pas correct.
- Throws: UnknownHostException
- si l'hôte est inconnu
- Throws: SocketException
- si une erreur de socket est apparue
- Throws: EOFException
- si on veut lire dans la socket alors qu'on
est à la fin du flux d'entrée
- Throws: IOException
- si une erreur de lecture ou d'écriture
s'est produite
initialise
public int initialise() throws EOFException, IOException
- Cette méthode permet d'initialiser le but Prolog à exécuter
depuis JAVA.
Cette méthode ne récupère pas les solutions. Pour cela, il
faut utiliser la méthode
nextSolution.
- Returns:
- 0 si l'initialisation du but s'est déroulée
correctement,
1 si la connexion n'a pas été effectuée auparavant
(méthode
prologConnection),
2 si Prolog a renvoyé une erreur lors de l'initialisation du
but,
3 si un but est déjà actif (et qu'il n'a pas
été stoppé).
- Throws: EOFException
- si on veut lire dans le flux d'entrée
alors qu'on est à la fin de celui-ci
- Throws: IOException
- si on a une erreur de lecture ou
d'écriture
- See Also:
- nextSolution, stopGoal, prologDeconnection
nextSolution
public PrologDot nextSolution() throws PrologException, IOException
- Demande à Prolog la prochaine solution du prédicat.
Le but Prolog doit d'abord avoir été initialisé avec la
méthode initialise.
Lorsqu'il n'y a plus de solutions, cette méthode stoppe le but et
renvoie la valeur null
(il est donc inutile d'utiliser la
méthode stopGoal s'il
n'y a plus de solutions).
- Returns:
- la liste des résultats du prédicat.
Cette liste
comporte un nombre d'arguments égal au nombre de variables du
prédicat de départ.
Si la valeur rendue est
null
, c'est qu'il n'y a plus de solutions.
- Throws: PrologException
- si une erreur s'est produite en
cherchant la prochaine solution
- Throws: IOException
- si on a une erreur de lecture ou
d'écriture
stopGoal
public int stopGoal() throws IOException
- Cette méthode permet de stopper l'exécution du but avant qu'il
n'y ait plus de solutions.
- Returns:
- 0 si l'arrêt du but s'est bien passé,
1 si la connexion n'a pas été effectuée
auparavant,
2 si Prolog a renvoyé une erreur en voulant stopper le
but,
3 si le but a déjà été stoppé.
- Throws: IOException
- si on a une erreur de lecture ou
d'écriture
prologDeconnection
public static int prologDeconnection() throws IOException
- Déconnecte Prolog et le programme Java du serveur Java.
- Returns:
- 0 si la déconnexion a été effectuée avec
succès,
1 si le programme était déjà
déconnecté,
2 si Prolog a renvoyé une erreur lors de la déconnexion.
- Throws: IOException
- si on a une erreur de lecture ou
d'écriture
writeIn
public void writeIn(DataOutputStream out) throws EOFException, IOException
- Ecrit dans le flot de sortie le code représentant le but Prolog.
Remarque :
Les méthodes writeIn
et readIn
sont
utilisées pour transférer des données entre le serveur Java
et Prolog alors que les méthodes writeJavaIn
et
readJavaIn
sont utilisées pour transférer des
données entre le serveur Java et un autre programme Java.
En fait, seuls les termes du but Prolog sont transcrits (l'arité
et l'étiquette du but étant déjà connues).
Contrairement à la lecture d'un but, son écriture ne
transmet aucun en-tête à Prolog. L'en-tête est en effet
envoyé à Prolog au niveau supérieur (dans la classe
Connect.java
).
- Parameters:
- out - le flot dans lequel on veut écrire
- Throws: EOFException
- si on veut écrire alors qu'on est
à la fin du flux de sortie
- Throws: IOException
- si on a une erreur d'écriture
- See Also:
- readIn, readJavaIn, writeJavaIn
writeJavaIn
public void writeJavaIn(DataOutputStream out) throws EOFException, IOException
- Ecrit dans le flot de sortie le code représentant le but Prolog.
Remarque :
Les méthodes writeIn
et readIn
sont
utilisées pour transférer des données entre le serveur Java
et Prolog alors que les méthodes writeJavaIn
et
readJavaIn
sont utilisées pour transférer des
données entre le serveur Java et un autre programme Java.
- Parameters:
- out - le flot dans lequel on veut écrire
- Throws: EOFException
- si on veut écrire alors qu'on est
à la fin du flux de sortie
- Throws: IOException
- si on a une erreur d'écriture
- See Also:
- readIn, readJavaIn, writeIn
readIn
public void readIn(DataInputStream in) throws EOFException, IOException
- Lit dans le flot d'entrée le code représentant le but Prolog.
Remarque :
Les méthodes writeIn
et readIn
sont
utilisées pour transférer des données entre le serveur Java
et Prolog alors que les méthodes writeJavaIn
et
readJavaIn
sont utilisées pour transférer des
données entre le serveur Java et un autre programme Java.
Contrairement à l'écriture d'un but, la lecture d'un but
donne lieu à la lecture d'un en-tête de la forme suivante :
CPXnom_du_predicat#arite
où X représente le type du but Prolog dont
voici les différentes valeurs possibles :
- #
- Appel de Java depuis Prolog
- M
- Modification d'une base de données
- S
- Sélection dans une base de données
- P
- Appel d'un but Prolog II+ depuis Java
- Parameters:
- in - le flot dans lequel on veut lire
- Throws: EOFException
- si on veut lire alors qu'on est à la
fin du flux d'entrée
- Throws: IOException
- si on a une erreur de lecture
- See Also:
- writeIn, writeJavaIn, readJavaIn
readJavaIn
public void readJavaIn(DataInputStream in) throws EOFException, IOException
- Lit dans le flot d'entrée le code représentant le but Prolog.
Remarque :
Les méthodes writeIn
et readIn
sont
utilisées pour transférer des données entre le serveur Java
et Prolog alors que les méthodes writeJavaIn
et
readJavaIn
sont utilisées pour transférer des
données entre le serveur Java et un autre programme Java.
- Parameters:
- in - le flot dans lequel on veut lire
- Throws: EOFException
- si on veut lire alors qu'on est à la
fin du flux d'entrée
- Throws: IOException
- si on a une erreur de lecture
- See Also:
- writeIn, writeJavaIn, readIn
All Packages Class Hierarchy This Package Previous Next Index