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

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: playlist.c 346 2005-11-21 22:20:40Z picard $
  18.  *
  19.  * The Core Pocket Media Player
  20.  * Copyright (c) 2004-2005 Gabor Kovacs
  21.  *
  22.  ****************************************************************************/
  23. #include "common.h"
  24. static const datatable Params[] = 
  25. {
  26. { PLAYLIST_STREAM, TYPE_NODE, DF_HIDDEN, STREAM_CLASS },
  27. DATATABLE_END(PLAYLIST_CLASS)
  28. };
  29. static int Enum(playlist* p, int* No, datadef* Param)
  30. {
  31. return NodeEnumTable(No,Param,Params);
  32. }
  33. static int Get(playlist* p, int No, void* Data, int Size)
  34. {
  35. int Result = ERR_INVALID_PARAM;
  36. switch (No)
  37. {
  38. case PLAYLIST_STREAM: GETVALUE(p->Stream,stream*); break;
  39. }
  40. return Result;
  41. }
  42. static int UpdateStream(playlist* p)
  43. {
  44. p->No = -1;
  45. ParserStream(&p->Parser,p->Stream);
  46. if (p->UpdateStream)
  47. return p->UpdateStream(p);
  48. return ERR_NONE;
  49. }
  50. static int Set(playlist* p, int No, const void* Data, int Size)
  51. {
  52. int Result = ERR_INVALID_PARAM;
  53. switch (No)
  54. {
  55. case PLAYLIST_STREAM: SETVALUENULL(p->Stream,stream*,UpdateStream(p),p->Stream=NULL); break;
  56. case PLAYLIST_DATAFEED: ParserDataFeed(&p->Parser,Data,Size); Result = ERR_NONE; break;
  57. }
  58. return Result;
  59. }
  60. static int Create(playlist* p)
  61. {
  62. p->Enum = (nodeenum)Enum;
  63. p->Get = (nodeget)Get;
  64. p->Set = (nodeset)Set;
  65. return ERR_NONE;
  66. }
  67. static const nodedef Playlist =
  68. {
  69. sizeof(playlist)|CF_ABSTRACT,
  70. PLAYLIST_CLASS,
  71. MEDIA_CLASS,
  72. PRI_DEFAULT,
  73. (nodecreate)Create,
  74. NULL,
  75. };
  76. void Playlist_Init()
  77. {
  78. NodeRegisterClass(&Playlist);
  79. }
  80. void Playlist_Done()
  81. {
  82. NodeUnRegisterClass(PLAYLIST_CLASS);
  83. }