Text: buffer from text, optional length return arg
authorCampbell Barton <ideasman42@gmail.com>
Thu, 11 Jul 2019 04:18:39 +0000 (14:18 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 11 Jul 2019 04:19:55 +0000 (14:19 +1000)
No functional changes (currently unused).

source/blender/blenkernel/BKE_text.h
source/blender/blenkernel/intern/text.c
source/blender/editors/space_text/text_ops.c
source/blender/python/intern/bpy_interface.c

index d26b9a866355995086b4a6904ab761bc0abca9e6..c78faa9dd188741d8a8045d67133d4436b6eaa82 100644 (file)
@@ -54,7 +54,7 @@ void BKE_text_write(struct Text *text, struct TextUndoBuf *utxt, const char *str
 int BKE_text_file_modified_check(struct Text *text);
 void BKE_text_file_modified_ignore(struct Text *text);
 
-char *txt_to_buf(struct Text *text);
+char *txt_to_buf(struct Text *text, int *r_buf_strlen);
 void txt_clean_text(struct Text *text);
 void txt_order_cursors(struct Text *text, const bool reverse);
 int txt_find_string(struct Text *text, const char *findstr, int wrap, int match_case);
@@ -83,7 +83,7 @@ void txt_delete_selected(struct Text *text, struct TextUndoBuf *utxt);
 void txt_sel_all(struct Text *text);
 void txt_sel_clear(struct Text *text);
 void txt_sel_line(struct Text *text);
-char *txt_sel_to_buf(struct Text *text);
+char *txt_sel_to_buf(struct Text *text, int *r_buf_strlen);
 void txt_insert_buf(struct Text *text, struct TextUndoBuf *utxt, const char *in_buffer);
 void txt_undo_add_op(struct Text *text, struct TextUndoBuf *utxt, int op);
 void txt_do_undo(struct Text *text, struct TextUndoBuf *utxt);
index 7d5862c1fb6776b50f2432d32f66aab1820ae5e7..1d6de64625524b46673cb71c3634d7fb2c56999c 100644 (file)
@@ -1289,7 +1289,7 @@ static void txt_delete_sel(Text *text, TextUndoBuf *utxt)
   txt_order_cursors(text, false);
 
   if (!undoing) {
-    buf = txt_sel_to_buf(text);
+    buf = txt_sel_to_buf(text, NULL);
     txt_undo_add_blockop(text, utxt, UNDO_DBLOCK, buf);
     MEM_freeN(buf);
   }
@@ -1353,13 +1353,17 @@ void txt_sel_line(Text *text)
 /* Cut and paste functions */
 /***************************/
 
-char *txt_to_buf(Text *text)
+char *txt_to_buf(Text *text, int *r_buf_strlen)
 {
   int length;
   TextLine *tmp, *linef, *linel;
   int charf, charl;
   char *buf;
 
+  if (r_buf_strlen) {
+    *r_buf_strlen = 0;
+  }
+
   if (!text->curl) {
     return NULL;
   }
@@ -1419,6 +1423,10 @@ char *txt_to_buf(Text *text)
     buf[length] = 0;
   }
 
+  if (r_buf_strlen) {
+    *r_buf_strlen = length;
+  }
+
   return buf;
 }
 
@@ -1475,13 +1483,17 @@ int txt_find_string(Text *text, const char *findstr, int wrap, int match_case)
   }
 }
 
-char *txt_sel_to_buf(Text *text)
+char *txt_sel_to_buf(Text *text, int *r_buf_strlen)
 {
   char *buf;
   int length = 0;
   TextLine *tmp, *linef, *linel;
   int charf, charl;
 
+  if (r_buf_strlen) {
+    *r_buf_strlen = 0;
+  }
+
   if (!text->curl) {
     return NULL;
   }
@@ -1556,6 +1568,10 @@ char *txt_sel_to_buf(Text *text)
     buf[length] = 0;
   }
 
+  if (r_buf_strlen) {
+    *r_buf_strlen = length;
+  }
+
   return buf;
 }
 
index 63d4f3e3119ad5e21942bbc3e6c2cba33135aff0..33bacb0a95f8d2e01bc53aef2a8c2dc1f3ff3da7 100644 (file)
@@ -932,7 +932,7 @@ static void txt_copy_clipboard(Text *text)
     return;
   }
 
-  buf = txt_sel_to_buf(text);
+  buf = txt_sel_to_buf(text, NULL);
 
   if (buf) {
     WM_clipboard_text_set(buf, 0);
@@ -2994,7 +2994,7 @@ static void text_cursor_set_exit(bContext *C, wmOperator *op)
   char *buffer;
 
   if (txt_has_sel(text)) {
-    buffer = txt_sel_to_buf(text);
+    buffer = txt_sel_to_buf(text, NULL);
     WM_clipboard_text_set(buffer, 1);
     MEM_freeN(buffer);
   }
@@ -3308,7 +3308,7 @@ static int text_find_and_replace(bContext *C, wmOperator *op, short mode)
 
   /* Replace current */
   if (mode != TEXT_FIND && txt_has_sel(text)) {
-    tmp = txt_sel_to_buf(text);
+    tmp = txt_sel_to_buf(text, NULL);
 
     if (flags & ST_MATCH_CASE) {
       found = STREQ(st->findstr, tmp);
@@ -3406,7 +3406,7 @@ static int text_find_set_selected_exec(bContext *C, wmOperator *op)
   Text *text = CTX_data_edit_text(C);
   char *tmp;
 
-  tmp = txt_sel_to_buf(text);
+  tmp = txt_sel_to_buf(text, NULL);
   BLI_strncpy(st->findstr, tmp, ST_MAX_FIND_STR);
   MEM_freeN(tmp);
 
@@ -3437,7 +3437,7 @@ static int text_replace_set_selected_exec(bContext *C, wmOperator *UNUSED(op))
   Text *text = CTX_data_edit_text(C);
   char *tmp;
 
-  tmp = txt_sel_to_buf(text);
+  tmp = txt_sel_to_buf(text, NULL);
   BLI_strncpy(st->replacestr, tmp, ST_MAX_FIND_STR);
   MEM_freeN(tmp);
 
index b34a41b5af66c3a2306a39ffccb1259273c55322..71bc01d6b9810f7f486203ccf92c0697e667d715 100644 (file)
@@ -457,7 +457,7 @@ static bool python_script_exec(
 
       fn_dummy_py = PyC_UnicodeFromByte(fn_dummy);
 
-      buf = txt_to_buf(text);
+      buf = txt_to_buf(text, NULL);
       text->compiled = Py_CompileStringObject(buf, fn_dummy_py, Py_file_input, NULL, -1);
       MEM_freeN(buf);