-/* Declaration of opaque rote_Term_Private structure */
-typedef struct RoteTermPrivate_ RoteTermPrivate;
-
-/* Represents a virtual terminal. You may directly access the fields
- * of this structure, but please pay close attention to the fields
- * marked read-only or with special usage notes. */
-typedef struct RoteTerm_ {
- int rows, cols; /* terminal dimensions, READ-ONLY. You
- * can't resize the terminal by changing
- * this (a segfault is about all you will
- * accomplish). */
-
- RoteCell **cells; /* matrix of cells. This
- * matrix is indexed as cell[row][column]
- * where 0 <= row < rows and
- * 0 <= col < cols
- *
- * You may freely modify the contents of
- * the cells.
- */
-
- int crow, ccol; /* cursor coordinates. READ-ONLY. */
-
- uint8_t curattr; /* current attribute, that is the attribute
- * that will be used for newly inserted
- * characters */
-
- int pty; /* pty of the process */
- pid_t childpid; /* pid of the child process running in the
- * terminal; 0 for none. This is READ-ONLY. */
-
- RoteTermPrivate *pd; /* private state data */
-
- unsigned insert : 1; /* insert or replace mode */
-
- /* --- dirtiness flags: the following flags will be raised when the
- * corresponding items are modified. They can only be unset by YOU
- * (when, for example, you redraw the term or something) --- */
- unsigned curpos_dirty : 1; /* whether cursor location has changed */
- bool *line_dirty; /* whether each row is dirty */
- /* --- end dirtiness flags */
-} RoteTerm;
-
-/* Creates a new virtual terminal with the given dimensions. You
- * must destroy it with rote_vt_destroy after you are done with it.
- * The terminal will be initially blank and the cursor will
- * be at the top-left corner.
- *
- * Returns NULL on error.
- */
-RoteTerm *rote_vt_create(int rows, int cols);
-
-/* Destroys a virtual terminal previously created with
- * rote_vt_create. If rt == NULL, does nothing. */
-void rote_vt_destroy(RoteTerm *rt);
-
-/* Starts a forked process in the terminal. The <command> parameter
- * is a shell command to execute (it will be interpreted by '/bin/sh -c')
- * Returns the pid of the forked process.
- *
- * Some useful reminders: If you want to be notified when child processes exit,
- * you should handle the SIGCHLD signal. If, on the other hand, you want to
- * ignore exitting child processes, you should set the SIGCHLD handler to
- * SIG_IGN to prevent child processes from hanging around the system as 'zombie
- * processes'.
- *
- * Continuing to write to a RoteTerm whose child process has died does not
- * accomplish a lot, but is not an error and should not cause your program
- * to crash or block indefinitely or anything of that sort :-)
- * If, however, you want to be tidy and inform the RoteTerm that its
- * child has died, call rote_vt_forsake_child when appropriate.
- *
- * If there is an error, returns -1. Notice that passing an invalid
- * command will not cause an error at this level: the shell will try
- * to execute the command and will exit with status 127. You can catch
- * that by installing a SIGCHLD handler if you want.
- */
-pid_t rote_vt_forkpty(RoteTerm *rt, const char *path, const char *argv[]);