streams.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:4k
源码类别:

Windows CE

开发平台:

C/C++

  1. /*****************************************************************************
  2.  *
  3.  * This program is free software ; you can redistribute it and/or modify
  4.  * it under the terms of the GNU General Public License as published by
  5.  * the Free Software Foundation; either version 2 of the License, or
  6.  * (at your option) any later version.
  7.  *
  8.  * This program is distributed in the hope that it will be useful,
  9.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11.  * GNU General Public License for more details.
  12.  *
  13.  * You should have received a copy of the GNU General Public License
  14.  * along with this program; if not, write to the Free Software
  15.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  16.  *
  17.  * $Id: streams.h 585 2006-01-16 09:48:55Z picard $
  18.  *
  19.  * The Core Pocket Media Player
  20.  * Copyright (c) 2004-2005 Gabor Kovacs
  21.  *
  22.  ****************************************************************************/
  23. #ifndef __STREAM_H
  24. #define __STREAM_H
  25. #define STREAM_CLASS FOURCC('S','T','R','M')
  26. #define STREAM_URL 0x91
  27. #define STREAM_LENGTH 0x92
  28. #define STREAM_SILENT 0x93
  29. #define STREAM_CREATE 0x94
  30. #define STREAM_CONTENTTYPE 0x95
  31. #define STREAM_COMMENT 0x96
  32. #define STREAM_PRAGMA_SEND 0x97
  33. #define STREAM_PRAGMA_GET 0x98
  34. #define STREAM_METAPROCESSOR 0x99
  35. #define STREAM_BASE 0x9A
  36. #ifndef SEEK_SET
  37. #define SEEK_SET        0
  38. #define SEEK_CUR        1
  39. #define SEEK_END        2
  40. #endif
  41. #ifndef EOF
  42. #define EOF (-1)
  43. #endif
  44. typedef struct streamdir
  45. {
  46. tchar_t FileName[MAXPATH];
  47. tchar_t DisplayName[MAXPATH];
  48. int Type; // from Exts
  49. filepos_t Size; // -1 for directory
  50. int64_t Date;
  51. void* Private;
  52. } streamdir;
  53. // read from stream
  54. typedef int (*streamread)(void* This,void* Data,int Size);
  55. // read from stream to block
  56. typedef int (*streamreadblock)(void* This,block* Block,int Ofs,int Size);
  57. // seek
  58. typedef filepos_t (*streamseek)(void* This,filepos_t Pos,int SeekMode);
  59. // write to stream
  60. typedef int (*streamwrite)(void* This,const void* Data,int Size);
  61. // list directory 
  62. typedef int (*streamenumdir)(void* This,const tchar_t* URL,const tchar_t* Exts,bool_t ExtFilter,streamdir* Item);
  63. // data available
  64. typedef int (*streamdataavail)(void* This);
  65. typedef struct stream
  66. {
  67. VMT_NODE
  68. streamread Read;
  69. streamreadblock ReadBlock;
  70. streamseek Seek;
  71. streamenumdir EnumDir;
  72. streamwrite Write;
  73. streamdataavail DataAvailable;
  74. } stream;
  75. void Stream_Init();
  76. void Stream_Done();
  77. DLL int StreamEnum(void* p, int* No, datadef* Param);
  78. DLL const tchar_t* GetMime(const tchar_t* URL, tchar_t* Mime, int MimeLen, bool_t* HasHost);
  79. DLL stream* GetStream(const tchar_t* URL, bool_t Silent);
  80. DLL stream* StreamOpen(const tchar_t*, bool_t Write); 
  81. DLL int StreamRead(stream*, void*, int);
  82. DLL int StreamWrite(stream*, const void*, int);
  83. DLL filepos_t StreamSeek(stream*, filepos_t, int);
  84. DLL int StreamClose(stream*);
  85. DLL void StreamPrintf(stream* Stream, const tchar_t* Msg,...);
  86. DLL void StreamPrintfEx(stream* Stream, bool_t UTF8, const tchar_t* Msg,...);
  87. DLL void StreamText(stream* Stream, const tchar_t*, bool_t UTF8);
  88. DLL stream* StreamOpenMem(const void*,int); 
  89. DLL int StreamCloseMem(stream*);
  90. //--------------------------------------------------------------------------
  91.  
  92. #define STREAMPROCESS_CLASS FOURCC('S','T','R','P')
  93. #define STREAMPROCESS_INPUT 0xB0
  94. //---------------------------------------------------------------------------
  95. #define MEMSTREAM_ID FOURCC('M','E','M','S')
  96. #define MEMSTREAM_DATA 0x100
  97. #endif