X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fstorage-stream.c;h=a90a8aba1122d2575b5977a0bec779a889117bfc;hb=a55b554c0479168ef3e4879fe0fa517f7ca4def7;hp=a758c5a1e021e66051778b320203c186b5c21805;hpb=0d7b430cd1cef60b963a54307622d6f4aa8efeb4;p=pspp-builds.git diff --git a/src/data/storage-stream.c b/src/data/storage-stream.c index a758c5a1..a90a8aba 100644 --- a/src/data/storage-stream.c +++ b/src/data/storage-stream.c @@ -151,6 +151,7 @@ const struct case_source_class storage_source_class = storage_source_destroy, }; +/* Returns the casefile encapsulated by SOURCE. */ struct casefile * storage_source_get_casefile (struct case_source *source) { @@ -160,13 +161,30 @@ storage_source_get_casefile (struct case_source *source) return info->casefile; } +/* Destroys SOURCE and returns the casefile that it + encapsulated. */ +struct casefile * +storage_source_decapsulate (struct case_source *source) +{ + struct storage_stream_info *info = source->aux; + struct casefile *casefile; + + assert (source->class == &storage_source_class); + casefile = info->casefile; + info->casefile = NULL; + destroy_storage_stream_info (info); + return casefile; +} + +/* Creates and returns a new storage stream that encapsulates + CASEFILE. */ struct case_source * -storage_source_create (struct casefile *cf) +storage_source_create (struct casefile *casefile) { struct storage_stream_info *info; info = xmalloc (sizeof *info); - info->casefile = cf; + info->casefile = casefile; return create_case_source (&storage_source_class, info); }