X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcasereader-provider.h;h=b8d53500504fb2c2595e894b9baf944a8651d0b7;hb=5c3291dc396b795696e94f47780308fd7ace6fc4;hp=43c980a8347e33da91d39555abd94f93bf2db70a;hpb=2bdde1cd21cd58349cf4bd852fddf40524854288;p=pspp-builds.git diff --git a/src/data/casereader-provider.h b/src/data/casereader-provider.h index 43c980a8..b8d53500 100644 --- a/src/data/casereader-provider.h +++ b/src/data/casereader-provider.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,20 +43,23 @@ struct casereader_class { /* Mandatory. - Reads the next case from READER into case C, which the - casereader must create and which the client is responsible - for destroying. If successful, returns true and advances - READER to the next case, so that the next call to this - function will read the next case. The case just read will - never be read again by a call to this function for READER. + Reads the next case from READER. If successful, returns + the case and advances READER, so that the next call to + this function will read the following case. The case just + read will never be read again by a call to this function + for READER. - At end of file or upon an I/O error, returns false. After - false is returned once, this function will not be called - again for the given READER. + If a case is successfully returned, the client is + responsible for calling case_unref upon it when it is no + longer needed. + + At end of file or upon an I/O error, returns a null + pointer. After null is returned once, this function will + not be called again for the given READER. If an I/O error occurs, this function should call casereader_force_error on READER. */ - bool (*read) (struct casereader *reader, void *aux, struct ccase *c); + struct ccase *(*read) (struct casereader *reader, void *aux); /* Mandatory. @@ -88,30 +91,31 @@ struct casereader_class (But it might be easier to use the random-access casereader wrapper instead.) - Reads the case at 0-based offset IDX from the beginning of - READER into case C, which the casereader must create and - which the client is responsible for destroying. + Reads and returns the case at 0-based offset IDX from the + beginning of READER. If a case is successfully returned, + the client is responsible for calling case_unref upon it + when it is no longer needed. - At end of file or upon an I/O error, returns false. If - this function returns false, then it will never be called - again for an equal or greater value of IDX, and the "read" - member function will never be called to advance as far as - IDX cases further into the casereader. That is, returning - false indicates that the casereader has fewer than IDX - cases left. + At end of file or upon an I/O error, returns a null + pointer. If this function returns null, then it will + never be called again for an equal or greater value of + IDX, and the "read" member function will never be called + to advance as far as IDX cases further into the + casereader. That is, returning null indicates that the + casereader has fewer than IDX cases left. If an I/O error occurs, this function should call casereader_force_error on READER. */ - bool (*peek) (struct casereader *reader, void *aux, casenumber idx, - struct ccase *c); + struct ccase *(*peek) (struct casereader *reader, void *aux, + casenumber idx); }; struct casereader * casereader_create_sequential (const struct taint *, - size_t value_cnt, casenumber case_cnt, + const struct caseproto *, casenumber case_cnt, const struct casereader_class *, void *); -void *casereader_dynamic_cast (struct casereader *, struct casereader_class *); +void *casereader_dynamic_cast (struct casereader *, const struct casereader_class *); /* Casereader class for random-access data sources. */ struct casereader_random_class @@ -119,21 +123,22 @@ struct casereader_random_class /* Mandatory. Reads the case at 0-based offset IDX from the beginning of - READER into case C, which the casereader must create and - which the client is responsible for destroying. - - At end of file or upon an I/O error, returns false. If - this function returns false, then it will never be called - again for an equal or greater value of IDX, and the "read" - member function will never be called to advance as far as - IDX cases further into the casereader. That is, returning - false indicates that the casereader has fewer than IDX - cases. + READER. If a case is successfully returned, the client is + responsible for calling case_unref upon it when it is no + longer needed. + + At end of file or upon an I/O error, returns a null + pointer. If this function returns null, then it will + never be called again for an equal or greater value of + IDX, and the "read" member function will never be called + to advance as far as IDX cases further into the + casereader. That is, returning null indicates that the + casereader has fewer than IDX cases. If an I/O error occurs, this function should call casereader_force_error on READER. */ - bool (*read) (struct casereader *reader, void *aux, casenumber idx, - struct ccase *c); + struct ccase *(*read) (struct casereader *reader, void *aux, + casenumber idx); /* Mandatory. @@ -155,7 +160,7 @@ struct casereader_random_class }; struct casereader * -casereader_create_random (size_t value_cnt, casenumber case_cnt, +casereader_create_random (const struct caseproto *, casenumber case_cnt, const struct casereader_random_class *, void *aux); #endif /* data/casereader-provider.h */