#ifndef DRD64_HEADER_DRCC_CONFIG
#define DRD64_HEADER_DRCC_CONFIG
-#define DEBUG_TEXTINFO_OUTPUT 0x00
+#define DEBUG_TEXTINFO_OUTPUT 0x01
/* Output TextData for Console if this value isn't 0x00 when run test_drcc program.*/
+ DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE;
dw_nowpos += p_line->dw_linelen;
- pb_data_now += p_line->dw_linelen;
- p_before = p_line;
- p_line++;
- pb_tmp_start = pb_tmp_now;
+ //pb_data_now += p_line->dw_linelen;
+ p_line->p_next = NULL;
+ //p_before = p_line;
+ //p_line++;
+ //pb_tmp_start = pb_tmp_now;
- p_line->dw_start = dw_nowpos;
- p_before->p_next = p_line;
- p_line->p_before = NULL;
+ //p_line->dw_start = dw_nowpos;
+ //p_before->p_next = NULL;
}
else {
p_before->p_next = NULL;
}
- p_line->p_next = NULL;
+ p_tinfo->dw_lastsize = dw_nowpos;
return i_result;
}
/* Alloc File-Buffer */
- dw_maxline = 0;
+ dw_maxline = 1;
dw_bufline = DRD64_DRCC_DEFAULT_CREATETEXTFILE_LINES;
dw_bufsize = (DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE
+ DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE) * dw_bufline;
dw_maxline, dw_bufline, dw_bufsize );
if( 0x00 != i_result ) { return -0x03; }
- /* Generate LineInfo */
+ /* Generate LineInfo (Only First-Line) ---*/
p_line = p_tinfo->p_lineinfo;
p_line->dw_start = 0;
p_line->dw_strlen = 0;
+ DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE;
p_line->p_before = NULL;
p_line->p_next = NULL;
-
- p_tinfo->dw_maxline = 1;
+
+ p_tinfo->dw_lastsize = DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE
+ + DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE;
p_tinfo->i_fd = -1;
+ /* Collect Empty-LineInfo Chain ---*/
+ p_line++;
+ p_tinfo->p_empty = p_line;
+ p_line->p_before = NULL;
+
return p_tinfo->i_id;
}
Byte b_putflag )
{
DWord dw_nowrow;
+ int i_cnt;
Byte *pb_now;
Drd64_DrCC_TextInfo *p_tinfo;
Drd64_DrCC_LineInfo *p_before;
p_tinfo = DrCC_EditText_System_GetTextInfo( i_tinfoid );
if( NULL == p_tinfo ) { return -0x02; }
+ /* 1st: Check TextInfo Strcut Data --- */
if( 0x00 != b_putflag ) {
puts("----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
puts( "[1] TextInfo Struct Data ");
printf(" Path: %s\n", p_tinfo->str_pathname );
printf(" File: %s\n", p_tinfo->str_filename );
printf(" Lines: %u, Buffer Lines: %u\n", p_tinfo->dw_maxline, p_tinfo->dw_bufline );
- printf(" Buffer size: %u\n", p_tinfo->dw_bufsize );
+ printf(" Buffer size: %u, Used Last-Byte:%u\n", p_tinfo->dw_bufsize, p_tinfo->dw_lastsize );
printf(" FileDescriptor: %d, File SubType: %04x\n", p_tinfo->i_fd, p_tinfo->w_subtype );
}
+ /* Check Empty-LineInfo Chain ---*/
+ i_cnt = 0;
+ p_line = p_tinfo->p_empty;
+ while( NULL != p_line ) {
+ p_line = p_line->p_next;
+ i_cnt++;
+ }
+ if( (int)(p_tinfo->dw_bufline - p_tinfo->dw_maxline) != i_cnt )
+ { return -0x10; }
+ if( 0x00 != b_putflag ) {
+ printf(" Remain Empty LineInfo Structs: %3d\n", i_cnt );
+ }
+
+
if( 0x00 != b_putflag ) {
+ puts("");
puts("************** ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
puts( "[2] Text Data ");
}
DWord dw_bufsize )
{
Drd64_DrCC_LineInfo *p_line;
+ Drd64_DrCC_LineInfo *p_before;
Byte *pb_text;
Byte *pb_attr;
+ DWord dw_cnt;
if( NULL == p_tinfo ) { return -0x01; }
if(( 0 == dw_bufsize ) || ( 0 == dw_bufline) ) { return -0x02; }
p_tinfo->dw_maxline = dw_maxline;
p_tinfo->dw_bufline = dw_bufline;
+ /* Link Empty-LineInfo Chain --- */
+ p_before = (p_tinfo->p_lineinfo + dw_maxline);
+ p_tinfo->p_empty = p_before;
+ p_line = p_before + 1;
+ for( dw_cnt = dw_maxline + 1; dw_cnt < dw_bufline; dw_cnt++ ) {
+ p_before->p_next = p_line++;
+ p_before++;
+ }
+
return 0x00;
}
#define DRCC_EDITTEXT_SYSTEM_INTERNALFUNC
#endif
+
typedef struct {
DWord dw_start; /* Start Bytes of This Line in Text-Buffer */
DWord dw_strlen; /* Length of This LineString */
DWord dw_linelen; /* Line Alloced Bytes */
- void *p_before;
- void *p_next;
+ void *p_before; /* Pointer of the Before LineInfo Struct */
+ void *p_next; /* Pointer of the Next LineInfo Struct */
+ void *p_sortnext; /* Pointer of the LineLength Sort Next LineInfo Struct */
} Drd64_DrCC_LineInfo;
-
typedef struct {
int i_id; /* ID of TextInfo Struct */
int i_fd;
Word w_subtype; /* TextFile Sub-Type (.c/.h/Makefile/etc) */
Byte *pb_text; /* Buffer of TextData */
Byte *pb_attr; /* Attribute Buffer of Text */
- Drd64_DrCC_LineInfo *p_lineinfo; /* LineInfo structs TopPointer */
DWord dw_bufsize; /* TextData Buffer Size */
DWord dw_attrsize; /* Attribute Buffer Size */
DWord dw_maxline; /* Max TextFile Lines */
DWord dw_bufline; /* Lines of Alloc LineInfo Strcut */
+ DWord dw_lastsize; /* Available Buffer Position */
+ Drd64_DrCC_LineInfo *p_lineinfo; /* LineInfo structs TopPointer */
+ Drd64_DrCC_LineInfo *p_empty; /* Empty LineInfo Structs Chain TopPointer */
+ Drd64_DrCC_LineInfo *p_sort[128];
char str_pathname[DRD64_MAX_PATH];
char str_filename[DRD64_MAX_PATH];