De acordo com o enunciado, o conceito Caneta deverá ter as seguintes funcionalidades:
- writePen(const char *str) - Apresenta ao utilizador a cadeia de caracteres que recebe como argumento;
- newPen(const char*brand, const char *color) - É responsável por criar uma nova caneta. 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);
- deletePen(Pen pen) - Liberta os recursos de memória associados à caneta a destruir;
- equalsPen(Pen pen1, Pen pen2) - Compara duas canetas, devolvendo um valor diferente de 0 caso as duas canetas sejam consideradas iguais (têm campos iguais);
- getBrandPen(Pen pen) e getColorPen(Pen pen) - Permitem aceder aos campos de uma caneta, marca e cor, respectivamente;
- print(Pen pen) - Apresenta ao utilizador os campos da caneta.
#ifndef __PEN_H__ #define __PEN_H__ typedef struct pen * Pen; Pen newPen(const char *brand, const char *color); void deletePen(Pen pen); void writePen(Pen pen, const char *msg); int equalsPen(Pen pen1, Pen pen2); const char *getBrandPen(Pen pen); const char *getColorPen(Pen pen); void printPen(Pen pen); #endif