Note-se que relativamente ao conceito Caneta concretizado no exercício anterior é necessário adicionar cinco novas funcionalidades:
- getStringFromMemory(PenWithMemory pen, int idx) - Devolve uma determinada cadeia de caracteres escrita anteriormente;
- resetMemory(PenWithMemory pen) - Remove todas as cadeias de caracteres associadas à caneta;
- newPenWithMemory(const char*brand, const char *color, int capacity) - É responsável por criar uma nova caneta com memória. Deverá reservar memória suficiente para guardar os dados respeitantes à nova caneta e inicializar os campos da nova caneta (recebidos através dos argumentos desta função);
- deletePenWithMemory(PenWithMemory pen) - Liberta os recursos de memória associados à caneta a destruir;
- getCapacityPenWithMemory(PenWithMemory pen) - Devolve a capacidade da caneta com memória;
Assim, o ficheiro com a definição da interface deste conceito deverá ter o seguinte conteúdo:
#ifndef __PEN_WITH_MEMORY_H__ #define __PEN_WITH_MEMORY_H__ typedef struct pen_with_memory * PenWithMemory; PenWithMemory newPenWithMemory(const char *brand, const char *color, int capacity); void deletePenWithMemory(PenWithMemory pen); const char *getStringFromMemory(PenWithMemory pen, int idx); void resetMemory(PenWithMemory pen); void writePenWithMemory(PenWithMemory pen, const char *msg); int equalsPenWithMemory(PenWithMemory pen1, PenWithMemory pen2); const char *getBrandPenWithMemory(PenWithMemory pen); const char *getColorPenWithMemory(PenWithMemory pen); int getCapacityPenWithMemory(PenWithMemory pen); void printPenWithMemory(PenWithMemory pen); #endif