casereader: Make casereader_random_class function 'advance' optional.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 20 Feb 2023 23:47:52 +0000 (15:47 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 20 Feb 2023 23:47:52 +0000 (15:47 -0800)
Stateless casereaders don't necessarily need to do anything for it.

src/data/casereader-provider.h
src/data/casereader.c

index 2069eb678de9b652d5bb16cd91f399850be1b163..37bde24310c76e1a1c5c6facd49c439968c9272c 100644 (file)
@@ -148,7 +148,7 @@ struct casereader_random_class
        function should call casereader_force_error on READER. */
     void (*destroy) (struct casereader *reader, void *aux);
 
-    /* Mandatory.
+    /* Optional.
 
        A call to this function tells the callee that the N
        cases at the beginning of READER will never be read again.
index 1b06f42e8ab399b9b0ad4a3b76f1a3ea82a10bea..a410afcbcbfab2c826735d9ef94e4daffdca10f5 100644 (file)
@@ -501,7 +501,8 @@ advance_random_reader (struct casereader *reader,
   if (new > old)
     {
       shared->min_offset = new;
-      shared->class->advance (reader, shared->aux, new - old);
+      if (shared->class->advance)
+        shared->class->advance (reader, shared->aux, new - old);
     }
 }