diff options
Diffstat (limited to 'src/fltk-text_buffers.adb')
-rw-r--r-- | src/fltk-text_buffers.adb | 1349 |
1 files changed, 0 insertions, 1349 deletions
diff --git a/src/fltk-text_buffers.adb b/src/fltk-text_buffers.adb deleted file mode 100644 index d41e4fe..0000000 --- a/src/fltk-text_buffers.adb +++ /dev/null @@ -1,1349 +0,0 @@ - - -with - - Interfaces.C.Strings, - Ada.Strings.Unbounded, - Ada.Containers, - System; - -use - - Ada.Strings.Unbounded; - -use type - - System.Address, - Interfaces.C.int, - Interfaces.C.Strings.chars_ptr, - Ada.Containers.Count_Type; - - -package body FLTK.Text_Buffers is - - - function new_fl_text_buffer - (RS, PGS : in Interfaces.C.int) - return System.Address; - pragma Import (C, new_fl_text_buffer, "new_fl_text_buffer"); - pragma Inline (new_fl_text_buffer); - - procedure free_fl_text_buffer - (TB : in System.Address); - pragma Import (C, free_fl_text_buffer, "free_fl_text_buffer"); - pragma Inline (free_fl_text_buffer); - - - - - procedure fl_text_buffer_add_modify_callback - (TB, CB, UD : in System.Address); - pragma Import (C, fl_text_buffer_add_modify_callback, - "fl_text_buffer_add_modify_callback"); - pragma Inline (fl_text_buffer_add_modify_callback); - - procedure fl_text_buffer_add_predelete_callback - (TB, CB, UD : in System.Address); - pragma Import (C, fl_text_buffer_add_predelete_callback, - "fl_text_buffer_add_predelete_callback"); - pragma Inline (fl_text_buffer_add_predelete_callback); - - procedure fl_text_buffer_call_modify_callbacks - (TB : in System.Address); - pragma Import (C, fl_text_buffer_call_modify_callbacks, - "fl_text_buffer_call_modify_callbacks"); - pragma Inline (fl_text_buffer_call_modify_callbacks); - - procedure fl_text_buffer_call_predelete_callbacks - (TB : in System.Address); - pragma Import (C, fl_text_buffer_call_predelete_callbacks, - "fl_text_buffer_call_predelete_callbacks"); - pragma Inline (fl_text_buffer_call_predelete_callbacks); - - - - - function fl_text_buffer_loadfile - (TB : in System.Address; - N : in Interfaces.C.char_array; - B : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_loadfile, "fl_text_buffer_loadfile"); - pragma Inline (fl_text_buffer_loadfile); - - function fl_text_buffer_appendfile - (TB : in System.Address; - N : in Interfaces.C.char_array; - B : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_appendfile, "fl_text_buffer_appendfile"); - pragma Inline (fl_text_buffer_appendfile); - - function fl_text_buffer_insertfile - (TB : in System.Address; - N : in Interfaces.C.char_array; - P, B : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_insertfile, "fl_text_buffer_insertfile"); - pragma Inline (fl_text_buffer_insertfile); - - function fl_text_buffer_outputfile - (TB : in System.Address; - N : in Interfaces.C.char_array; - F, T : in Interfaces.C.int; - B : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_outputfile, "fl_text_buffer_outputfile"); - pragma Inline (fl_text_buffer_outputfile); - - function fl_text_buffer_savefile - (TB : in System.Address; - N : in Interfaces.C.char_array; - B : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_savefile, "fl_text_buffer_savefile"); - pragma Inline (fl_text_buffer_savefile); - - - - - procedure fl_text_buffer_insert - (TB : in System.Address; - P : in Interfaces.C.int; - I : in Interfaces.C.char_array); - pragma Import (C, fl_text_buffer_insert, "fl_text_buffer_insert"); - pragma Inline (fl_text_buffer_insert); - - procedure fl_text_buffer_append - (TB : in System.Address; - I : in Interfaces.C.char_array); - pragma Import (C, fl_text_buffer_append, "fl_text_buffer_append"); - pragma Inline (fl_text_buffer_append); - - procedure fl_text_buffer_replace - (TB : in System.Address; - S, F : in Interfaces.C.int; - T : in Interfaces.C.char_array); - pragma Import (C, fl_text_buffer_replace, "fl_text_buffer_replace"); - pragma Inline (fl_text_buffer_replace); - - procedure fl_text_buffer_remove - (TB : in System.Address; - S, F : in Interfaces.C.int); - pragma Import (C, fl_text_buffer_remove, "fl_text_buffer_remove"); - pragma Inline (fl_text_buffer_remove); - - function fl_text_buffer_get_text - (TB : in System.Address) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_text_buffer_get_text, "fl_text_buffer_get_text"); - pragma Inline (fl_text_buffer_get_text); - - procedure fl_text_buffer_set_text - (TB : in System.Address; - T : in Interfaces.C.char_array); - pragma Import (C, fl_text_buffer_set_text, "fl_text_buffer_set_text"); - pragma Inline (fl_text_buffer_set_text); - - function fl_text_buffer_byte_at - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.char; - pragma Import (C, fl_text_buffer_byte_at, "fl_text_buffer_byte_at"); - pragma Inline (fl_text_buffer_byte_at); - - function fl_text_buffer_char_at - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.unsigned; - pragma Import (C, fl_text_buffer_char_at, "fl_text_buffer_char_at"); - pragma Inline (fl_text_buffer_char_at); - - function fl_text_buffer_text_range - (TB : in System.Address; - S, F : in Interfaces.C.int) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_text_buffer_text_range, "fl_text_buffer_text_range"); - pragma Inline (fl_text_buffer_text_range); - - function fl_text_buffer_next_char - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_next_char, "fl_text_buffer_next_char"); - pragma Inline (fl_text_buffer_next_char); - - function fl_text_buffer_prev_char - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_prev_char, "fl_text_buffer_prev_char"); - pragma Inline (fl_text_buffer_prev_char); - - - - - function fl_text_buffer_count_displayed_characters - (TB : in System.Address; - S, F : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_count_displayed_characters, - "fl_text_buffer_count_displayed_characters"); - pragma Inline (fl_text_buffer_count_displayed_characters); - - function fl_text_buffer_count_lines - (TB : in System.Address; - S, F : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_count_lines, "fl_text_buffer_count_lines"); - pragma Inline (fl_text_buffer_count_lines); - - function fl_text_buffer_length - (TB : in System.Address) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_length, "fl_text_buffer_length"); - pragma Inline (fl_text_buffer_length); - - function fl_text_buffer_get_tab_distance - (TB : in System.Address) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_get_tab_distance, "fl_text_buffer_get_tab_distance"); - pragma Inline (fl_text_buffer_get_tab_distance); - - procedure fl_text_buffer_set_tab_distance - (TB : in System.Address; - T : in Interfaces.C.int); - pragma Import (C, fl_text_buffer_set_tab_distance, "fl_text_buffer_set_tab_distance"); - pragma Inline (fl_text_buffer_set_tab_distance); - - - - - function fl_text_buffer_selection_position - (TB : in System.Address; - S, E : out Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_selection_position, "fl_text_buffer_selection_position"); - pragma Inline (fl_text_buffer_selection_position); - - function fl_text_buffer_secondary_selection_position - (TB : in System.Address; - S, E : out Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_secondary_selection_position, - "fl_text_buffer_secondary_selection_position"); - pragma Inline (fl_text_buffer_secondary_selection_position); - - procedure fl_text_buffer_select - (TB : in System.Address; - S, E : in Interfaces.C.int); - pragma Import (C, fl_text_buffer_select, "fl_text_buffer_select"); - pragma Inline (fl_text_buffer_select); - - procedure fl_text_buffer_secondary_select - (TB : in System.Address; - S, E : in Interfaces.C.int); - pragma Import (C, fl_text_buffer_secondary_select, "fl_text_buffer_secondary_select"); - pragma Inline (fl_text_buffer_secondary_select); - - function fl_text_buffer_selected - (TB : in System.Address) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_selected, "fl_text_buffer_selected"); - pragma Inline (fl_text_buffer_selected); - - function fl_text_buffer_secondary_selected - (TB : in System.Address) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_secondary_selected, "fl_text_buffer_secondary_selected"); - pragma Inline (fl_text_buffer_secondary_selected); - - function fl_text_buffer_selection_text - (TB : in System.Address) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_text_buffer_selection_text, "fl_text_buffer_selection_text"); - pragma Inline (fl_text_buffer_selection_text); - - function fl_text_buffer_secondary_selection_text - (TB : in System.Address) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_text_buffer_secondary_selection_text, - "fl_text_buffer_secondary_selection_text"); - pragma Inline (fl_text_buffer_secondary_selection_text); - - procedure fl_text_buffer_replace_selection - (TB : in System.Address; - T : in Interfaces.C.char_array); - pragma Import (C, fl_text_buffer_replace_selection, "fl_text_buffer_replace_selection"); - pragma Inline (fl_text_buffer_replace_selection); - - procedure fl_text_buffer_replace_secondary_selection - (TB : in System.Address; - T : in Interfaces.C.char_array); - pragma Import (C, fl_text_buffer_replace_secondary_selection, - "fl_text_buffer_replace_secondary_selection"); - pragma Inline (fl_text_buffer_replace_secondary_selection); - - procedure fl_text_buffer_remove_selection - (TB : in System.Address); - pragma Import (C, fl_text_buffer_remove_selection, "fl_text_buffer_remove_selection"); - pragma Inline (fl_text_buffer_remove_selection); - - procedure fl_text_buffer_remove_secondary_selection - (TB : in System.Address); - pragma Import (C, fl_text_buffer_remove_secondary_selection, - "fl_text_buffer_remove_secondary_selection"); - pragma Inline (fl_text_buffer_remove_secondary_selection); - - procedure fl_text_buffer_unselect - (TB : in System.Address); - pragma Import (C, fl_text_buffer_unselect, "fl_text_buffer_unselect"); - pragma Inline (fl_text_buffer_unselect); - - procedure fl_text_buffer_secondary_unselect - (TB : in System.Address); - pragma Import (C, fl_text_buffer_secondary_unselect, "fl_text_buffer_secondary_unselect"); - pragma Inline (fl_text_buffer_secondary_unselect); - - - - - procedure fl_text_buffer_highlight - (TB : in System.Address; - F, T : in Interfaces.C.int); - pragma Import (C, fl_text_buffer_highlight, "fl_text_buffer_highlight"); - pragma Inline (fl_text_buffer_highlight); - - function fl_text_buffer_highlight_text - (TB : in System.Address) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_text_buffer_highlight_text, "fl_text_buffer_highlight_text"); - pragma Inline (fl_text_buffer_highlight_text); - - procedure fl_text_buffer_unhighlight - (TB : in System.Address); - pragma Import (C, fl_text_buffer_unhighlight, "fl_text_buffer_unhighlight"); - pragma Inline (fl_text_buffer_unhighlight); - - - - - function fl_text_buffer_findchar_forward - (TB : in System.Address; - SP : in Interfaces.C.int; - IT : in Interfaces.C.unsigned; - FP : out Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_findchar_forward, "fl_text_buffer_findchar_forward"); - pragma Inline (fl_text_buffer_findchar_forward); - - function fl_text_buffer_findchar_backward - (TB : in System.Address; - SP : in Interfaces.C.int; - IT : in Interfaces.C.unsigned; - FP : out Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_findchar_backward, "fl_text_buffer_findchar_backward"); - pragma Inline (fl_text_buffer_findchar_backward); - - function fl_text_buffer_search_forward - (TB : in System.Address; - SP : in Interfaces.C.int; - IT : in Interfaces.C.char_array; - FP : out Interfaces.C.int; - CA : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_search_forward, "fl_text_buffer_search_forward"); - pragma Inline (fl_text_buffer_search_forward); - - function fl_text_buffer_search_backward - (TB : in System.Address; - SP : in Interfaces.C.int; - IT : in Interfaces.C.char_array; - FP : out Interfaces.C.int; - CA : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_search_backward, "fl_text_buffer_search_backward"); - pragma Inline (fl_text_buffer_search_backward); - - - - - function fl_text_buffer_word_start - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_word_start, "fl_text_buffer_word_start"); - pragma Inline (fl_text_buffer_word_start); - - function fl_text_buffer_word_end - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_word_end, "fl_text_buffer_word_end"); - pragma Inline (fl_text_buffer_word_end); - - function fl_text_buffer_line_start - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_line_start, "fl_text_buffer_line_start"); - pragma Inline (fl_text_buffer_line_start); - - function fl_text_buffer_line_end - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_line_end, "fl_text_buffer_line_end"); - pragma Inline (fl_text_buffer_line_end); - - function fl_text_buffer_line_text - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_text_buffer_line_text, "fl_text_buffer_line_text"); - pragma Inline (fl_text_buffer_line_text); - - function fl_text_buffer_skip_lines - (TB : in System.Address; - S, L : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_skip_lines, "fl_text_buffer_skip_lines"); - pragma Inline (fl_text_buffer_skip_lines); - - function fl_text_buffer_rewind_lines - (TB : in System.Address; - S, L : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_rewind_lines, "fl_text_buffer_rewind_lines"); - pragma Inline (fl_text_buffer_rewind_lines); - - function fl_text_buffer_skip_displayed_characters - (TB : in System.Address; - S, N : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_skip_displayed_characters, - "fl_text_buffer_skip_displayed_characters"); - pragma Inline (fl_text_buffer_skip_displayed_characters); - - - - - procedure fl_text_buffer_canundo - (TB : in System.Address; - F : in Interfaces.C.char); - pragma Import (C, fl_text_buffer_canundo, "fl_text_buffer_canundo"); - pragma Inline (fl_text_buffer_canundo); - - procedure fl_text_buffer_copy - (TB, TB2 : in System.Address; - S, F, I : in Interfaces.C.int); - pragma Import (C, fl_text_buffer_copy, "fl_text_buffer_copy"); - pragma Inline (fl_text_buffer_copy); - - function fl_text_buffer_utf8_align - (TB : in System.Address; - P : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_text_buffer_utf8_align, "fl_text_buffer_utf8_align"); - pragma Inline (fl_text_buffer_utf8_align); - - - - - procedure Modify_Callback_Hook - (Pos : in Interfaces.C.int; - Inserted, Deleted, Restyled : in Interfaces.C.int; - Text : in Interfaces.C.Strings.chars_ptr; - UD : in System.Address) - is - Action : Modification; - Place : Position := Position (Pos); - Length : Natural; - Deleted_Text : Unbounded_String := To_Unbounded_String (""); - - Ada_Text_Buffer : access Text_Buffer := - Text_Buffer_Convert.To_Pointer (UD); - begin - if Ada_Text_Buffer.CB_Active then - if Inserted > 0 then - Length := Natural (Inserted); - Action := Insert; - elsif Deleted > 0 then - Length := Natural (Deleted); - Action := Delete; - if Text /= Interfaces.C.Strings.Null_Ptr then - Deleted_Text := To_Unbounded_String (Interfaces.C.Strings.Value (Text)); - end if; - elsif Restyled > 0 then - Length := Natural (Restyled); - Action := Restyle; - else - Length := 0; - Action := None; - end if; - - for CB of Ada_Text_Buffer.Modify_CBs loop - CB.all (Action, Place, Length, To_String (Deleted_Text)); - end loop; - end if; - end Modify_Callback_Hook; - - - procedure Predelete_Callback_Hook - (Pos, Deleted : in Interfaces.C.int; - UD : in System.Address) - is - Place : Position := Position (Pos); - Length : Natural := Natural (Deleted); - - Ada_Text_Buffer : access Text_Buffer := - Text_Buffer_Convert.To_Pointer (UD); - begin - if Ada_Text_Buffer.CB_Active then - for CB of Ada_Text_Buffer.Predelete_CBs loop - CB.all (Place, Length); - end loop; - end if; - end Predelete_Callback_Hook; - - - - - procedure Finalize - (This : in out Text_Buffer) is - begin - if This.Void_Ptr /= System.Null_Address and then - This in Text_Buffer'Class - then - free_fl_text_buffer (This.Void_Ptr); - This.Void_Ptr := System.Null_Address; - end if; - end Finalize; - - - - - package body Forge is - - function Create - (Requested_Size : in Natural := 0; - Preferred_Gap_Size : in Natural := 1024) - return Text_Buffer is - begin - return This : Text_Buffer do - This.Void_Ptr := new_fl_text_buffer - (Interfaces.C.int (Requested_Size), - Interfaces.C.int (Preferred_Gap_Size)); - - This.Modify_CBs := Modify_Vectors.Empty_Vector; - This.Predelete_CBs := Predelete_Vectors.Empty_Vector; - This.CB_Active := True; - - fl_text_buffer_add_modify_callback - (This.Void_Ptr, - Modify_Callback_Hook'Address, - This'Address); - fl_text_buffer_add_predelete_callback - (This.Void_Ptr, - Predelete_Callback_Hook'Address, - This'Address); - end return; - end Create; - - end Forge; - - - - - procedure Add_Modify_Callback - (This : in out Text_Buffer; - Func : in Modify_Callback) is - begin - This.Modify_CBs.Append (Func); - end Add_Modify_Callback; - - - procedure Add_Predelete_Callback - (This : in out Text_Buffer; - Func : in Predelete_Callback) is - begin - This.Predelete_CBs.Append (Func); - end Add_Predelete_Callback; - - - procedure Remove_Modify_Callback - (This : in out Text_Buffer; - Func : in Modify_Callback) is - begin - for I in reverse This.Modify_CBs.First_Index .. This.Modify_CBs.Last_Index loop - if This.Modify_CBs.Element (I) = Func then - This.Modify_CBs.Delete (I); - return; - end if; - end loop; - end Remove_Modify_Callback; - - - procedure Remove_Predelete_Callback - (This : in out Text_Buffer; - Func : in Predelete_Callback) is - begin - for I in reverse This.Predelete_CBs.First_Index .. This.Predelete_CBs.Last_Index loop - if This.Predelete_CBs.Element (I) = Func then - This.Predelete_CBs.Delete (I); - return; - end if; - end loop; - end Remove_Predelete_Callback; - - - procedure Call_Modify_Callbacks - (This : in out Text_Buffer) is - begin - fl_text_buffer_call_modify_callbacks (This.Void_Ptr); - end Call_Modify_Callbacks; - - - procedure Call_Predelete_Callbacks - (This : in out Text_Buffer) is - begin - fl_text_buffer_call_predelete_callbacks (This.Void_Ptr); - end Call_Predelete_Callbacks; - - - procedure Enable_Callbacks - (This : in out Text_Buffer) is - begin - This.CB_Active := True; - end Enable_Callbacks; - - - procedure Disable_Callbacks - (This : in out Text_Buffer) is - begin - This.CB_Active := False; - end Disable_Callbacks; - - - - - procedure Load_File - (This : in out Text_Buffer; - Name : in String; - Buffer : in Natural := 128 * 1024) - is - Err_No : Interfaces.C.int := fl_text_buffer_loadfile - (This.Void_Ptr, - Interfaces.C.To_C (Name), - Interfaces.C.int (Buffer)); - begin - if Err_No /= 0 then - raise Storage_Error; - end if; - end Load_File; - - - procedure Append_File - (This : in out Text_Buffer; - Name : in String; - Buffer : in Natural := 128 * 1024) - is - Err_No : Interfaces.C.int := fl_text_buffer_appendfile - (This.Void_Ptr, - Interfaces.C.To_C (Name), - Interfaces.C.int (Buffer)); - begin - if Err_No /= 0 then - raise Storage_Error; - end if; - end Append_File; - - - procedure Insert_File - (This : in out Text_Buffer; - Name : in String; - Place : in Position; - Buffer : in Natural := 128 * 1024) - is - Err_No : Interfaces.C.int := fl_text_buffer_insertfile - (This.Void_Ptr, - Interfaces.C.To_C (Name), - Interfaces.C.int (Place), - Interfaces.C.int (Buffer)); - begin - if Err_No /= 0 then - raise Storage_Error; - end if; - end Insert_File; - - - procedure Output_File - (This : in Text_Buffer; - Name : in String; - Start, Finish : in Position; - Buffer : in Natural := 128 * 1024) - is - Err_No : Interfaces.C.int := fl_text_buffer_outputfile - (This.Void_Ptr, - Interfaces.C.To_C (Name), - Interfaces.C.int (Start), - Interfaces.C.int (Finish), - Interfaces.C.int (Buffer)); - begin - if Err_No /= 0 then - raise Storage_Error; - end if; - end Output_File; - - - procedure Save_File - (This : in Text_Buffer; - Name : in String; - Buffer : in Natural := 128 * 1024) - is - Err_No : Interfaces.C.int := fl_text_buffer_savefile - (This.Void_Ptr, - Interfaces.C.To_C (Name), - Interfaces.C.int (Buffer)); - begin - if Err_No /= 0 then - raise Storage_Error; - end if; - end Save_File; - - - - - procedure Insert_Text - (This : in out Text_Buffer; - Place : in Position; - Text : in String) is - begin - fl_text_buffer_insert - (This.Void_Ptr, - Interfaces.C.int (Place), - Interfaces.C.To_C (Text)); - end Insert_Text; - - - procedure Append_Text - (This : in out Text_Buffer; - Text : in String) is - begin - fl_text_buffer_append - (This.Void_Ptr, - Interfaces.C.To_C (Text)); - end Append_Text; - - - procedure Replace_Text - (This : in out Text_Buffer; - Start, Finish : in Position; - Text : in String) is - begin - fl_text_buffer_replace - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish), - Interfaces.C.To_C (Text)); - end Replace_Text; - - - procedure Remove_Text - (This : in out Text_Buffer; - Start, Finish : in Position) is - begin - fl_text_buffer_remove - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish)); - end Remove_Text; - - - function Get_Entire_Text - (This : in Text_Buffer) - return String - is - Raw : Interfaces.C.Strings.chars_ptr := - fl_text_buffer_get_text (This.Void_Ptr); - begin - if Raw = Interfaces.C.Strings.Null_Ptr then - return ""; - else - declare - Ada_String : String := Interfaces.C.Strings.Value (Raw); - begin - Interfaces.C.Strings.Free (Raw); - return Ada_String; - end; - end if; - end Get_Entire_Text; - - - procedure Set_Entire_Text - (This : in out Text_Buffer; - Text : in String) is - begin - fl_text_buffer_set_text (This.Void_Ptr, Interfaces.C.To_C (Text)); - end Set_Entire_Text; - - - function Byte_At - (This : in Text_Buffer; - Place : in Position) - return Character is - begin - return Character'Val (Interfaces.C.char'Pos - (fl_text_buffer_byte_at (This.Void_Ptr, Interfaces.C.int (Place)))); - end Byte_At; - - - function Character_At - (This : in Text_Buffer; - Place : in Position) - return Character is - begin - return Character'Val (fl_text_buffer_char_at - (This.Void_Ptr, - Interfaces.C.int (Place))); - end Character_At; - - - function Text_At - (This : in Text_Buffer; - Start, Finish : in Position) - return String - is - C_Str : Interfaces.C.Strings.chars_ptr := fl_text_buffer_text_range - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish)); - begin - if C_Str = Interfaces.C.Strings.Null_Ptr then - return ""; - else - declare - The_Text : String := Interfaces.C.Strings.Value (C_Str); - begin - Interfaces.C.Strings.Free (C_Str); - return The_Text; - end; - end if; - end Text_At; - - - function Next_Char - (This : in Text_Buffer; - Place : in Position) - return Character is - begin - return Character'Val (fl_text_buffer_next_char - (This.Void_Ptr, - Interfaces.C.int (Place))); - end Next_Char; - - - function Prev_Char - (This : in Text_Buffer; - Place : in Position) - return Character is - begin - return Character'Val (fl_text_buffer_prev_char - (This.Void_Ptr, - Interfaces.C.int (Place))); - end Prev_Char; - - - - - function Count_Displayed_Characters - (This : in Text_Buffer; - Start, Finish : in Position) - return Integer is - begin - return Integer (fl_text_buffer_count_displayed_characters - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish))); - end Count_Displayed_Characters; - - - function Count_Lines - (This : in Text_Buffer; - Start, Finish : in Position) - return Integer is - begin - return Integer (fl_text_buffer_count_lines - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish))); - end Count_Lines; - - - function Length - (This : in Text_Buffer) - return Natural is - begin - return Natural (fl_text_buffer_length (This.Void_Ptr)); - end Length; - - - function Get_Tab_Width - (This : in Text_Buffer) - return Natural is - begin - return Natural (fl_text_buffer_get_tab_distance (This.Void_Ptr)); - end Get_Tab_Width; - - - procedure Set_Tab_Width - (This : in out Text_Buffer; - To : in Natural) is - begin - fl_text_buffer_set_tab_distance (This.Void_Ptr, Interfaces.C.int (To)); - end Set_Tab_Width; - - - - - function Get_Selection - (This : in Text_Buffer; - Start, Finish : out Position) - return Boolean - is - S, F : Interfaces.C.int; - begin - if fl_text_buffer_selection_position (This.Void_Ptr, S, F) /= 0 then - Start := Position (S); - Finish := Position (F); - return True; - else - return False; - end if; - end Get_Selection; - - - function Get_Secondary_Selection - (This : in Text_Buffer; - Start, Finish : out Position) - return Boolean - is - S, F : Interfaces.C.int; - begin - if fl_text_buffer_secondary_selection_position (This.Void_Ptr, S, F) /= 0 then - Start := Position (S); - Finish := Position (F); - return True; - else - return False; - end if; - end Get_Secondary_Selection; - - - procedure Set_Selection - (This : in out Text_Buffer; - Start, Finish : in Position) is - begin - fl_text_buffer_select - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish)); - end Set_Selection; - - - procedure Set_Secondary_Selection - (This : in out Text_Buffer; - Start, Finish : in Position) is - begin - fl_text_buffer_secondary_select - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish)); - end Set_Secondary_Selection; - - - function Has_Selection - (This : in Text_Buffer) - return Boolean is - begin - return fl_text_buffer_selected (This.Void_Ptr) /= 0; - end Has_Selection; - - - function Has_Secondary_Selection - (This : in Text_Buffer) - return Boolean is - begin - return fl_text_buffer_secondary_selected (This.Void_Ptr) /= 0; - end Has_Secondary_Selection; - - - function Selection_Text - (This : in Text_Buffer) - return String - is - Raw : Interfaces.C.Strings.chars_ptr := - fl_text_buffer_selection_text (This.Void_Ptr); - begin - if Raw = Interfaces.C.Strings.Null_Ptr then - return ""; - else - declare - Ada_String : String := Interfaces.C.Strings.Value (Raw); - begin - Interfaces.C.Strings.Free (Raw); - return Ada_String; - end; - end if; - end Selection_Text; - - - function Secondary_Selection_Text - (This : in Text_Buffer) - return String - is - Raw : Interfaces.C.Strings.chars_ptr := - fl_text_buffer_secondary_selection_text (This.Void_Ptr); - begin - if Raw = Interfaces.C.Strings.Null_Ptr then - return ""; - else - declare - Ada_String : String := Interfaces.C.Strings.Value (Raw); - begin - Interfaces.C.Strings.Free (Raw); - return Ada_String; - end; - end if; - end Secondary_Selection_Text; - - - procedure Replace_Selection - (This : in out Text_Buffer; - Text : in String) is - begin - fl_text_buffer_replace_selection (This.Void_Ptr, Interfaces.C.To_C (Text)); - end Replace_Selection; - - - procedure Replace_Secondary_Selection - (This : in out Text_Buffer; - Text : in String) is - begin - fl_text_buffer_replace_secondary_selection (This.Void_Ptr, Interfaces.C.To_C (Text)); - end Replace_Secondary_Selection; - - - procedure Remove_Selection - (This : in out Text_Buffer) is - begin - fl_text_buffer_remove_selection (This.Void_Ptr); - end Remove_Selection; - - - procedure Remove_Secondary_Selection - (This : in out Text_Buffer) is - begin - fl_text_buffer_remove_secondary_selection (This.Void_Ptr); - end Remove_Secondary_Selection; - - - procedure Unselect - (This : in out Text_Buffer) is - begin - fl_text_buffer_unselect (This.Void_Ptr); - end Unselect; - - - procedure Secondary_Unselect - (This : in out Text_Buffer) is - begin - fl_text_buffer_secondary_unselect (This.Void_Ptr); - end Secondary_Unselect; - - - - - procedure Get_Highlight - (This : in Text_Buffer; - Start, Finish : out Position) is - begin - Start := This.High_From; - Finish := This.High_To; - end Get_Highlight; - - - procedure Set_Highlight - (This : in out Text_Buffer; - Start, Finish : in Position) is - begin - This.High_From := Start; - This.High_To := Finish; - fl_text_buffer_highlight - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish)); - end Set_Highlight; - - - function Get_Highlighted_Text - (This : in Text_Buffer) - return String - is - Raw : Interfaces.C.Strings.chars_ptr := - fl_text_buffer_highlight_text (This.Void_Ptr); - begin - if Raw = Interfaces.C.Strings.Null_Ptr then - return ""; - else - declare - Ada_String : String := Interfaces.C.Strings.Value (Raw); - begin - Interfaces.C.Strings.Free (Raw); - return Ada_String; - end; - end if; - end Get_Highlighted_Text; - - - procedure Unhighlight - (This : in out Text_Buffer) is - begin - fl_text_buffer_unhighlight (This.Void_Ptr); - end Unhighlight; - - - - - function Findchar_Forward - (This : in Text_Buffer; - Start_At : in Position; - Item : in Character; - Found_At : out Position) - return Boolean - is - Place : Interfaces.C.int; - begin - if fl_text_buffer_findchar_forward - (This.Void_Ptr, - Interfaces.C.int (Start_At), - Character'Pos (Item), - Place) /= 0 - then - Found_At := Position (Place); - return True; - else - return False; - end if; - end Findchar_Forward; - - - function Findchar_Backward - (This : in Text_Buffer; - Start_At : in Position; - Item : in Character; - Found_At : out Position) - return Boolean - is - Place : Interfaces.C.int; - begin - if fl_text_buffer_findchar_backward - (This.Void_Ptr, - Interfaces.C.int (Start_At), - Character'Pos (Item), - Place) /= 0 - then - Found_At := Position (Place); - return True; - else - return False; - end if; - end Findchar_Backward; - - - function Search_Forward - (This : in Text_Buffer; - Start_At : in Position; - Item : in String; - Found_At : out Position; - Match_Case : in Boolean := False) - return Boolean - is - Place : Interfaces.C.int; - begin - if fl_text_buffer_search_forward - (This.Void_Ptr, - Interfaces.C.int (Start_At), - Interfaces.C.To_C (Item), - Place, - Boolean'Pos (Match_Case)) /= 0 - then - Found_At := Position (Place); - return True; - else - return False; - end if; - end Search_Forward; - - - function Search_Backward - (This : in Text_Buffer; - Start_At : in Position; - Item : in String; - Found_At : out Position; - Match_Case : in Boolean := False) - return Boolean - is - Place : Interfaces.C.int; - begin - if fl_text_buffer_search_backward - (This.Void_Ptr, - Interfaces.C.int (Start_At), - Interfaces.C.To_C (Item), - Place, - Boolean'Pos (Match_Case)) /= 0 - then - Found_At := Position (Place); - return True; - else - return False; - end if; - end Search_Backward; - - - - - function Word_Start - (This : in Text_Buffer; - Place : in Position) - return Position is - begin - return Position (fl_text_buffer_word_start (This.Void_Ptr, Interfaces.C.int (Place))); - end Word_Start; - - - function Word_End - (This : in Text_Buffer; - Place : in Position) - return Position is - begin - return Position (fl_text_buffer_word_end (This.Void_Ptr, Interfaces.C.int (Place))); - end Word_End; - - - function Line_Start - (This : in Text_Buffer; - Place : in Position) - return Position is - begin - return Position (fl_text_buffer_line_start (This.Void_Ptr, Interfaces.C.int (Place))); - end Line_Start; - - - function Line_End - (This : in Text_Buffer; - Place : in Position) - return Position is - begin - return Position (fl_text_buffer_line_end (This.Void_Ptr, Interfaces.C.int (Place))); - end Line_End; - - - function Line_Text - (This : in Text_Buffer; - Place : in Position) - return String - is - Raw : Interfaces.C.Strings.chars_ptr := fl_text_buffer_line_text - (This.Void_Ptr, - Interfaces.C.int (Place)); - begin - if Raw = Interfaces.C.Strings.Null_Ptr then - return ""; - else - declare - Ada_String : String := Interfaces.C.Strings.Value (Raw); - begin - Interfaces.C.Strings.Free (Raw); - return Ada_String; - end; - end if; - end Line_Text; - - - function Skip_Lines - (This : in out Text_Buffer; - Start : in Position; - Lines : in Natural) - return Position is - begin - return Natural (fl_text_buffer_skip_lines - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Lines))); - end Skip_Lines; - - - function Rewind_Lines - (This : in out Text_Buffer; - Start : in Position; - Lines : in Natural) - return Position is - begin - return Natural (fl_text_buffer_rewind_lines - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Lines))); - end Rewind_Lines; - - - function Skip_Displayed_Characters - (This : in Text_Buffer; - Start : in Position; - Chars : in Natural) - return Position is - begin - return Natural (fl_text_buffer_skip_displayed_characters - (This.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Chars))); - end Skip_Displayed_Characters; - - - - - procedure Can_Undo - (This : in out Text_Buffer; - Flag : in Boolean) is - begin - fl_text_buffer_canundo (This.Void_Ptr, Interfaces.C.char'Val (Boolean'Pos (Flag))); - end Can_Undo; - - - procedure Copy - (This : in out Text_Buffer; - From : in Text_Buffer; - Start, Finish : in Position; - Insert_Pos : in Position) is - begin - fl_text_buffer_copy - (This.Void_Ptr, - From.Void_Ptr, - Interfaces.C.int (Start), - Interfaces.C.int (Finish), - Interfaces.C.int (Insert_Pos)); - end Copy; - - - function UTF8_Align - (This : in Text_Buffer; - Place : in Position) - return Position is - begin - return Position (fl_text_buffer_utf8_align (This.Void_Ptr, Interfaces.C.int (Place))); - end UTF8_Align; - - -end FLTK.Text_Buffers; - |