]> icculus.org git repositories - icculus/xz.git/blob - src/liblzma/simple/simple_encoder.c
fe2f98d6cde8493aa8805fb6fc074e11ccd56964
[icculus/xz.git] / src / liblzma / simple / simple_encoder.c
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 /// \file       simple_encoder.c
4 /// \brief      Properties encoder for simple filters
5 //
6 //  Copyright (C) 2007-2008 Lasse Collin
7 //
8 //  This library is free software; you can redistribute it and/or
9 //  modify it under the terms of the GNU Lesser General Public
10 //  License as published by the Free Software Foundation; either
11 //  version 2.1 of the License, or (at your option) any later version.
12 //
13 //  This library is distributed in the hope that it will be useful,
14 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 //  Lesser General Public License for more details.
17 //
18 ///////////////////////////////////////////////////////////////////////////////
19
20 #include "simple_encoder.h"
21
22
23 extern lzma_ret
24 lzma_simple_props_size(uint32_t *size, const void *options)
25 {
26         const lzma_options_bcj *const opt = options;
27         *size = (opt == NULL || opt->start_offset == 0) ? 0 : 4;
28         return LZMA_OK;
29 }
30
31
32 extern lzma_ret
33 lzma_simple_props_encode(const void *options, uint8_t *out)
34 {
35         const lzma_options_bcj *const opt = options;
36
37         // The default start offset is zero, so we don't need to store any
38         // options unless the start offset is non-zero.
39         if (opt == NULL || opt->start_offset == 0)
40                 return LZMA_OK;
41
42         integer_write_32(out, opt->start_offset);
43
44         return LZMA_OK;
45 }