Thread: Consulting a Prolog file from within a C++ solution file

  1. #1
    Registered User
    Join Date
    Mar 2010
    Posts
    26

    Consulting a Prolog file from within a C++ solution file

    I have a Prolog file (Hanoi.pl) containing the code for solving the Hanoi Towers puzzle:

    hanoi( N ):-
    move( N, left, middle, right ).

    move( 0, _, _, _ ):-
    !.

    move( N, A, B, C ):-
    M is N-1,
    move( M, A, C, B ),
    inform( A, B ),
    move( M, C, B, A ).

    inform( X, Y ):-
    write( 'move a disk from ' ),
    write( X ),
    write( ' to ' ),
    writeln( Y ).

    I also have a C++ file written in VS2008 IDE:

    #include <iostream>
    #include <string>
    #include <stdio.h>
    #include <stdlib.h>
    using namespace std;
    #include "SWI-cpp.h"
    #include "SWI-Prolog.h"

    predicate_t phanoi;
    term_t t0;

    int main(int argc, char** argv)
    {
    long n = 5;
    int rval;

    if ( !PL_initialise(1, argv) )
    PL_halt(1);

    PL_put_integer( t0, n );

    phanoi = PL_predicate( "hanoi", 1, NULL );

    rval = PL_call_predicate( NULL, PL_Q_NORMAL, phanoi, t0 );

    system( "PAUSE" );
    }

    How can I consult my Prolog source code (Hanoi.pl) from within my C++ code? Not from the Command Prompt - from the code, something like include or consult or compile? It is located in the same folder as my cpp file.

    Thanks,

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,660
    What do you mean 'consult' ?

    It's just a regular text file isn't it?
    You just load it as if you were loading a .txt file

    File->Open File...
    Show all file types.
    select the .pl file.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #3
    Registered User
    Join Date
    Mar 2010
    Posts
    26
    By 'consult' I mean compiling my Prolog program.

    The program return something when you type in, say, hanoi(5).



    hanoi( N ):-
    move( N, left, middle, right ).

    move( 0, _, _, _ ):-
    !.
    move( N, A, B, C ):-
    M is N-1,
    move( M, A, C, B ),
    inform( A, B ),
    move( M, C, B, A ).

    inform( X, Y ):-
    write( 'move a disk from ' ),
    write( X ),
    write( ' to ' ),
    writeln( Y ).


    I wanna make this call from within my C++ program:


    #include "SWI-cpp.h"
    #include "SWI-Prolog.h"

    predicate_t phanoi;
    term_t t0;

    int main(int argc, char** argv)
    {
    long n = 5;
    int rval;

    PL_put_integer( t0, n );

    phanoi = PL_predicate( "hanoi", 1, NULL );

    rval = PL_call_predicate( NULL, PL_Q_NORMAL, phanoi, t0 );
    }


    How can I consult my Prolog source code from within VS2008?

    What should I add to the above C++ code in order to 'read' my Prolog program, pass the integer 5 to it, get the result of hanoi(5), and pass it back to C++ for processing (e.g. writing to console, etc...)

    Thanks Salem,

  4. #4
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,660
    We've done all this in all your other prolog/c++ threads.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Problems passing a file pointer to functions
    By smitchell in forum C Programming
    Replies: 4
    Last Post: 09-30-2008, 02:29 PM
  2. sequential file program
    By needhelpbad in forum C Programming
    Replies: 80
    Last Post: 06-08-2008, 01:04 PM
  3. To find the memory leaks without using any tools
    By asadullah in forum C Programming
    Replies: 2
    Last Post: 05-12-2008, 07:54 AM
  4. archive format
    By Nor in forum A Brief History of Cprogramming.com
    Replies: 0
    Last Post: 08-05-2003, 07:01 PM
  5. Making a LIB file from a DEF file for a DLL
    By JMPACS in forum C++ Programming
    Replies: 0
    Last Post: 08-02-2003, 08:19 PM

Tags for this Thread