OSDN Git Service

* Implement: Support DrDeamon64 Error System for drd64_libedittext_linectrl.c/drd64_l...
[drdeamon64/drdeamon64.git] / libedittext / drd64_libedittext_linectrl.c
index ded2c5c..2738fd5 100644 (file)
@@ -37,9 +37,15 @@ Comment:
 #define        DRD64_SRC_LIBEDITTEXT_LINECTRL
 #include"drd64_libedittext.h"
 
+#define        DRD64_SRC_LIBEDITTEXT_LINECTRL_SRCID    0x04
+#define        LOCATION(n)     DRD64_ERR_LOCATION( \
+                                               DRD64_ERROR_MODULE_LIBEDITTEXT, DRD64_ERROR_ARCH_NODEPEND, \
+                                               DRD64_SRC_LIBEDITTEXT_LINECTRL_SRCID, (n))
+
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_LineCtrl_DeleteLine  0x01
 LIBEDITTEXT_LINECTRL_EXTERN
 int
        LibEditText_LineCtrl_DeleteLine(
@@ -83,11 +89,25 @@ int
 
        // Remove SortChain ---
        i_result        = LibEditText_LineInfo_RemoveSortChain( p_tinfo, p_line );
-       if( 0x00 != i_result )  { return i_result; }
+       if( 0x00 != i_result )  {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_DeleteLine ),
+                               errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
+               return i_result;
+       }
 
        // Add EmptyChain ---
        i_result        = LibEditText_LineInfo_SetEmptyLineChain( p_tinfo, p_line );
-       if( 0x00 != i_result )  { return i_result; }
+       if( 0x00 != i_result )  {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x02 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_DeleteLine ),
+                               errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
+               return i_result;
+       }
 
        p_tinfo->dw_maxline--;
 
@@ -97,6 +117,7 @@ int
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_DeleteLine_toLine    0x02
 LIBEDITTEXT_API_LINECTRL
 int
        LibEditText_DeleteLine_toLine(
@@ -107,9 +128,22 @@ int
        LibEditText_TextInfo    *p_tinfo;
        LibEditText_LineInfo    *p_line;
 
-       if( 0 > i_tinfoid )             { return -0x01; }
+       if( 0 > i_tinfoid )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_FAILED_ARG, 0x01, 0x01 ),
+                               LOCATION( FUNCID_LibEditText_DeleteLine_toLine ),
+                               errno, (QWord)i_tinfoid, (QWord)dw_line, __LINE__ ); 
+
+               return -0x01; }
        p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
-       if( NULL == p_tinfo )   { return -0x02; }
+       if( NULL == p_tinfo )   {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_NULLPTR, 0x01, 0x02 ),
+                               LOCATION( FUNCID_LibEditText_DeleteLine_toLine ),
+                               errno, (QWord)i_tinfoid, (QWord)dw_line, __LINE__ ); 
+
+               return -0x02;
+       }
 
        p_line  = LibEditText_Section_SearchLine( p_tinfo, dw_line );
        assert( NULL != p_line );
@@ -122,6 +156,7 @@ int
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_LineCtrl_JoinLine    0x03
 LIBEDITTEXT_LINECTRL_EXTERN
 int
        LibEditText_LineCtrl_JoinLine(
@@ -132,41 +167,68 @@ int
        int             i_result;
        Byte    *pb_dest;
        Byte    *pb_src;
-       DWord   dw_linelen;
        LibEditText_LineInfo    *p_lsrc;
 
        // Check 
        assert( NULL != p_tinfo );
        assert( NULL != p_ldest );
 
-       if( p_tinfo->dw_line_end == p_ldest->dw_id )
-               { return 0x01; }
+       if(( 1 >= p_tinfo->dw_maxline ) && ( 0 == dw_line ))    {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_WARNING( DRD64_ERROR_PTN_FAILED_ARG, 0x00, 0x01 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
+                               errno, (QWord)p_tinfo->dw_maxline, (QWord)dw_line, __LINE__ ); 
+
+               return 0x01;
+       }
+       if( p_tinfo->dw_line_end == p_ldest->dw_id )    {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_WARNING( DRD64_ERROR_PTN_FAILED_ARG, 0x00, 0x02 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
+                               errno, (QWord)p_tinfo->dw_line_end, (QWord)p_ldest->dw_id, __LINE__ ); 
+
+               return 0x02;
+       }
 
        p_lsrc  = LINFO(p_tinfo, p_ldest->dw_next);
        assert( NULL != p_lsrc );
 
        // Merge Memory data
        if((p_ldest->dw_strlen + p_lsrc->dw_strlen + 5) > p_ldest->dw_linelen )         {
-               dw_linelen      = p_ldest->dw_strlen + p_lsrc->dw_strlen
-                                               + DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE;
                i_result        = LibEditText_LineInfo_ExpandLineBuffer(
-                                                               p_tinfo, p_ldest, dw_linelen );
-               if( 0x00 != i_result )  { return -0x02; }
+                                                               p_tinfo, p_ldest, p_lsrc->dw_linelen );
+               if( 0x00 != i_result )  {
+                       LibBrownie_Error_SetErrorInfo(
+                                       DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x03 ),
+                                       LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
+                                       errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
+                       return -0x03;
+               }
        }
 
-       pb_dest = p_tinfo->pb_text + p_ldest->dw_start + p_ldest->dw_strlen - 1;
        pb_src  = p_tinfo->pb_text + p_lsrc->dw_start;
-
-       assert( '\n' == *pb_dest );
+       pb_dest = p_tinfo->pb_text + p_ldest->dw_start + p_ldest->dw_strlen;
+       if( '\n' == *(pb_dest - 1) )    {
+               p_ldest->dw_strlen--;
+               pb_dest--;
+       }
 
        memcpy( pb_dest, pb_src, p_lsrc->dw_strlen );
        *(pb_dest + p_lsrc->dw_strlen) = '\0';
 
-       p_ldest->dw_strlen      = p_ldest->dw_strlen - 1 + p_lsrc->dw_strlen;
+       p_ldest->dw_strlen      += p_lsrc->dw_strlen;
 
        // delete line
        i_result        = LibEditText_LineCtrl_DeleteLine( p_tinfo, p_lsrc, dw_line + 1 );
-       if( 0x00 != i_result )  { return -0x02; }
+       if( 0x00 != i_result )  {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x04 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_JoinLine ),
+                               errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
+               return -0x04;
+       }
        
        return 0x00;
 }
@@ -174,6 +236,7 @@ int
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_JoinLine_toLine      0x04
 LIBEDITTEXT_API_LINECTRL
 int
        LibEditText_JoinLine_toLine(
@@ -184,9 +247,23 @@ int
        LibEditText_TextInfo    *p_tinfo;
        LibEditText_LineInfo    *p_line;
        
-       if( 0 > i_tinfoid )             { return -0x01; }
+       if( 0 > i_tinfoid )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_FAILED_ARG, 0x01, 0x01 ),
+                               LOCATION( FUNCID_LibEditText_JoinLine_toLine ),
+                               errno, (QWord)i_tinfoid, (QWord)0x00, __LINE__ ); 
+
+               return -0x01;
+       }
        p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
-       if( NULL == p_tinfo )   { return -0x02; }
+       if( NULL == p_tinfo )   {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_NULLPTR, 0x01, 0x02 ),
+                               LOCATION( FUNCID_LibEditText_JoinLine_toLine ),
+                               errno, (QWord)i_tinfoid, (QWord)0x00, __LINE__ ); 
+
+               return -0x02;
+       }
 
        p_line  = LibEditText_Section_SearchLine( p_tinfo, dw_line );
        assert( NULL != p_line );
@@ -199,6 +276,7 @@ int
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_LineCtrl_InsertLine  0x05
 LIBEDITTEXT_LINECTRL_EXTERN
 int
        LibEditText_LineCtrl_InsertLine(
@@ -224,7 +302,14 @@ int
        // Get LineInfo struct
        dw_buflength    = dw_strlen + DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE;
        p_line  = LibEditText_LineInfo_GetEmptyLineInfo( p_tinfo, dw_buflength );
-       if( NULL == p_line )    { return -0x11; }
+       if( NULL == p_line )    {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x11 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_InsertLine ),
+                               errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ ); 
+
+               return -0x11;
+       }
 
        p_lnext = LibEditText_Section_SearchLine( p_tinfo, dw_line );
        assert( NULL != p_lnext );
@@ -244,7 +329,14 @@ int
 
        // Set LineInfo to SortChain
        i_result    = LibEditText_LineInfo_AddSortChain( p_tinfo, p_line );
-       if( 0x00 != i_result )  { return -0x12; }
+       if( 0x00 != i_result )  {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x12 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_InsertLine ),
+                               errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
+               return -0x12;
+       }
 
        // Set Init. TextData
        p_line->dw_strlen       = dw_strlen;
@@ -254,7 +346,14 @@ int
 
        // Adjust LineSection
        i_result        = LibEditText_Section_InsertLine( p_tinfo, dw_line );
-       if( 0x00 != i_result )  { return -0x13; }
+       if( 0x00 != i_result )  {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x13 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_InsertLine ),
+                               errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
+               return -0x13;
+       }
 
        p_tinfo->dw_maxline++;
 
@@ -264,6 +363,7 @@ int
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_InsertLine_toLine    0x06
 LIBEDITTEXT_API_LINECTRL
 int
        LibEditText_InsertLine_toLine(
@@ -275,11 +375,32 @@ int
        int                                             i_result;
        LibEditText_TextInfo    *p_tinfo;
 
-       if( 0 > i_tinfoid )             { return -0x01; }
+       if( NULL == pstr_text ) {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_FAILED_ARG, 0x01, 0x03 ),
+                               LOCATION( FUNCID_LibEditText_InsertLine_toLine ),
+                               errno, (QWord)0x00, (QWord)0x00, __LINE__ ); 
+
+               return -0x01;
+       }
+
+       if( 0 > i_tinfoid )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_FAILED_ARG, 0x01, 0x02 ),
+                               LOCATION( FUNCID_LibEditText_InsertLine_toLine ),
+                               errno, (QWord)i_tinfoid, (QWord)0x00, __LINE__ ); 
+
+               return -0x02;
+       }
        p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
-       if( NULL == p_tinfo )   { return -0x02; }
+       if( NULL == p_tinfo )   {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_FAILED_ARG, 0x01, 0x03 ),
+                               LOCATION( FUNCID_LibEditText_InsertLine_toLine ),
+                               errno, (QWord)i_tinfoid, (QWord)0x00, __LINE__ ); 
 
-       if( NULL == pstr_text ) { return -0x03; }
+               return -0x03;
+       }
 
        if( p_tinfo->dw_maxline < (dw_line + 1) )       {
                i_result        = LibEditText_LineCtrl_AppendLine(
@@ -296,6 +417,7 @@ int
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_LineCtrl_AppendLine  0x07
 LIBEDITTEXT_LINECTRL_EXTERN
 int
        LibEditText_LineCtrl_AppendLine(
@@ -330,7 +452,14 @@ goto_LibEditText_LineCtrl_AppendLine_prechecked:
 
        dw_buflength    = dw_length + DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE;
        p_line  = LibEditText_LineInfo_GetEmptyLineInfo( p_tinfo, dw_buflength );
-       if( NULL == p_line )    { return -0x11; }
+       if( NULL == p_line )    {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x11 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_AppendLine ),
+                               errno, (QWord)dw_buflength, (QWord)0x00, __LINE__ ); 
+
+               return -0x11;
+       }
 
        /* ReSet p_before for if expand LineInfo memory in GetEmptyLineInfo() func.. */
        p_before        = LINFO(p_tinfo, p_tinfo->dw_line_end);
@@ -346,6 +475,11 @@ goto_LibEditText_LineCtrl_AppendLine_prechecked:
 
        i_result    = LibEditText_LineInfo_AddSortChain( p_tinfo, p_line );
        if( 0x00 != i_result )  {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x12 ),
+                               LOCATION( FUNCID_LibEditText_LineCtrl_AppendLine ),
+                               errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
                return -0x12;
        }
 
@@ -356,7 +490,14 @@ goto_LibEditText_LineCtrl_AppendLine_prechecked:
        /* Normal Append Mode is b_mode=0x00. */
        if( 0x00 == b_mode )    {
                i_result        = LibEditText_Section_AddSection( p_tinfo );
-               if( 0x00 > i_result )           { return i_result; }
+               if( 0x00 > i_result )           {
+                       LibBrownie_Error_SetErrorInfo(
+                                       DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x20 ),
+                                       LOCATION( FUNCID_LibEditText_LineCtrl_AppendLine ),
+                                       errno, (QWord)i_result, (QWord)0x00, __LINE__ ); 
+
+                       return i_result;
+               }
                else if( 0x00 < i_result )      { i_result      = 0x00; }
 
                p_tinfo->dw_maxline++;
@@ -368,6 +509,7 @@ goto_LibEditText_LineCtrl_AppendLine_prechecked:
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+#define        FUNCID_LibEditText_AppendLine   0x08
 LIBEDITTEXT_API_LINECTRL
 int
        LibEditText_AppendLine(
@@ -378,12 +520,33 @@ int
        int                                             i_result;
        LibEditText_TextInfo    *p_tinfo;
 
-       if( 0 > i_tinfoid )             { return -0x01; }
-       p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
-       if( NULL == p_tinfo )   { return -0x02; }
+       if( NULL == pstr_text ) {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_FAILED_ARG, 0x01, 0x01 ),
+                               LOCATION( FUNCID_LibEditText_AppendLine ),
+                               errno, (QWord)0x00, (QWord)0x00, __LINE__ ); 
 
-       if( NULL == pstr_text ) { return -0x03; }
+               return -0x01;
+       }
        
+       if( 0 > i_tinfoid )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_FAILED_ARG, 0x01, 0x02 ),
+                               LOCATION( FUNCID_LibEditText_AppendLine ),
+                               errno, (QWord)i_tinfoid, (QWord)0x00, __LINE__ ); 
+
+               return -0x02;
+       }
+       p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
+       if( NULL == p_tinfo )   {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_NULLPTR, 0x01, 0x03 ),
+                               LOCATION( FUNCID_LibEditText_AppendLine ),
+                               errno, (QWord)i_tinfoid, (QWord)0x00, __LINE__ ); 
+
+               return -0x03;
+       }
+
        i_result        = LibEditText_LineCtrl_AppendLine( p_tinfo, (Byte *)pstr_text, dw_length, 0x00 );
        
        return i_result;