camel-stream-mem.h 2.4 KB
Newer Older
1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 3 4
/* camel-stream-mem.h: stream based on memory buffer */

/*
5 6
 * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
 *	    Michael Zucchi <notzed@helixcode.com>
Bertrand Guiheneuf's avatar
Bertrand Guiheneuf committed
7
 *
8
 * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
9
 *
10 11
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 * USA
 */


#ifndef CAMEL_STREAM_MEM_H
#define CAMEL_STREAM_MEM_H 1


#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus }*/

36
#include <camel/camel-seekable-stream.h>
37
#include <sys/types.h>
38 39

#define CAMEL_STREAM_MEM_TYPE     (camel_stream_mem_get_type ())
Peter Williams's avatar
Peter Williams committed
40 41 42
#define CAMEL_STREAM_MEM(obj)     (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_MEM_TYPE, CamelStreamMem))
#define CAMEL_STREAM_MEM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_MEM_TYPE, CamelStreamMemClass))
#define CAMEL_IS_STREAM_MEM(o)    (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_MEM_TYPE))
43

44 45 46
typedef struct _CamelStreamMemClass CamelStreamMemClass;

struct _CamelStreamMem {
47
	CamelSeekableStream parent_object;
48

49
	gboolean owner;		/* do we own the buffer? */
50
	GByteArray *buffer;
51
};
52

53
struct _CamelStreamMemClass {
54
	CamelSeekableStreamClass parent_class;
55 56

	/* Virtual methods */
57
};
58

Peter Williams's avatar
Peter Williams committed
59 60
/* Standard Camel function */
CamelType camel_stream_mem_get_type (void);
61 62

/* public methods */
63 64 65
CamelStream *camel_stream_mem_new(void);
CamelStream *camel_stream_mem_new_with_byte_array(GByteArray *buffer);
CamelStream *camel_stream_mem_new_with_buffer(const char *buffer, size_t len);
66

67
/* these are really only here for implementing classes */
68 69
void camel_stream_mem_set_byte_array(CamelStreamMem *, GByteArray *buffer);
void camel_stream_mem_set_buffer(CamelStreamMem *, const char *buffer, size_t len);
70

71 72 73 74 75
#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* CAMEL_STREAM_MEM_H */