]> git.proxmox.com Git - mirror_edk2.git/blob - ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.h
6b46e4a173d7439e4a2aff06763ea2995d684792
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / Edit / FileBuffer.h
1 /** @file
2 Declares filebuffer interface functions.
3
4 Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _LIB_FILE_BUFFER_H_
16 #define _LIB_FILE_BUFFER_H_
17
18 #include "TextEditorTypes.h"
19
20 /**
21 Initialization function for FileBuffer.
22
23 @param EFI_SUCCESS The initialization was successful.
24 @param EFI_LOAD_ERROR A default name could not be created.
25 @param EFI_OUT_OF_RESOURCES A memory allocation failed.
26 **/
27 EFI_STATUS
28 FileBufferInit (
29 VOID
30 );
31
32 /**
33 Cleanup function for FileBuffer.
34
35 @retval EFI_SUCCESS The cleanup was successful.
36 **/
37 EFI_STATUS
38 FileBufferCleanup (
39 VOID
40 );
41
42 /**
43 Refresh the screen with whats in the buffer.
44
45 @retval EFI_SUCCESS The refresh was successful.
46 @retval EFI_LOAD_ERROR There was an error finding what to write.
47 **/
48 EFI_STATUS
49 FileBufferRefresh (
50 VOID
51 );
52
53 /**
54 Dispatch input to different handler
55 @param[in] Key The input key. One of:
56 ASCII KEY
57 Backspace/Delete
58 Return
59 Direction key: up/down/left/right/pgup/pgdn
60 Home/End
61 INS
62
63 @retval EFI_SUCCESS The dispatch was done successfully.
64 @retval EFI_LOAD_ERROR The dispatch was not successful.
65 @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
66 **/
67 EFI_STATUS
68 FileBufferHandleInput (
69 IN CONST EFI_INPUT_KEY * Key
70 );
71
72 /**
73 Backup function for FileBuffer. Only backup the following items:
74 Mouse/Cursor position
75 File Name, Type, ReadOnly, Modified
76 Insert Mode
77
78 This is for making the file buffer refresh as few as possible.
79
80 @retval EFI_SUCCESS The backup operation was successful.
81 **/
82 EFI_STATUS
83 FileBufferBackup (
84 VOID
85 );
86
87 /**
88 Set the cursor position according to FileBuffer.DisplayPosition.
89
90 @retval EFI_SUCCESS The operation was successful.
91 **/
92 EFI_STATUS
93 FileBufferRestorePosition (
94 VOID
95 );
96
97 /**
98 Set FileName field in FileBuffer.
99
100 @param Str The file name to set.
101
102 @retval EFI_SUCCESS The filename was successfully set.
103 @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
104 @retval EFI_INVALID_PARAMETER Str is not a valid filename.
105 **/
106 EFI_STATUS
107 FileBufferSetFileName (
108 IN CONST CHAR16 *Str
109 );
110
111 /**
112 Read a file from disk into the FileBuffer.
113
114 @param[in] FileName The filename to read.
115 @param[in] Recover TRUE if is for recover mode, no information printouts.
116
117 @retval EFI_SUCCESS The load was successful.
118 @retval EFI_LOAD_ERROR The load failed.
119 @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
120 @retval EFI_INVALID_PARAMETER FileName is a directory.
121 **/
122 EFI_STATUS
123 FileBufferRead (
124 IN CONST CHAR16 *FileName,
125 IN CONST BOOLEAN Recover
126 );
127
128 /**
129 Save lines in FileBuffer to disk
130
131 @param[in] FileName The file name for writing.
132
133 @retval EFI_SUCCESS Data was written.
134 @retval EFI_LOAD_ERROR
135 @retval EFI_OUT_OF_RESOURCES There were not enough resources to write the file.
136 **/
137 EFI_STATUS
138 FileBufferSave (
139 CONST CHAR16 *FileName
140 );
141
142 /**
143 According to cursor's file position, adjust screen display
144
145 @param[in] NewFilePosRow The row of file position ( start from 1 ).
146 @param[in] NewFilePosCol The column of file position ( start from 1 ).
147 **/
148 VOID
149 FileBufferMovePosition (
150 IN CONST UINTN NewFilePosRow,
151 IN CONST UINTN NewFilePosCol
152 );
153
154 /**
155 Cut current line out and return a pointer to it.
156
157 @param[out] CutLine Upon a successful return pointer to the pointer to
158 the allocated cut line.
159
160 @retval EFI_SUCCESS The cut was successful.
161 @retval EFI_NOT_FOUND There was no selection to cut.
162 @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
163 **/
164 EFI_STATUS
165 FileBufferCutLine (
166 OUT EFI_EDITOR_LINE **CutLine
167 );
168
169 /**
170 Paste a line into line list.
171
172 @retval EFI_SUCCESS The paste was successful.
173 @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
174 **/
175 EFI_STATUS
176 FileBufferPasteLine (
177 VOID
178 );
179
180 /**
181 Search string from current position on in file
182
183 @param[in] Str The search string.
184 @param[in] Offset The offset from current position.
185
186 @retval EFI_SUCCESS The operation was successful.
187 @retval EFI_NOT_FOUND The string Str was not found.
188 **/
189 EFI_STATUS
190 FileBufferSearch (
191 IN CONST CHAR16 *Str,
192 IN CONST UINTN Offset
193 );
194
195 /**
196 Replace SearchLen characters from current position on with Replace.
197
198 This will modify the current buffer at the current position.
199
200 @param[in] Replace The string to replace.
201 @param[in] SearchLen Search string's length.
202
203 @retval EFI_SUCCESS The operation was successful.
204 @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
205 **/
206 EFI_STATUS
207 FileBufferReplace (
208 IN CONST CHAR16 *Replace,
209 IN CONST UINTN SearchLen
210 );
211
212 /**
213 Search and replace operation.
214
215 @param[in] SearchStr The string to search for.
216 @param[in] ReplaceStr The string to replace with.
217 @param[in] Offset The column to start at.
218 **/
219 EFI_STATUS
220 FileBufferReplaceAll (
221 IN CHAR16 *SearchStr,
222 IN CHAR16 *ReplaceStr,
223 IN UINTN Offset
224 );
225
226 /**
227 Move the mouse cursor position.
228
229 @param[in] TextX The new x-coordinate.
230 @param[in] TextY The new y-coordinate.
231 **/
232 VOID
233 FileBufferAdjustMousePosition (
234 IN CONST INT32 TextX,
235 IN CONST INT32 TextY
236 );
237
238 /**
239 Set the modified state to TRUE.
240 **/
241 VOID
242 FileBufferSetModified (
243 VOID
244 );
245
246 #endif