casereader: Add a class for casereader translators.
[pspp] / src / data / casereader-project.c
index 2798eeb80cdfe4fa23f63275d21005dfb7ba25e9..4dbfb7b3ac903a9cf8a96141ff680b231e28ff27 100644 (file)
@@ -44,7 +44,7 @@ struct casereader_project
   };
 
 static struct ccase *
-project_case (struct ccase *old, casenumber idx UNUSED, const void *project_)
+project_case (struct ccase *old, void *project_)
 {
   const struct casereader_project *project = project_;
   struct ccase *new = case_create (subcase_get_proto (&project->new_sc));
@@ -63,6 +63,12 @@ destroy_projection (void *project_)
   return true;
 }
 
+static const struct casereader_translator_class projection_class =
+  {
+    project_case,
+    destroy_projection,
+  };
+
 /* Returns a casereader in which each row is obtained by extracting the subcase
    SC from the corresponding row of SUBREADER. */
 struct casereader *
@@ -82,8 +88,7 @@ casereader_project (struct casereader *subreader, const struct subcase *sc)
       subcase_add_proto_always (&project->new_sc, proto);
 
       return casereader_translate_stateless (subreader, proto,
-                                             project_case, destroy_projection,
-                                             project);
+                                             &projection_class, project);
     }
 }