streams.h
资源名称:tcpmp.rar [点击查看]
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:4k
源码类别:
Windows CE
开发平台:
C/C++
- /*****************************************************************************
- *
- * This program is free software ; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as 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
- *
- * $Id: streams.h 585 2006-01-16 09:48:55Z picard $
- *
- * The Core Pocket Media Player
- * Copyright (c) 2004-2005 Gabor Kovacs
- *
- ****************************************************************************/
- #ifndef __STREAM_H
- #define __STREAM_H
- #define STREAM_CLASS FOURCC('S','T','R','M')
- #define STREAM_URL 0x91
- #define STREAM_LENGTH 0x92
- #define STREAM_SILENT 0x93
- #define STREAM_CREATE 0x94
- #define STREAM_CONTENTTYPE 0x95
- #define STREAM_COMMENT 0x96
- #define STREAM_PRAGMA_SEND 0x97
- #define STREAM_PRAGMA_GET 0x98
- #define STREAM_METAPROCESSOR 0x99
- #define STREAM_BASE 0x9A
- #ifndef SEEK_SET
- #define SEEK_SET 0
- #define SEEK_CUR 1
- #define SEEK_END 2
- #endif
- #ifndef EOF
- #define EOF (-1)
- #endif
- typedef struct streamdir
- {
- tchar_t FileName[MAXPATH];
- tchar_t DisplayName[MAXPATH];
- int Type; // from Exts
- filepos_t Size; // -1 for directory
- int64_t Date;
- void* Private;
- } streamdir;
- // read from stream
- typedef int (*streamread)(void* This,void* Data,int Size);
- // read from stream to block
- typedef int (*streamreadblock)(void* This,block* Block,int Ofs,int Size);
- // seek
- typedef filepos_t (*streamseek)(void* This,filepos_t Pos,int SeekMode);
- // write to stream
- typedef int (*streamwrite)(void* This,const void* Data,int Size);
- // list directory
- typedef int (*streamenumdir)(void* This,const tchar_t* URL,const tchar_t* Exts,bool_t ExtFilter,streamdir* Item);
- // data available
- typedef int (*streamdataavail)(void* This);
- typedef struct stream
- {
- VMT_NODE
- streamread Read;
- streamreadblock ReadBlock;
- streamseek Seek;
- streamenumdir EnumDir;
- streamwrite Write;
- streamdataavail DataAvailable;
- } stream;
- void Stream_Init();
- void Stream_Done();
- DLL int StreamEnum(void* p, int* No, datadef* Param);
- DLL const tchar_t* GetMime(const tchar_t* URL, tchar_t* Mime, int MimeLen, bool_t* HasHost);
- DLL stream* GetStream(const tchar_t* URL, bool_t Silent);
- DLL stream* StreamOpen(const tchar_t*, bool_t Write);
- DLL int StreamRead(stream*, void*, int);
- DLL int StreamWrite(stream*, const void*, int);
- DLL filepos_t StreamSeek(stream*, filepos_t, int);
- DLL int StreamClose(stream*);
- DLL void StreamPrintf(stream* Stream, const tchar_t* Msg,...);
- DLL void StreamPrintfEx(stream* Stream, bool_t UTF8, const tchar_t* Msg,...);
- DLL void StreamText(stream* Stream, const tchar_t*, bool_t UTF8);
- DLL stream* StreamOpenMem(const void*,int);
- DLL int StreamCloseMem(stream*);
- //--------------------------------------------------------------------------
- #define STREAMPROCESS_CLASS FOURCC('S','T','R','P')
- #define STREAMPROCESS_INPUT 0xB0
- //---------------------------------------------------------------------------
- #define MEMSTREAM_ID FOURCC('M','E','M','S')
- #define MEMSTREAM_DATA 0x100
- #endif