Mem.cpp
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:2k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. //
  2. // a64ki
  3. // Copyright (c) 2002 Henrik Carlgren
  4. // http://ziruz.cjb.net
  5. // ziruz@hotpop.com
  6. //
  7. //
  8. // INCLUDE FILES
  9. //
  10. #include "mem.h"
  11. #include "tkno.h" // the xm music file in hex
  12. #include <memory.h>
  13. #include <stdio.h>
  14. //
  15. // FUNCTION: memOpen
  16. //
  17. unsigned int memOpen(char *name)
  18. {
  19. MEM *mem = new MEM;
  20. mem->length = TKNO_LEN;
  21. mem->cursor = 0;
  22. mem->data = tkno;
  23. return (unsigned int)mem;
  24. }
  25. //
  26. // FUNCTION: memClose
  27. //
  28. void memClose(unsigned int handle)
  29. {
  30. delete (MEM *)handle;
  31. }
  32. //
  33. // FUNCTION: memRead
  34. //
  35. int memRead(void *buffer, int size, unsigned int handle)
  36. {
  37. if(((MEM *)handle)->cursor + size >= ((MEM *)handle)->length)
  38. size = ((MEM *)handle)->length - ((MEM *)handle)->cursor;
  39. memcpy(buffer, (char *)((MEM *)handle)->data + ((MEM *)handle)->cursor, size);
  40. ((MEM *)handle)->cursor += size;
  41. return size;
  42. }
  43. //
  44. // FUNCTION: memSeek
  45. //
  46. void memSeek(unsigned int handle, int pos, signed char mode)
  47. {
  48. switch(mode)
  49. {
  50. case SEEK_SET:
  51. ((MEM *)handle)->cursor = pos;
  52. break;
  53. case SEEK_CUR:
  54. ((MEM *)handle)->cursor += pos;
  55. break;
  56. case SEEK_END:
  57. ((MEM *)handle)->cursor = ((MEM *)handle)->length-1;
  58. break;
  59. default:
  60. return;
  61. }
  62. if(((MEM *)handle)->cursor < 0)
  63. ((MEM *)handle)->cursor = 0;
  64. if(((MEM *)handle)->cursor >= ((MEM *)handle)->length)
  65. ((MEM *)handle)->cursor = ((MEM *)handle)->length-1;
  66. }
  67. //
  68. // FUNCTION: memTell
  69. //
  70. int memTell(unsigned int handle)
  71. {
  72. return ((MEM *)handle)->cursor;
  73. }