# python commands

import sys
# import collections

# generated by swig
import yap

# make sure Python knows about engine
engine = None

# Mappings between functors and types
#
# they are used  to have the same type f1or several occurences
# of the same functor, and to ensure that an object is indeed
# a Prolog compound term.
#
dictF2P = {}


class A:
    """Represents a non-interned Prolog atom"""
    def __init__(self, s):
        self.a = s

    def __repr__(self):
        return "A(" + self.a + ")"

    def __str__(self):
        return self.a


class V:
    """Wraps a term, or a reference to a logical variables"""
    def __init__(self, t):
        print(type(t))
        self.v = t

    def __repr__(self):
        return "V(" + str(self.v) + ")"

    def __str__(self):
        return engine.getTerm(self.v).text()

    def handle(self):
        return self.v