/* * Helpers for the API transition from 4.0.30 to 4.0.31 * * In order to keep your layer on the old API you don't have to do anything, this provides wrappers * idential to the 4.0.30 API. * In order to transition your entire layer over to the 4.0.31 API define 'REMOVE_TRANSITION_HELPER_31' and fix errors. * Or you can do it step by step by removing a few wrappers at a time. * This transition helper will be removed in a future version so it is recommended to get off sooner or laster. * * Tips on transitioning: * * Wrather than just try to inline this code everywhere, you can simplify things quite a lot by storing references * to buffers and views and Buffer_ID and View_ID instead of Buffer_Summary and View_Summary. * Just get the summaries when you need information in those structures. * * You will make your code simpler if you stick to String as much as possible, but whenever you want to you can switch * to any string type you have to String by calling make_string(char_ptr, length) or make_string_slowly(null_terminated_c_str). * To pull the char ptr and length out of a String named "string": string.str and str.size. * If you need a null terminated string from a String use get_null_terminated in 4coder_helper.cpp * */ // TOP #if !defined(REMOVE_TRANSITION_HELPER_31) #define BatchEdit_PreserveTokens 0 #define BatchEdit_Normal 0 /* DOC(Buffer_Summary acts as a handle to a buffer and describes the state of the buffer.) DOC_SEE(Access_Flag) DOC_SEE(Dirty_State) */ STRUCT Buffer_Summary{ /* DOC(This field indicates whether the Buffer_Summary describes a buffer that is open in 4coder. When this field is false the summary is referred to as a "null summary".) */ b32 exists; /* DOC(If this is not a null summary, this field indicates whether the buffer has finished loading.) */ b32 ready; /* DOC(If this is not a null summary this field is the id of the associated buffer. If this is a null summary then buffer_id is 0.) */ Buffer_ID buffer_id; /* DOC(If this is not a null summary, this field contains flags describing the protection status of the buffer.) */ Access_Flag lock_flags; /* DOC(If this is not a null summary, this field specifies the number of bytes in the buffer.) */ i32 size; /* DOC(If this is not a null summary, this field specifies the number of lines in the buffer.) */ i32 line_count; /* DOC(If this is not a null summary, this field specifies the file name associated to this buffer.) */ char file_name[256]; /* DOC(This field specifies the length of the file_name string.) */ i32 file_name_len; /* DOC(If this is not a null summary, this field specifies the name of the buffer.) */ char buffer_name[256]; /* DOC(This field specifies the length of the buffer_name string.) */ i32 buffer_name_len; /* DOC(This field indicates the dirty state of the buffer.) */ Dirty_State dirty; /* DOC(If this is not a null summary, this field indicates whether the buffer is set to lex tokens.) */ b32 is_lexed; /* DOC(If this is not a null summary, this field indicates whether the buffer has up to date tokens available. If this field is false, it may simply mean the tokens are still being generated in a background task and will be available later. If that is the case, is_lexed will be true to indicate that the buffer is trying to get it's tokens up to date.) */ b32 tokens_are_ready; /* DOC(If this is not a null summary, this field specifies the id of the command map for this buffer.) */ i32 map_id; /* DOC(If this is not a null summary, this field indicates whether the buffer 'prefers' wrapped lines.) */ b32 unwrapped_lines; }; /* DOC(View_Summary acts as a handle to a view and describes the state of the view.) DOC_SEE(Access_Flag) DOC_SEE(Full_Cursor) DOC_SEE(GUI_Scroll_Vars) */ STRUCT View_Summary{ /* DOC(This field indicates whether the View_Summary describes a view that is open in 4coder. When this field is false the summary is referred to as a "null summary". ) */ b32 exists; /* DOC(This field is the id of the associated view. If this is a null summary then view_id is 0. ) */ i32 view_id; /* DOC(Then this is the id of the buffer this view currently sees.) */ i32 buffer_id; /* DOC(This field contains flags describing the protection status of the view.) */ Access_Flag lock_flags; /* DOC(This describes the position of the cursor.) */ Full_Cursor cursor; /* DOC(This describes the position of the mark.) */ Full_Cursor mark; /* DOC(This is the x position that is maintained in vertical navigation.) */ f32 preferred_x; /* DOC(This specifies the height of a line rendered in the view.) */ f32 line_height; /* DOC(This indicates that the view is set to render with unwrapped lines.) */ b32 unwrapped_lines; /* DOC(This indicates that the view is set to highlight white space.) */ b32 show_whitespace; /* DOC(This describes the screen position in which this view is displayed.) */ Rect_f32 view_region; /* DOC(TODO) */ Rect_f32 render_region; /* DOC(This describes the scrolling position inside the view.) */ GUI_Scroll_Vars scroll_vars; }; /* DOC(A Seek_Boundary_Flag field specifies a set of "boundary" types used in seeks for the beginning or end of different types of words.) */ typedef u32 Seek_Boundary_Flag; enum{ BoundaryWhitespace = 0x1, BoundaryToken = 0x2, BoundaryAlphanumeric = 0x4, BoundaryCamelCase = 0x8 }; // NOTE(allen|4.0.31): Stream_Tokens has been deprecated in favor of the Token_Iterator. // For examples of usage: 4coder_function_list.cpp 4coder_scope_commands.cpp // If you want to keep your code working easily uncomment the typedef for Stream_Tokens. struct Stream_Tokens_DEP{ Application_Links *app; Buffer_ID buffer_id; Cpp_Token *base_tokens; Cpp_Token *tokens; i32 start; i32 end; i32 count; i32 token_count; }; //typedef Stream_Tokens_DEP Stream_Tokens; #endif // BOTTOM