// Copyright (c) 1999-2000 David Muse
// See the COPYING file for more information

#ifndef INTERFACE_H
#define INTERFACE_H

#include <inputoutput.h>
#include <private/formentry.h>

// The interface class enables a single application to have different
// look/feel/layout/functionality depending on the interface applied.

class interface : virtual public inputoutput {
	public:
			interface();
		virtual	~interface();

		void	initInterface(char *site, char *package, 
						char *interface, char *app);
			// Process the 
	// file: /usr/local/web/"site"/"package"/interfaces/"interface"/app.ifc
			// for interface parameters.
			// the file should look like this:
			//
			// attribute1 = "value1"
			// attribute2 = "value2"
			// attribute3 = "value3"
			//
			// If a value must contain a " then it can be escaped
			// with a \.  If a value must contain a \ then it too
			// can be escaped by a \.
			// Values are taken to be anything between the quotes,
			// including carriage returns.

		char	*interfaceEntry(char *name);
			// returns the value of attribute: "name"
		void	writeInterfaceEntry(char *name);
			// writes the value of attribute: "name" to the browser

		void	dumpInterfaceEntries();
			// dumps all attribute/value pairs to the browser

		char	*interfaceFile();
			// returns the full pathname of the interface file

	private:
		#include <private/interface.h>

};

#endif