logtape.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*-------------------------------------------------------------------------
  2. *
  3. * logtape.h
  4. * Management of "logical tapes" within temporary files.
  5. *
  6. * See logtape.c for explanations.
  7. *
  8. * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
  9. * Portions Copyright (c) 1994, Regents of the University of California
  10. *
  11. * src/include/utils/logtape.h
  12. *
  13. *-------------------------------------------------------------------------
  14. */
  15. #ifndef LOGTAPE_H
  16. #define LOGTAPE_H
  17. /* LogicalTapeSet is an opaque type whose details are not known outside logtape.c. */
  18. typedef struct LogicalTapeSet LogicalTapeSet;
  19. /*
  20. * prototypes for functions in logtape.c
  21. */
  22. extern LogicalTapeSet *LogicalTapeSetCreate(int ntapes);
  23. extern void LogicalTapeSetClose(LogicalTapeSet *lts);
  24. extern void LogicalTapeSetForgetFreeSpace(LogicalTapeSet *lts);
  25. extern size_t LogicalTapeRead(LogicalTapeSet *lts, int tapenum,
  26. void *ptr, size_t size);
  27. extern void LogicalTapeWrite(LogicalTapeSet *lts, int tapenum,
  28. void *ptr, size_t size);
  29. extern void LogicalTapeRewind(LogicalTapeSet *lts, int tapenum, bool forWrite);
  30. extern void LogicalTapeFreeze(LogicalTapeSet *lts, int tapenum);
  31. extern bool LogicalTapeBackspace(LogicalTapeSet *lts, int tapenum,
  32. size_t size);
  33. extern bool LogicalTapeSeek(LogicalTapeSet *lts, int tapenum,
  34. long blocknum, int offset);
  35. extern void LogicalTapeTell(LogicalTapeSet *lts, int tapenum,
  36. long *blocknum, int *offset);
  37. extern long LogicalTapeSetBlocks(LogicalTapeSet *lts);
  38. #endif /* LOGTAPE_H */