edit.h
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:3k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. /*** EDIT.H - Structures and constants for the Document Text Manager
  2. *
  3. * GLOBAL
  4. * None
  5. *
  6. * LOCAL
  7. * None
  8. *
  9. * DESCRIPTION
  10. * Constants, structures and function prototypes required to deal
  11. * with the TXTMGR and EDITMGR at a low level.
  12. *
  13. * NOTE: any changes should also be made to EDIT.INC
  14. *
  15. */
  16. #if !HEAP_H
  17. #include <heap.h>
  18. #endif
  19. #define LOCAL static
  20. #define GLOBAL
  21. #define pDocumentBuf oPastLastVar
  22. /*--------------------------- Debug Macros ------------------------*/
  23. #define DbHeapMoveOn()
  24. #define DbHeapMoveOff()
  25. #define DbChkPBufInfo(pbufinfo)
  26. /*--------------------------- Constants ---------------------------*/
  27. /* Incremental buffer size for allocation.
  28. */
  29. #define CBSRCBLK 512
  30. /* Number of document buffers available to the system
  31. */
  32. #define CBUFINFO 5
  33. /* Maximum number of lines in a document buffer.  This is forced by
  34.  * some edit manager strangeness at 32K-a little bit. If these were
  35.  * fixed, we could go to 64K (minus a little bit because of CW strangeness)
  36. */
  37. #define CLNMAX 32700
  38. /*----------------------- BUFINFO Structure -----------------------*/
  39. /* NOTE: I am using a FHD structure to inforce the fact that this */
  40. /* NOTE: heap entry is NOT a BDL.  It is a FHD, as BDLs can not   */
  41. /* NOTE: support a size > 64K, and FHDs can.   */
  42. typedef struct
  43. {
  44. WORD oData;
  45. WORD hData;
  46. WORD pNext;
  47. WORD cPara;
  48. } FHD;
  49. typedef FHD *PFHD;
  50. typedef struct
  51. {
  52. FHD fhd; /* File descriptor of in-memory file */
  53. WORD cln; /* Number of lines in the buffer */
  54. DWORD cb; /* Buffer size */
  55. DWORD obNext; /* Offset in buffer of next available byte */
  56. WORD olnCache; /* Line number of last line looked at */
  57. DWORD obCache; /* Offset in buffer of last line looked at */
  58. } BUFINFO;
  59. typedef BUFINFO *PBUFINFO;
  60. /*----------------------- Exported variables -----------------------*/
  61. /*---------------------- Function Prototypes ----------------------*/
  62. /* TEXT.ASM
  63. */
  64. extern VOID NEAR PASCAL DeTab(char far *, char far *, WORD, WORD);
  65. extern WORD NEAR PASCAL ExpandTabs(char far *, char far *, WORD, WORD);
  66. extern WORD NEAR PASCAL CbFindLine(DWORD *, WORD);
  67. extern VOID NEAR PASCAL BigMoveUp(DWORD, DWORD, DWORD);
  68. extern VOID NEAR PASCAL BigMoveDown(DWORD, DWORD, DWORD);
  69. extern DWORD NEAR PASCAL LinearAddr(char far *);
  70. extern char far *(NEAR PASCAL SegAddr(DWORD));
  71. extern BOOL FAR PASCAL FhdAlloc(PFHD, DWORD);
  72. extern BOOL FAR PASCAL FhdRealloc(PFHD, DWORD);
  73. extern VOID FAR PASCAL FhdDealloc(PFHD);
  74. /* TEXTMGR.C
  75. */
  76. extern PBUFINFO FAR PASCAL NewBuf(VOID);
  77. extern VOID FAR PASCAL FreeBuf(PBUFINFO);
  78. extern WORD FAR PASCAL AppendLineBuf(PBUFINFO, char **);
  79. extern VOID FAR PASCAL CompressBufs(VOID);
  80. extern WORD FAR PASCAL S_LinesInBuf(PBUFINFO);
  81. extern WORD FAR PASCAL S_CbGetLineBuf(PBUFINFO, WORD, WORD, char *);
  82. extern BOOL NEAR PASCAL S_ReplaceLineBuf(PBUFINFO, WORD, WORD, char **);
  83. extern BOOL NEAR PASCAL S_InsertLineBuf(PBUFINFO, WORD, WORD, char **, BOOL);
  84. extern VOID NEAR PASCAL S_InsertBufInBuf(PBUFINFO, WORD, PBUFINFO);
  85. extern VOID NEAR PASCAL S_DeleteLinesBuf(PBUFINFO, WORD, WORD);