//
// aegis - project change supervisor
// Copyright (C) 2002, 2004-2006, 2008 Peter Miller
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see
// .
//
#ifndef AECOMPLETE_SHELL_H
#define AECOMPLETE_SHELL_H
#include
struct shell_ty
{
struct shell_vtbl_ty *vptr;
};
struct string_list_ty; // forward
/**
* The shell_find function is used to determine which shell invoked
* the aecomplete command, so that the appropriate responses may be made.
*
* If the shell cannot be determined, this function will exit with
* a fatal error. This function will only return if the shell can
* be determined.
*/
shell_ty *shell_find(void);
/**
* The shell_command_get function is used to get the name of the command
* being completed.
*/
string_ty *shell_command_get(shell_ty *);
/**
* The shell_prefix_get function is used to fetch the incomplete word
* (prefix) to be completed.
*/
string_ty *shell_prefix_get(shell_ty *);
/**
* The shell_test function is used to determine whether the environment
* matches that required for the use of thus shell. Returns zero
* on failure.
*
* Success is messier. It parses the command line, and then re-creates
* the command line being completed, before returning non-zero.
*/
int shell_test(shell_ty *);
/**
* The shell_delete function is used when you have finished wioth
* a shell, It is important to call it, so that any shell-specific
* wrap-up can be performed.
*/
void shell_delete(shell_ty *);
/**
* The shell_emit function is used to emit a completion candidate in
* the format required by the given shell.
*/
void shell_emit(shell_ty *, string_ty *);
/**
* The shell_emit_file_list function is used to emit a list of files
* names. It will be carefully culled to only print names up to the
* slash following the longest common prefix.
*/
void shell_emit_file_list(shell_ty *, struct string_list_ty *);
#endif // AECOMPLETE_SHELL_H