/* * Copyright 2011 Steven Gribble * * This file is part of the UW CSE 333 course project sequence * (333proj). * * 333proj is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * 333proj is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with 333proj. If not, see . */ #ifndef _LEC9_EXERCISE3_LL_FILE_H_ #define _LEC9_EXERCISE3_LL_FILE_H_ // This header file declares some functions that we're adding // to our linked list implementation. The functions allow // customers to write a linked list to a file, or read a linked // list from a file. #include "ll.h" #include // Defines a function pointer used to convert a payload into // a malloc'ed byte array during WriteToFile(). WriteToFile() // will free the malloc'ed array when it is done with it. typedef void *(*PayloadToByteArrayFnPtr)(void *payload, uint32_t *arraylen); // Defines a function pointer used to convert a read byte array // into a (possibly malloc'ed) payload during ReadFromFile(). // WriteTofile() will free the byte array. typedef void *(*ByteArrayToPayloadFnPtr)(void *array, uint32_t arraylen); // Pickles up and writes the list "list" to the file "filename", // using "f" to convert payloads into fwrite'able byte arrays. // Will create and/or truncate "filename". Returns 1 on success, // 0 on failure. int WriteToFile(LinkedList list, char *filename, PayloadToByteArrayFnPtr f); // Reads a list from file "filename", using "f" to convert byte // arrays read from the file into payloads. Returns a LinkedList, // or NULL on failure. LinkedList ReadFromFile(char *filename, ByteArrayToPayloadFnPtr f); #endif // _LEC9_EXERCISE3_LL_FILE_H_