home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / dctm.lzh / DCTM / source.lzh / source / BUFFER.Cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2003-02-08  |  1.5 KB  |  87 lines

  1. /*************************************************************************
  2.     BUFFER.cpp
  3.  
  4.     03/02/08    Xiaohong
  5. *************************************************************************/
  6. #include "buffer.h"
  7. #include <windows.h>
  8.  
  9. Buffer_queue::Buffer_queue(const unsigned int s)
  10. {
  11.     size = s;
  12.     next = NULL;
  13. }
  14.  
  15. Buffer_struc::Buffer_struc()
  16. {
  17.     max_size = 0;
  18.     first = NULL;
  19. }
  20.  
  21. Buffer_struc::~Buffer_struc()
  22. {
  23.     Buffer_queue *pointer = first;
  24.     while(first != NULL)
  25.     {
  26.         pointer = first;
  27.         first = first->next;
  28.         delete pointer;
  29.     }
  30. }
  31.  
  32. void Buffer_struc::clean(Timecode_struc* SCR)
  33. {
  34.     Buffer_queue *pointer;
  35.  
  36.     while (first != NULL &&
  37.         (comp_timecode(&first->DTS, SCR)))
  38.     {
  39.         pointer = first;
  40.         first = first->next;
  41.         delete pointer;    
  42.     }
  43. }
  44. unsigned int Buffer_struc::space(void)
  45. {
  46.     unsigned int used_bytes;
  47.     Buffer_queue *pointer;
  48.  
  49.     pointer = first;
  50.     used_bytes = 0;
  51.  
  52.     while (pointer != NULL)
  53.     {
  54.         used_bytes += pointer->size;
  55.         pointer = pointer->next;
  56.     }
  57.  
  58.     return (max_size - used_bytes);
  59. }
  60. bool Buffer_struc::queue(const unsigned int bytes,Timecode_struc* TS)
  61. {
  62.     Buffer_queue *pointer;
  63.  
  64.     pointer = first;
  65.     if (pointer == NULL)
  66.     {
  67.         if((first = new Buffer_queue(bytes)) == NULL)
  68.         {
  69.             return false;
  70.         }
  71.         first->DTS = *TS;
  72.     }
  73.     else
  74.     {
  75.         while ((pointer->next)!=NULL)
  76.         {
  77.             pointer = pointer->next;
  78.         }
  79.         if((pointer->next = new Buffer_queue(bytes)) == NULL)
  80.         {
  81.             return false;
  82.         }
  83.         pointer->next->DTS = *TS;
  84.     }
  85.     return true;
  86. }
  87.