[Tutor] Embedding Python

K P uncle_wiggly@bigfoot.com
Mon, 20 Mar 2000 13:17:23 -0500


Greetings, after reading the standard extending/embedding 
documents, questions are still plagueing me. Please, could 
someone help.

Here is my situation:

A small sized c++ class wrapping basic (n)curses functions. Here 
is a quick view of the header file(if you feel the source file is needed 
also, please let me know):

class screen
{
  private:
    int myROWS;	//max number of rows(lines) on screen
    int myCOLS;	//max number of columns on screen
    int dispTop;	//top boundary
    int dispBottom;	//bottom boundary
    int dispLeft;	//left boundary
    int dispRight;	//right boundary
    bool hasColours;	//not used, yet
 public:
    screen();
    ~screen();
    void clearScreen();
    void clearLine();
    int getChar();  //used to get keyboard input 
    void update();  //update, or refresh the screen 
    void clearDisplay();    //clears only the display window 
    void moveChar(int row, int col, char c);    //moves cursor to row x 
col and prints c
    void placeCursor(int row, int col); //position cursor at row x col
    void movePlayer(int key, int row, int col, me *);   //used to move 
player, check for boundaries, etc.
    bool checkBoundary(int row, int col);   //upon movement, will 
player collide with boundary(ies)? 
    void addMessage(string);    //insert a message into message bar 
};

This has already been tested with a small c++ program, to verify it 
works. Simply, it allows me to specific a 'window' on screen in 
which the player (specified by a character) can move. When a 
boundary is encountered, a message is printed on screen (via 
addMessage) telling the player what boundary was 'touched'. Still 
with me?

Now, I want to learn to embed Python in this small program. The 
purpose is varied: use Python to control the player, create 
instances of class screen, etc. Finally, my questions:

	From the docs, it seems I have to create wrapper 
classes/functions for my class screen. Is this true?
Can I rather change the class so it can accept direct python 
objects(etc) without use of a wrapper function?
If a wrapper is necessary, can I make the wrapper as a c++ class, 
or must it be standard functions?

If it seems I am totally off-base with these questions ("Did he 
actually read the docs? Or is he jsut saying he did?") Please point 
out my errors. Also, are there good, simple examples of Python 
embedded in a c++ program. Especially a small program with 
source I can study.

Thank you,
Ken