#ifndef SDI_PROTOS_H
#define SDI_PROTOS_H

#include "SDI_structures.h"
#include <dos/dos.h>

/* Includeheader

	Name:		SDI_protos
	Versionstring:	$VER: SDI_protos.h 1.13 (20.07.96)
	Author:		SDI
	Distribution:	PD
	Description:	Prototypen der SDI_funcs

 1.0	: aus ...SDI.h Files aufgebaut
 1.1	: veränderte Protos ergänzt
 1.4	: PutNum neu, Aufbau geändert:
	/ * - Zeile: Beschreibung,
	/ P - Zeile: Parameterwerte und -sinn,
	/ R - Zeile: Rückgabewerte
 1.5	: GetLength jetzt unsigned long
 1.6	: FileReq dazu
 1.7	: SDI_defines Aufruf raus
 1.8   03.10.95 : Ausgabe verändert, BreakPoint ergänzt
 1.9   15.10.95 : alle Variablen jetzt nach exec/types.h
 1.10  14.01.96 : BreakPoint jetzt void
 1.11  04.02.96 : GetPufferSize neu
 1.12  13.04.96 : Versionsstring in Header
 1.13  20.07.96 : strcmpNS entfernt
*/

/* ============================= Prototypen ============================= */

void Ausgabe(struct SDI_InOut *, ULONG);
	/* Schreibt den gefüllten Puffer in Datei
	/P Zeiger auf IO-Sruktur des Schreibspeichers,
	/P zurückzuhaltende Zeichen */
void BreakPoint(STRPTR, UBYTE);
	/* Setzt einen Breakpoint zum Debuggen, CTRL_C bricht Programm ab
	/P Auszugebender Text, 'D', 'E', 'F' für die Breakpoints */
void Eingabe(struct SDI_InOut *);
        /* Füllt den Puffer aus Datei
	/P Zeiger auf IO-Struktur des Lesespeichers */
STRPTR FileReq(STRPTR, ULONG, ULONG, STRPTR);
	/* Öffnet FileRequester und verbindet die zwei Strinds miteinander
	/P Pfadzeichenkette, deren Größe, Modus (Load/Save), Titel
	/R Zeiger auf FileTeil des Strings */
void Free(struct SDI_InOut *);
	/* Gibt den Puffer wieder frei
	/P Zeiger auf IO-Struktur des Puffers */
ULONG GetCharHEX(STRPTR, UWORD *);
	/* Wandelt HEX-char in ASCII um (fremde Zeichen werden ignoriert, ?
	   wird als PATTERN_BACK übergeben)
	/P Zeichenkette des HEX-char, Zeichenkette für ASCII-Zeichen
	/R Länge der Rückgabezeichenkette */
ULONG GetCharSTRING(STRPTR, UWORD *);
	/* Wandelt Zeichenkette um : \? zu PATTERN_BACK und \\ zu \
	/P Zeichenkette, Rückgabezeichenkette
	/R Länge der Rückgabezeichenkette */
ULONG GetLength (STRPTR);
	/* Erfragt Länge einer Datei
	/P Dateiname
	/R Dateilänge oder 0 bei Fehler */
ULONG GetPuffer(struct SDI_InOut *);
	/* Allociert Puffer für IO-Struktur
	/P Zeiger auf IO-Struktur
	/R Puffergröße oder 0 bei Fehler */
void  GetPufferSize(struct SDI_InOut *, ULONG);
	/* Bestimmt Puffergöße für IO-Struktur
	/P Zeiger auf IO-Struktur, Größe der Datei */
UBYTE Oeffnen(STRPTR, STRPTR, STRPTR, struct SDI_InOut *, struct SDI_InOut *);
	/* Öffnen Ein- und Ausgabedatei, Allociert Puffer
	/P Quelldateiname, Zieldateiname, Extension, Zeiger auf Eingabe-
	/P Struktur, Zeiger auf Ausgabestruktur
	   Wenn kein Ziel vorhanden ist Zielname == Quelle + Extension,
	   wenn kein Ziel und keine Extension, dann Ziel == Quelle,
	   wenn dann nicht genug Speicher für komplettes Einlesen von Quelle
	   dann ist Ziel == Quelle_
	/R siehe Oeffen.c bei Fehler 0 */
ULONG Puffer(struct SDI_InOut *, struct SDI_InOut *, STRPTR);
	/* Allociert Puffer fürQuelle und Ziel
	/P Zeiger auf Eingabestruktur und Ausgabestruktur, Name der Quell-
	/P datei
	/R bei Fehler 0, sonst Puffergröße beider zusammen */
void PutNum(ULONG, ULONG);
	/* Gibt Zahl in Standard-Ausgabestrom aus
	/P Zahl, Formatierungslänge */
void PutNumHEX(ULONG, ULONG);
	/* Gibt Zahl als HEX in Standard-Ausgabestrom aus
	/P Zahl, Formatierungslänge */
#endif /* SDI_PROTOS_H */

