Initial revision
[blender.git] / source / blender / readstreamglue / BLO_readStreamGlue.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  * connect the read stream data processors
32  */
33
34 #ifndef BLO_READSTREAMGLUE_H
35 #define BLO_READSTREAMGLUE_H
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 #include "BLO_sys_types.h"
42 #include "BLO_readStreamErrors.h"
43
44 #define UNKNOWN                 0
45 #define DUMPTOMEMORY    1
46 #define DUMPFROMMEMORY  2
47 #define READBLENFILE    3
48 #define WRITEBLENFILE   4
49 #define INFLATE                 5
50 #define DEFLATE                 6
51 #define DECRYPT                 7
52 #define ENCRYPT                 8
53 #define VERIFY                  9
54 #define SIGN                    10
55
56 #define MAXSTREAMLENGTH 10
57
58 #define STREAMGLUEHEADERSIZE sizeof(struct streamGlueHeaderStruct)
59
60 struct streamGlueHeaderStruct {
61         uint8_t magic;                                  /* poor mans header recognize check */
62         uint32_t totalStreamLength;             /* how much data is there */
63         uint32_t dataProcessorType;             /* next data processing action */
64         uint32_t crc;                                   /* header minus crc itself checksum */
65 };
66
67 struct readStreamGlueStruct {
68         /* my control structure elements */
69         unsigned int totalStreamLength;
70         unsigned int streamDone;
71         int dataProcessorType;
72         void *ProcessorTypeControlStruct;
73
74         unsigned char headerbuffer[STREAMGLUEHEADERSIZE];
75
76         void *(*begin)(void *);
77         int (*process)(void *, unsigned char *, unsigned int);
78         int (*end)(void *);
79 };
80
81         unsigned int
82 correctByteOrder(
83         unsigned int x);
84
85         int
86 readStreamGlue(
87         void *endControl,
88         struct readStreamGlueStruct **control,
89         unsigned char *data,
90         unsigned int dataIn);
91
92 #ifdef __cplusplus
93 }
94 #endif
95
96 #endif /* BLO_READSTREAMGLUE_H */