/*
Program: "MINI-LEMINGI"
Modul: Wejscie/Wyjscie
Autor: Damian Wojtowicz
Weryfikator: Michal Zmijewski
Tester: Anna Doros
Krotki opis: Plik zawiera deklaracje klasy: WejscieWyjscie
oraz definicje typu wyliczeniowego: Wynik.
Poza tym definicje pomocniczych typow:
WczytanieNazwy, Formula.
*/
#ifndef __WEJSCIEWYJSCIE_H
#define __WEJSCIEWYJSCIE_H
#include <fstream.h>
#include <istream.h>
#include <ctype.h>
#include <string.h>
#include "parametry.h"
#include "stale_ElementySwiata.h"
#include "stale_WejscieWyjscie.h"
#include "typy.h"
#define DL_NAZWA 256 /* dlugosc nazwy pliku */
#define DL_FORMULY 32 /* dlugosc formuly */
/* stale logiczne */
#define TAK 1
#define NIE 0
/*============================================================================*/
/* TYPY WYLICZENIOWE */
/*============================================================================*/
enum WczytanieNazwy /* typ pomocniczy (wewnetrzny) */
{
_poprawne = 0, // nazwa poprawnie wczytana
_brak_nazwy = 1, // juz nie ma zadnych nie wczytanych
// nazw w pliku
_dluga_nazwa = 2, // zbyt dluga nazwa wczytana z pliku
}; //WczytanieNazwy
/*----------------------------------------------------------------------------*/
enum Formula /* typ pomocniczy (wewnetrzny) */
{
// rozne typy formul
_brak = 0,
_komentarz = 1,
_rozmiar = 2,
_czas = 3,
_leming = 4,
_przeprowadz = 5,
_bloker = 6,
_kopacz_poziomy = 7,
_kopacz_pionowy = 8,
_kopacz_gorny = 9,
_kopacz_dolny = 10,
_schodkarz_poziomy = 11,
_schodkarz_gorny = 12,
_schodkarz_dolny = 13,
_bomba = 14,
_pijus = 15,
_wejscie = 16,
_wyjscie = 17,
_wiersz = 18,
_tlo = 19,
_maska = 20,
_rysunek = 21,
_przesuniecie = 22
}; //Formula
/*----------------------------------------------------------------------------*/
enum Wynik /* na zewnatrz */
{
_poprawny = 0, // wynik poprawny
_brak_etapow = 1, // nie ma juz zadnych nowych etapow
_blad_otwarcia = 2, // blad przy otwieraniu pliku z parametrami
// lub niepoprawna nazwa pliku
_blad_w_pliku = 4, // blad w pliku z parametrami
_brak_pamieci = 5 // brak wystarczajacej ilosci pamieci
}; //Wynik
/*============================================================================*/
/* KLASA: WejscieWyjscie */
/*============================================================================*/
class WejscieWyjscie /* na zewnatrz */
/* deklaracja klasy WejscieWyjscie */
{
private:
/* prywatne atrybuty */
ifstream plik_z_planszami; // plik zawierajacy nazy kolejnych plikow
// z parametrami etapow
int otwarty; // czy plik zostal otwarty
/* prywatne funkcje skladowe klasy - opis przy definicji */
char podajKod(typ_teren teren);
WczytanieNazwy wczytajNazwePlikuZParametrami(char *nazwa);
void pominCiagZnakow(const char znak, ifstream &plik);
Formula wczytajFormule(ifstream &plik);
void pominKomentarz(ifstream &plik);
Para wczytajWspolrzedne(ifstream &plik);
int wczytajWartosc(ifstream &plik);
int wczytajNumerWiersza(ifstream &plik);
void wczytajDefinicjeWiersza(int nr,typ_teren **tab, const Para rozm,
ifstream &plik);
void wczytajNazwePliku(ifstream &plik, char *nazwa);
void inicjalizujParametry(Param_etap ¶metry);
/* prywatny wyjatek */
class BladFormuly{}; // bledna formula
public:
/* konstruktory */
WejscieWyjscie();
WejscieWyjscie(const char *nazwa_pliku);
/* destruktor */
~WejscieWyjscie();
/* wyjatek */
class BladOtwarcia{}; //blad podczas otwierania pliku
/* publiczne funkcje skladowe klasy */
void otworzPlik(const char *nazwa_pliku);
void zamknijPlik();
Wynik wczytajParametryKolejnegoEtapuZPliku(Param_etap ¶metry, const char* nazwa);
Wynik podajParametryKolejnegoEtapu(Param_etap ¶metry);
int zapiszParametryEtapu(Param_etap param, const char* nazwa);
};//WejscieWyjscie
#endif /* __WEJSCIEWYJSCIE_H */