playlist.cpp
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. #include "playlist.h"
  2. #include "systems.h"
  3. CPlaylist::CPlaylist (const char *filename, const char **errmsg)
  4. {
  5.   #ifndef _WINDOWS
  6.   struct stat statbuf;
  7.   if (stat(filename, &statbuf) != 0) {
  8.     *errmsg = "File not found";
  9.     return;
  10.   }
  11.   if (!S_ISREG(statbuf.st_mode)) {
  12.     *errmsg = "Not a file";
  13.     return;
  14.   }
  15. #else
  16.   OFSTRUCT ReOpenBuff;
  17.   if (OpenFile(filename, &ReOpenBuff,OF_READ) == HFILE_ERROR) {
  18.     *errmsg = "File not found";
  19.     return;
  20.   }
  21. #endif
  22.   FILE *ifile;
  23.   ifile = fopen(filename, "r");
  24.   if (ifile == NULL) {
  25.     *errmsg = "Can't open file";
  26.     return;
  27.   }
  28.   char buffer[1024];
  29.   CPlaylistEntry *prev = NULL;
  30.   while (fgets(buffer, sizeof(buffer), ifile) != NULL) {
  31.     char *temp;
  32.     temp = strchr(buffer, 'n');
  33.     if (temp) {
  34.         if (*(temp - 1) == 'r')
  35.             *(temp - 1) = '';
  36.         *temp = '';
  37.     }
  38.     CPlaylistEntry *newone;
  39.     newone = new CPlaylistEntry(buffer);
  40.     if (prev == NULL) {
  41.       m_first = m_on = prev = newone;
  42.     } else {
  43.       prev->set_next(newone);
  44.       newone->set_prev(prev);
  45.       prev = newone;
  46.     }
  47.   }
  48.   fclose(ifile);
  49. }
  50. CPlaylist::~CPlaylist (void) 
  51. {
  52.   CPlaylistEntry *p;
  53.   p = m_first;
  54.   while (p != NULL) {
  55.     m_first = m_first->get_next();
  56.     delete p;
  57.     p = m_first;
  58.   }
  59. }
  60. const char *CPlaylist::get_next (void)
  61. {
  62.   if (m_on == NULL) {
  63.     return (NULL);
  64.   }
  65.   m_on = m_on->get_next();
  66.   if (m_on == NULL) {
  67.     return (NULL);
  68.   }
  69.   return (m_on->get_value());
  70. }
  71. const char *CPlaylist::get_prev (void)
  72. {
  73.   if (m_on == NULL) {
  74.     return NULL;
  75.   }
  76.   m_on = m_on->get_prev();
  77.   if (m_on == NULL) {
  78.     return (NULL);
  79.   }
  80.   return (m_on->get_value());
  81. }
  82. const char *CPlaylist::get_first (void) 
  83. {
  84.   m_on = m_first;
  85.   if (m_on == NULL) 
  86.     return (NULL);
  87.   
  88.   return m_on->get_value();
  89. }
  90. const char *CPlaylist::get_last (void)
  91. {
  92.   CPlaylistEntry *p;
  93.   p = m_first;
  94.   if (p == NULL) 
  95.     return (NULL);
  96.   while (p->get_next() != NULL) {
  97.     p = p->get_next();
  98.   }
  99.   return p->get_value();
  100. }