static void
camel_stream_vfs_class_init (CamelStreamVFSClass *camel_stream_vfs_class)
{
	CamelStreamClass *camel_stream_class =
		CAMEL_STREAM_CLASS (camel_stream_vfs_class);

	parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));

	/* virtual method overload */
	camel_stream_class->read = stream_read;
	camel_stream_class->write = stream_write;
	camel_stream_class->flush = stream_flush;
	camel_stream_class->close = stream_close;
}
static void
camel_stream_filter_class_init (CamelStreamFilterClass *klass)
{
	CamelStreamClass *camel_stream_class = (CamelStreamClass *) klass;

	camel_stream_filter_parent = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));

	camel_stream_class->read = do_read;
	camel_stream_class->write = do_write;
	camel_stream_class->flush = do_flush;
	camel_stream_class->close = do_close;
	camel_stream_class->eos = do_eos;
	camel_stream_class->reset = do_reset;

}
CamelType
camel_stream_vfs_get_type (void)
{
	static CamelType camel_stream_vfs_type = CAMEL_INVALID_TYPE;

	if (camel_stream_vfs_type == CAMEL_INVALID_TYPE) {
		camel_stream_vfs_type = camel_type_register (camel_stream_get_type (), "CamelStreamVFS",
							    sizeof (CamelStreamVFS),
							    sizeof (CamelStreamVFSClass),
							    (CamelObjectClassInitFunc) camel_stream_vfs_class_init,
							    NULL,
							    (CamelObjectInitFunc) camel_stream_vfs_init,
							    (CamelObjectFinalizeFunc) camel_stream_vfs_finalize);
	}

	return camel_stream_vfs_type;
}
CamelType
camel_pop3_stream_get_type (void)
{
	static CamelType camel_pop3_stream_type = CAMEL_INVALID_TYPE;

	if (camel_pop3_stream_type == CAMEL_INVALID_TYPE) {
		camel_pop3_stream_type = camel_type_register( camel_stream_get_type(),
							    "CamelPOP3Stream",
							    sizeof( CamelPOP3Stream ),
							    sizeof( CamelPOP3StreamClass ),
							    (CamelObjectClassInitFunc) camel_pop3_stream_class_init,
							    NULL,
							    (CamelObjectInitFunc) camel_pop3_stream_init,
							    (CamelObjectFinalizeFunc) camel_pop3_stream_finalise );
	}

	return camel_pop3_stream_type;
}