struct record * get_records(time_t start, time_t end){ // start and end time can be specified // If zero is passed in for start time, then start searching at beginning of log // If zero is passed in for the end time, then search until the end of the log // returns pointer to link list of all records within start and end time (which are themselves a link list) // if no records were found during specified start and end time, returns NULL } struct record * get_matching_records(struct record * matching_criteria, time_t start, time_t end){ // matching_criteria is passed into function // matching_criteria is a pointer to a linked list of record pieces we are looking for // start and end time can be specified // If zero is passed in for start time, then start searching at beginning of log // If zero is passed in for the end time, then search until the end of the log // returns pointer to link list of all matching records (which are themselves a link list) // if no matching record is found, returns NULL } struct record * get_records_by_fields(struct generic_field_data * fields_to_match, time_t start, time_t end){ // fields_to_match is passed into the function // fields_to_match is a pointer to one structure with all the fields we want to match filled in and the rest initialized // start and end time can be specified // If zero is passed in for start time, then start searching at beginning of log // If zero is passed in for the end time, then search until the end of the log // returns pointer to link list of all matching records (which are themselves a link list) // if no matching record is found, returns NULL } record_data * initialize_record_data(record_data * matching_criteria){ //initializes all fields in generic field data type } generic_field_data * initialize_generic_field_data(generic_field_data * fields_to_match){ //initializes all fields in generic field data type }