git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11436 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			264 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			264 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Declares filebuffer interface functions.
 | 
						|
 | 
						|
  Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR>
 | 
						|
  This program and the accompanying materials
 | 
						|
  are licensed and made available under the terms and conditions of the BSD License
 | 
						|
  which accompanies this distribution.  The full text of the license may be found at
 | 
						|
  http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _LIB_FILE_BUFFER_H_
 | 
						|
#define _LIB_FILE_BUFFER_H_
 | 
						|
 | 
						|
#include "TextEditorTypes.h"
 | 
						|
 | 
						|
/**
 | 
						|
  Initialization function for FileBuffer.
 | 
						|
 | 
						|
  @param EFI_SUCCESS            The initialization was successful.
 | 
						|
  @param EFI_LOAD_ERROR         A default name could not be created.
 | 
						|
  @param EFI_OUT_OF_RESOURCES   A memory allocation failed.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferInit (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Cleanup function for FileBuffer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The cleanup was successful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferCleanup (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Refresh the screen with whats in the buffer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS     The refresh was successful.
 | 
						|
  @retval EFI_LOAD_ERROR  There was an error finding what to write.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferRefresh (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/** 
 | 
						|
  Dispatch input to different handler
 | 
						|
  @param[in] Key                The input key.  One of:
 | 
						|
                                    ASCII KEY
 | 
						|
                                    Backspace/Delete
 | 
						|
                                    Return
 | 
						|
                                    Direction key: up/down/left/right/pgup/pgdn
 | 
						|
                                    Home/End
 | 
						|
                                    INS
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The dispatch was done successfully.
 | 
						|
  @retval EFI_LOAD_ERROR        The dispatch was not successful.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferHandleInput (
 | 
						|
  IN CONST EFI_INPUT_KEY * Key
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Backup function for FileBuffer.  Only backup the following items:
 | 
						|
      Mouse/Cursor position
 | 
						|
      File Name, Type, ReadOnly, Modified
 | 
						|
      Insert Mode
 | 
						|
 | 
						|
  This is for making the file buffer refresh as few as possible.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The backup operation was successful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferBackup (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Set the cursor position according to FileBuffer.DisplayPosition.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The operation was successful.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferRestorePosition (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Set FileName field in FileBuffer.
 | 
						|
 | 
						|
  @param Str                    The file name to set.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS           The filename was successfully set.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.
 | 
						|
  @retval EFI_INVALID_PARAMETER Str is not a valid filename.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferSetFileName (
 | 
						|
  IN CONST CHAR16 *Str
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Read a file from disk into the FileBuffer.
 | 
						|
  
 | 
						|
  @param[in] FileName           The filename to read.
 | 
						|
  @param[in] Recover            TRUE if is for recover mode, no information printouts.
 | 
						|
  
 | 
						|
  @retval EFI_SUCCESS            The load was successful.
 | 
						|
  @retval EFI_LOAD_ERROR         The load failed.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   A memory allocation failed.
 | 
						|
  @retval EFI_INVALID_PARAMETER  FileName is a directory.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferRead (
 | 
						|
  IN CONST CHAR16  *FileName,
 | 
						|
  IN CONST BOOLEAN Recover
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Save lines in FileBuffer to disk
 | 
						|
 | 
						|
  @param[in] FileName           The file name for writing.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Data was written.
 | 
						|
  @retval EFI_LOAD_ERROR        
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  There were not enough resources to write the file.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferSave (
 | 
						|
  CONST CHAR16 *FileName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  According to cursor's file position, adjust screen display
 | 
						|
 | 
						|
  @param[in] NewFilePosRow    The row of file position ( start from 1 ).
 | 
						|
  @param[in] NewFilePosCol    The column of file position ( start from 1 ).
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
FileBufferMovePosition (
 | 
						|
  IN CONST UINTN NewFilePosRow,
 | 
						|
  IN CONST UINTN NewFilePosCol
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Cut current line out and return a pointer to it.
 | 
						|
 | 
						|
  @param[out] CutLine    Upon a successful return pointer to the pointer to 
 | 
						|
                        the allocated cut line.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The cut was successful.
 | 
						|
  @retval EFI_NOT_FOUND           There was no selection to cut.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferCutLine (
 | 
						|
  OUT EFI_EDITOR_LINE **CutLine
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Paste a line into line list.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The paste was successful.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferPasteLine (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Search string from current position on in file
 | 
						|
 | 
						|
  @param[in] Str    The search string.
 | 
						|
  @param[in] Offset The offset from current position.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS       The operation was successful.
 | 
						|
  @retval EFI_NOT_FOUND     The string Str was not found.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferSearch (
 | 
						|
  IN CONST CHAR16  *Str,
 | 
						|
  IN CONST UINTN Offset
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Replace SearchLen characters from current position on with Replace.
 | 
						|
 | 
						|
  This will modify the current buffer at the current position.
 | 
						|
 | 
						|
  @param[in] Replace    The string to replace.
 | 
						|
  @param[in] SearchLen  Search string's length.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The operation was successful.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferReplace (
 | 
						|
  IN CONST CHAR16   *Replace,
 | 
						|
  IN CONST UINTN    SearchLen
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Search and replace operation.
 | 
						|
 | 
						|
  @param[in] SearchStr    The string to search for.
 | 
						|
  @param[in] ReplaceStr   The string to replace with.
 | 
						|
  @param[in] Offset       The column to start at.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
FileBufferReplaceAll (
 | 
						|
  IN CHAR16 *SearchStr,
 | 
						|
  IN CHAR16 *ReplaceStr,
 | 
						|
  IN UINTN  Offset
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Move the mouse cursor position.
 | 
						|
 | 
						|
  @param[in] TextX      The new x-coordinate.
 | 
						|
  @param[in] TextY      The new y-coordinate.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
FileBufferAdjustMousePosition (
 | 
						|
  IN CONST INT32 TextX,
 | 
						|
  IN CONST INT32 TextY
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Set the modified state to TRUE.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
FileBufferSetModified (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |