#ifndef lista_polje
#define lista_polje
#include <iostream>
#include <cstring>
using namespace std;

struct tgame {
	char sifra[7];
	char naziv[100];
	char proizvodjac[100];
	char zanr[100];
	char podzanr[100];
	int pegi;
};

struct tlista {
	tgame game [10000];
	int cursor;	
};
tlista *lista = new tlista;
typedef int vrijed;

vrijed firstL (tlista *lista) {
	return 0;
}

vrijed endL (tlista *lista) {
	return (lista->cursor);
}

vrijed nextL (vrijed pos,tlista *lista) {
	if (pos < lista->cursor && pos >= 0)
		return pos+1;
	if (pos >= lista->cursor)
		return lista->cursor;
	else
		return -1;
}

vrijed previousL (vrijed pos,tlista *lista) {
	if (pos > 0 && pos < lista->cursor)
		return pos-1;
	if (pos >= lista->cursor)
		return lista->cursor;
	else
		return -1;
}

vrijed locateL(char sifra[7], tlista *lista) {
	for (int i = 0; i < lista->cursor; i++) {
		if (strcmp(sifra, lista->game[i].sifra) == 0)
			return i;	
	}
	return lista->cursor;
}

vrijed insertL (tgame elem, int pos, tlista *lista) {
	if (lista->cursor == 0) {
		lista->cursor++;
		lista->game[0] = elem;
		return 1;
	}
	if ( pos >= 0 && pos <= lista->cursor) {
		lista->cursor += 1;
		for (int i = (lista->cursor-1); i > pos; i--) {
			lista->game[i] = lista->game[i-1];
		}
		lista->game[pos] = elem;
		return 1;
	}
	return 0;
}

vrijed deleteL (vrijed pos, tlista *lista) {
	if (pos == lista->cursor-1) {
		lista->cursor -= 1;
		return 1;
	}
	if (pos >= 0 && pos < (lista->cursor)) {
		for (int i = pos; i < (lista->cursor); i++) {
			lista->game[i] = lista->game[i+1];
		}
		lista->cursor -= 1;
		return 1;
	}
	return -1;	
}

tgame retrieveL (vrijed pos, tlista *lista) {
	return lista->game[pos];	
}

void deleteallL (tlista *lista) {
	lista->cursor = 0;
}

void initL (tlista *lista) {
	lista->cursor = 0;
}
#endif