1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
4 for INTEL64(R), AMD64(R)
6 Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
11 1. Redistributions of source code must retain the above copyright notice,
12 this list of conditions and the following disclaimer.
13 2. Redistributions in binary form must reproduce the above copyright
14 notice, this list of conditions and the following disclaimer in the
15 documentation and/or other materials provided with the distribution.
17 THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 OF THE POSSIBILITY OF SUCH DAMAGE.
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
31 /* File Info -----------------------------------------------------------
35 ----------------------------------------------------------------------*/
37 #define DRD64_SRC_LIBEDITTEXT_LINECTRL
38 #include"drd64_libedittext.h"
40 #define LOCATION(n) DRD64_ERR_LOCATION( \
41 DRD64_ERROR_MODULE_LIBEDITTEXT, DRD64_ERROR_ARCH_NODEPEND, \
42 DRD64_SRC_LIBEDITTEXT_LINECTRL_SRCID, (n))
45 /*----------------------------------------------------------------------
46 ----------------------------------------------------------------------*/
47 #define FUNCID_LibEditText_LineCtrl_DeleteLine 0x01
48 LIBEDITTEXT_LINECTRL_EXTERN
50 LibEditText_LineCtrl_DeleteLine(
51 LibEditText_TextInfo *p_tinfo,
52 LibEditText_LineInfo *p_line,
60 LibEditText_LineInfo *p_lbefore;
61 LibEditText_LineInfo *p_lnext;
63 assert( NULL != p_tinfo );
64 assert( NULL != p_line );
65 assert( p_tinfo->dw_maxline > dw_line );
67 if( 1 == p_tinfo->dw_maxline ) {
68 i_result = LibEditText_LineEdit_ClearLine( p_tinfo, p_line, dw_line );
69 if( 0x00 != i_result ) {
70 LibBrownie_Error_SetErrorInfo(
71 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
72 LOCATION( FUNCID_LibEditText_LineCtrl_DeleteLine ),
73 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
79 LibEditText_CursorCtrl_PreProc_DeleteLine( p_tinfo, dw_line );
81 // Check & Remove Section ---
82 LibEditText_Section_DeleteLine( p_tinfo, dw_line );
85 i_result = LibEditText_LineEdit_ClearLine( p_tinfo, p_line, dw_line );
86 if( 0x00 != i_result ) {
87 LibBrownie_Error_SetErrorInfo(
88 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x02 ),
89 LOCATION( FUNCID_LibEditText_LineCtrl_DeleteLine ),
90 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
95 p_line->dw_strlen = 0;
97 // Remove Link LineInfo ---
98 dw_before = p_line->dw_before;
99 p_lbefore = LINFO(p_tinfo, p_line->dw_before);
100 p_lnext = LINFO(p_tinfo, p_line->dw_next);
102 if( NULL != p_lbefore )
103 { p_lbefore->dw_next = p_line->dw_next; }
104 if( NULL != p_lnext )
105 { p_lnext->dw_before = p_line->dw_before; }
106 if( p_tinfo->dw_line_start == p_line->dw_id )
107 { p_tinfo->dw_line_start = p_line->dw_next; }
108 if( p_tinfo->dw_line_end == p_line->dw_id )
109 { p_tinfo->dw_line_end = p_line->dw_before; }
111 p_line->dw_before = INVALID_LINE;
112 p_line->dw_next = INVALID_LINE;
114 // Remove SortChain ---
115 i_result = LibEditText_LineInfo_RemoveSortChain( p_tinfo, p_line );
116 if( 0x00 != i_result ) {
117 LibBrownie_Error_SetErrorInfo(
118 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x03 ),
119 LOCATION( FUNCID_LibEditText_LineCtrl_DeleteLine ),
120 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
125 // Add EmptyChain ---
126 i_result = LibEditText_LineInfo_SetEmptyLineChain( p_tinfo, p_line );
127 if( 0x00 != i_result ) {
128 LibBrownie_Error_SetErrorInfo(
129 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x04 ),
130 LOCATION( FUNCID_LibEditText_LineCtrl_DeleteLine ),
131 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
136 p_tinfo->dw_maxline--;
138 // If the char. of the before delete-line is 'n', delete 'n' char.
139 p_lbefore = LINFO(p_tinfo, dw_before);
140 if( NULL != p_lbefore ) {
141 if(( p_tinfo->dw_line_end == p_lbefore->dw_id ) && ( 0 < p_lbefore->dw_strlen )) {
142 pb_data = p_tinfo->pb_text + p_lbefore->dw_start + p_lbefore->dw_strlen - 1;
143 if( '\n' == *pb_data ) {
144 p_lbefore->dw_strlen--;
150 LibEditText_CursorCtrl_DeleteLine( p_tinfo, dw_line );
153 if( 0x00 == b_undoflag ) {
154 p_lbefore = LINFO(p_tinfo, p_line->dw_before);
155 if( NULL != p_lbefore ) { dw_pos = p_lbefore->dw_strlen - 1; }
156 else { dw_pos = p_tinfo->dw_undo_pos; }
158 i_result = LibEditText_UndoInfo_SetUndoInfo(
159 p_tinfo, dw_line, dw_pos,
160 LIBEDITTEXT_UNDOCMD_DELETELINE, 0x00, NULL, 0 );
161 if( 0x00 != i_result ) {
162 LibBrownie_Error_SetErrorInfo(
163 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x05 ),
164 LOCATION( FUNCID_LibEditText_LineCtrl_DeleteLine ),
165 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
175 /*----------------------------------------------------------------------
176 ----------------------------------------------------------------------*/
177 #define FUNCID_LibEditText_LineCtrl_JoinLine 0x02
178 LIBEDITTEXT_LINECTRL_EXTERN
180 LibEditText_LineCtrl_JoinLine(
181 LibEditText_TextInfo *p_tinfo,
182 LibEditText_LineInfo *p_ldest,
189 LibEditText_LineInfo *p_lsrc;
192 assert( NULL != p_tinfo );
193 assert( NULL != p_ldest );
195 if(( 1 >= p_tinfo->dw_maxline ) && ( 0 == dw_line )) {
196 LibBrownie_Error_SetErrorInfo(
197 DRD64_WARNING( DRD64_ERROR_PTN_FAILED_ARG, 0x00, 0x01 ),
198 LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
199 errno, (QWord)p_tinfo->dw_maxline, (QWord)dw_line, __LINE__ );
203 if( p_tinfo->dw_line_end == p_ldest->dw_id ) {
204 LibBrownie_Error_SetErrorInfo(
205 DRD64_WARNING( DRD64_ERROR_PTN_FAILED_ARG, 0x00, 0x02 ),
206 LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
207 errno, (QWord)p_tinfo->dw_line_end, (QWord)p_ldest->dw_id, __LINE__ );
212 p_lsrc = LINFO(p_tinfo, p_ldest->dw_next);
213 assert( NULL != p_lsrc );
215 pb_src = p_tinfo->pb_text + p_lsrc->dw_start;
216 dw_pos = p_ldest->dw_strlen - 1;
218 dw_srclen = ((p_tinfo->dw_line_end != p_lsrc->dw_id)
219 ? p_lsrc->dw_strlen - 1 : p_lsrc->dw_strlen );
220 if( 0 < dw_srclen ) {
221 i_result = LibEditText_LineEdit_CopyString(
222 p_tinfo, p_ldest, dw_line, dw_pos, (Byte *)pb_src, dw_srclen );
223 if( 0x00 != i_result ) {
224 LibBrownie_Error_SetErrorInfo(
225 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x03 ),
226 LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
227 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
235 i_result = LibEditText_LineCtrl_DeleteLine( p_tinfo, p_lsrc, (dw_line + 1), 0x00 );
236 if( 0x00 != i_result ) {
237 LibBrownie_Error_SetErrorInfo(
238 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x04 ),
239 LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
240 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
249 /*----------------------------------------------------------------------
250 ----------------------------------------------------------------------*/
251 #define FUNCID_LibEditText_LineCtrl_PushLine 0x03
252 LIBEDITTEXT_LINECTRL_EXTERN
254 LibEditText_LineCtrl_PushLine(
255 LibEditText_TextInfo *p_tinfo,
264 LibEditText_LineInfo *p_lnext;
265 LibEditText_LineInfo *p_lbefore;
266 LibEditText_LineInfo *p_line;
268 assert( NULL != p_tinfo );
270 p_lnext = LINFO(p_tinfo, dw_lnextid);
271 assert( NULL != p_lnext );
273 p_lbefore = LINFO(p_tinfo, p_lnext->dw_before);
275 if( NULL == p_lbefore )
276 { goto goto_LibEditText_LineCtrl_PushLine_prechecked; }
278 if( 0 < p_lbefore->dw_strlen ) {
279 pb_data = p_tinfo->pb_text + p_lbefore->dw_start + p_lbefore->dw_strlen - 1;
280 if( '\n' == *pb_data )
281 { goto goto_LibEditText_LineCtrl_PushLine_prechecked; }
284 // Insert LF in before push-line ---
285 i_result = LibEditText_LineEdit_InsertString(
286 p_tinfo, p_lbefore, (dw_line - 1),
287 (p_lbefore->dw_strlen - 1), (Byte *)"\n", 1, 0x01 );
288 if( 0x00 != i_result ) {
289 LibBrownie_Error_SetErrorInfo(
290 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
291 LOCATION( FUNCID_LibEditText_LineCtrl_PushLine ),
292 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
297 goto_LibEditText_LineCtrl_PushLine_prechecked:
300 { dw_buflength = DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE * 4; }
302 { dw_buflength = dw_length + DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE; }
304 // Get LineInfo struct
305 p_line = LibEditText_LineInfo_GetEmptyLineInfo( p_tinfo, dw_buflength );
306 if( NULL == p_line ) {
307 LibBrownie_Error_SetErrorInfo(
308 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x11 ),
309 LOCATION( FUNCID_LibEditText_LineCtrl_PushLine ),
310 errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ );
315 p_lnext = LINFO(p_tinfo, dw_lnextid);
316 p_lbefore = LINFO(p_tinfo, p_lnext->dw_before);
318 // Link Before & After LineInfo
319 if( NULL != p_lbefore ) {
320 p_lbefore->dw_next = p_line->dw_id;
321 p_line->dw_before = p_lbefore->dw_id;
324 p_line->dw_before = INVALID_LINE;
325 p_tinfo->dw_line_start = p_line->dw_id;
328 p_line->dw_next = p_lnext->dw_id;
329 p_lnext->dw_before = p_line->dw_id;
331 // Set LineInfo to SortChain
332 i_result = LibEditText_LineInfo_AddSortChain( p_tinfo, p_line );
333 if( 0x00 != i_result ) {
334 LibBrownie_Error_SetErrorInfo(
335 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x12 ),
336 LOCATION( FUNCID_LibEditText_LineCtrl_PushLine ),
337 errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ );
342 // Set Init. TextData
343 p_line->dw_strlen = 1;
344 *(p_tinfo->pb_text + p_line->dw_start + 0) = '\n';
345 *(p_tinfo->pb_text + p_line->dw_start + 1) = '\0';
347 // Adjust LineSection
348 i_result = LibEditText_Section_InsertLine( p_tinfo, dw_line );
349 if( 0x00 != i_result ) {
350 LibBrownie_Error_SetErrorInfo(
351 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x13 ),
352 LOCATION( FUNCID_LibEditText_LineCtrl_PushLine ),
353 errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ );
358 p_tinfo->dw_maxline++;
360 LibEditText_CursorCtrl_InsertLine( p_tinfo, dw_line );
363 if( 0x00 == b_undoflag ) {
364 i_result = LibEditText_UndoInfo_SetUndoInfo(
365 p_tinfo, dw_line, p_tinfo->dw_undo_pos,
366 LIBEDITTEXT_UNDOCMD_INSERTLINE, 0x00, NULL, 0 );
367 if( 0x00 != i_result ) {
368 LibBrownie_Error_SetErrorInfo(
369 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x14 ),
370 LOCATION( FUNCID_LibEditText_LineCtrl_PushLine ),
371 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
377 return p_line->dw_id;
381 /*----------------------------------------------------------------------
382 ----------------------------------------------------------------------*/
383 #define FUNCID_LibEditText_LineCtrl_AddLine 0x04
384 LIBEDITTEXT_LINECTRL_EXTERN
386 LibEditText_LineCtrl_AddLine(
387 LibEditText_TextInfo *p_tinfo,
397 LibEditText_LineInfo *p_lnext;
398 LibEditText_LineInfo *p_lbefore;
399 LibEditText_LineInfo *p_line;
401 assert( NULL != p_tinfo );
403 p_lbefore = LINFO(p_tinfo, dw_lbeforeid);
404 if( NULL == p_lbefore )
405 { goto goto_LibEditText_LineCtrl_AddLine_prechecked; }
407 if( 0 < p_lbefore->dw_strlen ) {
408 pb_data = p_tinfo->pb_text + p_lbefore->dw_start + p_lbefore->dw_strlen - 1;
409 if( '\n' == *pb_data )
410 { goto goto_LibEditText_LineCtrl_AddLine_prechecked; }
413 // Insert LF in before Add-Line ---
414 i_result = LibEditText_LineEdit_InsertString(
415 p_tinfo, p_lbefore, dw_line, p_lbefore->dw_strlen,
416 (Byte *)"\n", 1, 0x01 );
417 if( 0x00 != i_result ) {
418 LibBrownie_Error_SetErrorInfo(
419 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
420 LOCATION( FUNCID_LibEditText_LineCtrl_AddLine ),
421 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
426 goto_LibEditText_LineCtrl_AddLine_prechecked:
429 { dw_buflength = DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE * 4; }
431 { dw_buflength = dw_length + DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE; }
433 // Get LineInfo struct
434 p_line = LibEditText_LineInfo_GetEmptyLineInfo( p_tinfo, dw_buflength );
435 if( NULL == p_line ) {
436 LibBrownie_Error_SetErrorInfo(
437 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x11 ),
438 LOCATION( FUNCID_LibEditText_LineCtrl_AddLine ),
439 errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ );
444 p_lbefore = LINFO(p_tinfo, dw_lbeforeid);
446 // Link Before & After LineInfo
447 if( NULL != p_lbefore ) {
448 p_lnext = LINFO(p_tinfo, p_lbefore->dw_next);
449 p_lbefore->dw_next = p_line->dw_id;
453 p_tinfo->dw_line_start = p_line->dw_id;
456 p_line->dw_before = ((NULL == p_lbefore) ? INVALID_LINE : p_lbefore->dw_id );
458 if( NULL != p_lnext ) {
459 p_lnext->dw_before = p_line->dw_id;
460 p_line->dw_next = p_lnext->dw_id;
463 p_line->dw_next = INVALID_LINE;
464 p_tinfo->dw_line_end = p_line->dw_id;
467 // Set LineInfo to SortChain
468 i_result = LibEditText_LineInfo_AddSortChain( p_tinfo, p_line );
469 if( 0x00 != i_result ) {
470 LibBrownie_Error_SetErrorInfo(
471 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x12 ),
472 LOCATION( FUNCID_LibEditText_LineCtrl_AddLine ),
473 errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ );
478 // Adjust LineSection
479 if( 0x00 == b_mode ) {
480 // Set Init. TextData
481 if( p_tinfo->dw_line_end != p_line->dw_id ) {
482 p_line->dw_strlen = 1;
483 *(p_tinfo->pb_text + p_line->dw_start + 0) = '\n';
484 *(p_tinfo->pb_text + p_line->dw_start + 1) = '\0';
487 i_result = LibEditText_Section_InsertLine( p_tinfo, dw_line + 1 );
488 if( 0x00 != i_result ) {
489 LibBrownie_Error_SetErrorInfo(
490 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x13 ),
491 LOCATION( FUNCID_LibEditText_LineCtrl_AddLine ),
492 errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ );
497 p_tinfo->dw_maxline++;
499 LibEditText_CursorCtrl_InsertLine( p_tinfo, dw_line + 1 );
503 if(( 0x00 == b_mode ) && ( 0x00 == b_undoflag )) {
504 i_result = LibEditText_UndoInfo_SetUndoInfo(
505 p_tinfo, dw_line + 1, p_tinfo->dw_undo_pos,
506 LIBEDITTEXT_UNDOCMD_INSERTLINE, 0x00, NULL, 0 );
507 if( 0x00 != i_result ) {
508 LibBrownie_Error_SetErrorInfo(
509 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x14 ),
510 LOCATION( FUNCID_LibEditText_LineCtrl_AddLine ),
511 errno, (QWord)i_result, (QWord)0x00, __LINE__ );
517 return p_line->dw_id;
521 /*----------------------------------------------------------------------
522 ----------------------------------------------------------------------*/
523 #define FUNCID_LibEditText_LineCtrl_InsertLine 0x05
524 LIBEDITTEXT_LINECTRL_EXTERN
526 LibEditText_LineCtrl_InsertLine(
527 LibEditText_TextInfo *p_tinfo,
534 LibEditText_LineInfo *p_lnext;
536 assert( NULL != p_tinfo );
538 p_lnext = LibEditText_Section_SearchLine( p_tinfo, dw_lnext );
539 assert( NULL != p_lnext );
541 dw_insline = LibEditText_LineCtrl_PushLine(
542 p_tinfo, p_lnext->dw_id, dw_lnext, dw_length, 0x00 );
543 if( INVALID_LINE == dw_insline ) {
544 LibBrownie_Error_SetErrorInfo(
545 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x11 ),
546 LOCATION( FUNCID_LibEditText_LineCtrl_InsertLine ),
547 errno, (QWord)p_lnext->dw_id, (QWord)dw_lnext, __LINE__ );
552 i_result = LibEditText_LineEdit_InsertString(
553 p_tinfo, LINFO(p_tinfo, dw_insline), dw_lnext, 0,
554 pb_text, dw_length, 0x00 );
555 if( 0x00 != i_result ) {
556 LibBrownie_Error_SetErrorInfo(
557 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x12 ),
558 LOCATION( FUNCID_LibEditText_LineCtrl_InsertLine ),
559 errno, (QWord)i_result, (QWord)dw_insline, __LINE__ );
568 /*----------------------------------------------------------------------
569 ----------------------------------------------------------------------*/
570 #define FUNCID_LibEditText_LineCtrl_SplitLine 0x06
571 LIBEDITTEXT_LINECTRL_EXTERN
573 LibEditText_LineCtrl_SplitLine(
574 LibEditText_TextInfo *p_tinfo,
583 LibEditText_LineInfo *p_line;
584 LibEditText_LineInfo *p_lnext;
586 assert( NULL != p_tinfo );
588 p_line = LINFO(p_tinfo, dw_lineid);
589 assert( NULL != p_line );
591 assert( p_line->dw_strlen >= dw_pos );
593 dw_length = p_line->dw_strlen - dw_pos;
594 pb_str = p_tinfo->pb_text + p_line->dw_start + dw_pos;
596 if( p_line->dw_strlen == dw_pos + 1 ) {
597 if( '\n' == *pb_str ) { dw_length = 0; }
601 dw_lnextid = LibEditText_LineCtrl_AddLine(
602 p_tinfo, p_line->dw_id, dw_line, dw_length, 0x00, 0x00 );
603 if( INVALID_LINE == dw_lnextid ) {
604 LibBrownie_Error_SetErrorInfo(
605 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x11 ),
606 LOCATION( FUNCID_LibEditText_LineCtrl_SplitLine ),
607 errno, (QWord)p_line->dw_id, (QWord)dw_line, __LINE__ );
612 if( 0 < dw_length ) {
613 // Add After Indicate-Position String to NextLine ---
614 p_lnext = LINFO(p_tinfo, dw_lnextid);
615 i_result = LibEditText_LineEdit_InsertString(
616 p_tinfo, p_lnext, (dw_line + 1), 0, pb_str, dw_length, 0x00 );
617 if( 0x00 != i_result ) {
618 LibBrownie_Error_SetErrorInfo(
619 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x12 ),
620 LOCATION( FUNCID_LibEditText_LineCtrl_SplitLine ),
621 errno, (QWord)p_lnext->dw_id, (QWord)dw_length, __LINE__ );
626 // Delete After Indicate-Position String ---
627 p_line = LINFO(p_tinfo, dw_lineid);
628 assert( NULL != p_line );
630 assert( p_line->dw_strlen > dw_pos );
631 dw_length = p_line->dw_strlen - dw_pos - 1;
633 i_result = LibEditText_LineEdit_DeleteString(
634 p_tinfo, p_line, dw_line, dw_pos, dw_length, 0x00 );
635 if( 0x00 != i_result ) {
636 LibBrownie_Error_SetErrorInfo(
637 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x13 ),
638 LOCATION( FUNCID_LibEditText_LineCtrl_SplitLine ),
639 errno, (QWord)p_line->dw_id, (QWord)dw_length, __LINE__ );
649 /*----------------------------------------------------------------------
650 ----------------------------------------------------------------------*/
651 #define FUNCID_LibEditText_LineCtrl_AppendLine 0x07
652 LIBEDITTEXT_LINECTRL_EXTERN
654 LibEditText_LineCtrl_AppendLine(
655 LibEditText_TextInfo *p_tinfo,
663 assert( NULL != p_tinfo );
665 dw_lappendid = LibEditText_LineCtrl_AddLine(
666 p_tinfo, p_tinfo->dw_line_end, p_tinfo->dw_maxline - 1,
667 dw_length, b_mode, 0x00 );
668 if( INVALID_LINE == dw_lappendid ) {
669 LibBrownie_Error_SetErrorInfo(
670 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x11 ),
671 LOCATION( FUNCID_LibEditText_LineCtrl_AppendLine ),
672 errno, (QWord)p_tinfo->dw_line_end, (QWord)p_tinfo->dw_maxline, __LINE__ );
677 i_result = LibEditText_LineEdit_InsertString(
678 p_tinfo, LINFO(p_tinfo, dw_lappendid), (p_tinfo->dw_maxline - 1),
679 0, (Byte *)pstr_text, dw_length, b_mode );
680 if( 0x00 != i_result ) {
681 LibBrownie_Error_SetErrorInfo(
682 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x12 ),
683 LOCATION( FUNCID_LibEditText_LineCtrl_AppendLine ),
684 errno, (QWord)i_result, (QWord)dw_length, __LINE__ );
690 { LibEditText_UndoInfo_CancelUndoInfo( p_tinfo ); }
696 /* EOF of drd64_.c ----------------------------------- */