}
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
+ DrCC_EditText_InitTextInfo(
+ Drd64_DrCC_TextInfo *p_tinfo,
+ Word w_subtype,
+ DWord dw_maxline,
+ DWord dw_bufline,
+ DWord dw_bufsize )
+{
+ Drd64_DrCC_LineInfo *p_line;
+ Byte *pb_text;
+ Byte *pb_attr;
+
+ if( NULL == p_tinfo ) { return -0x01; }
+ if(( 0 == dw_bufsize ) || ( 0 == dw_bufline) ) { return -0x02; }
+
+ /* Alloc Text Buffer Memory --- */
+ pb_text = (Byte *)malloc( dw_bufsize );
+ if( NULL == pb_text ) {
+ return -0x11;
+ }
+ memset( pb_text, 0x00, dw_bufsize );
+
+ /* Alloc Attribute Buffer Memory --- */
+ pb_attr = (Byte *)malloc( dw_bufsize );
+ if( NULL == pb_attr ) {
+ return -0x12;
+ }
+ memset( pb_attr, 0x00, dw_bufsize );
+
+ /* Alloc DrCC_LineInfo Struct --- */
+ p_line = (Drd64_DrCC_LineInfo *)malloc(
+ sizeof( Drd64_DrCC_LineInfo ) * dw_bufline );
+ if( NULL == p_line ) {
+ return -0x13;
+ }
+ memset( p_line, 0x00, sizeof( Drd64_DrCC_LineInfo) * dw_bufline );
+
+
+ /* Set Param. to TextInfo Struct --- */
+ p_tinfo->w_subtype = w_subtype;
+ p_tinfo->pb_text = pb_text;
+ p_tinfo->pb_attr = pb_attr;
+ p_tinfo->p_lineinfo = p_line;
+ p_tinfo->dw_bufsize = dw_bufsize;
+ p_tinfo->dw_attrsize = dw_bufsize;
+ p_tinfo->dw_maxline = dw_maxline;
+ p_tinfo->dw_bufline = dw_bufline;
+
+ return 0x00;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
+ DrCC_EditText_ClearTextInfo(
+ Drd64_DrCC_TextInfo *p_tinfo )
+{
+ if( NULL == p_tinfo ) { return -0x01; }
+
+ assert( NULL != p_tinfo->pb_text );
+ free( p_tinfo->pb_text );
+
+ assert( NULL != p_tinfo->pb_attr );
+ free( p_tinfo->pb_attr );
+
+ assert( NULL != p_tinfo->p_lineinfo );
+ free( p_tinfo->p_lineinfo );
+
+ p_tinfo->pb_text = NULL;
+ p_tinfo->pb_attr = NULL;
+ p_tinfo->p_lineinfo = NULL;
+ p_tinfo->dw_bufsize = 0;
+ p_tinfo->dw_attrsize = 0;
+ p_tinfo->dw_maxline = 0;
+ p_tinfo->dw_bufline = 0;
+
+ return 0x00;
+}
+
/*----------------------------------------------------------------------
Alloc
----------------------------------------------------------------------*/
-Drd64_Drcc_TextInfo *
+Drd64_DrCC_TextInfo *
DrCC_EditText_AllocTextInfo(
void )
{
DWord dw_cnt;
- Drd64_Drcc_TextInfo *p_textinfo = NULL;
+ Drd64_DrCC_TextInfo *p_textinfo = NULL;
for( dw_cnt = gdw_max_textinfo; dw_cnt > 0; dw_cnt-- ) {
p_textinfo = (gp_textinfo + dw_cnt - 1);
if( 0 == dw_cnt ) {
if( gdw_max_textinfo == gdw_alloc_textinfo ) {
- p_textinfo = (Drd64_Drcc_TextInfo *)realloc(
- gp_textinfo, sizeof( Drd64_Drcc_TextInfo )
+ p_textinfo = (Drd64_DrCC_TextInfo *)realloc(
+ gp_textinfo, sizeof( Drd64_DrCC_TextInfo )
* (gdw_alloc_textinfo + DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO ) );
if( NULL == p_textinfo ) { return NULL; }
----------------------------------------------------------------------*/
int
DrCC_EditText_FreeTextInfo(
- Drd64_Drcc_TextInfo *p_textinfo )
+ Drd64_DrCC_TextInfo *p_textinfo )
{
if( NULL == p_textinfo ) { return 0x01; }
DrCC_EditText_Init(
void )
{
- Drd64_Drcc_TextInfo *p_textinfo;
+ Drd64_DrCC_TextInfo *p_textinfo;
if( NULL != gp_textinfo ) { return 0x01; }
- p_textinfo = (Drd64_Drcc_TextInfo *)malloc(
- sizeof( Drd64_Drcc_TextInfo ) * DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO );
+ p_textinfo = (Drd64_DrCC_TextInfo *)malloc(
+ sizeof( Drd64_DrCC_TextInfo ) * DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO );
if( NULL == p_textinfo ) { return 0x02; }
gp_textinfo = p_textinfo;
void )
{
DWord dw_cnt;
- Drd64_Drcc_TextInfo *p_textinfo;
+ Drd64_DrCC_TextInfo *p_textinfo;
if( NULL == gp_textinfo) { return 0x01; }
char *pstr_filepath )
{
int i_result;
- Drd64_Drcc_FileType t_ftype;
+ Drd64_DrCC_FileType t_ftype;
+ Drd64_DrCC_TextInfo *p_tinfo;
-
if( NULL == pstr_filepath ) { return -0x01; }
- /* Get FileSize & Judge text-file */
- i_result = Drcc_FileType_CheckFileType( &t_ftype, pstr_filepath );
+ /* Get FileSize & Judge text-file & Count TextLines */
+ i_result = DrCC_FileType_CheckFileType( &t_ftype, pstr_filepath );
+
+ /* Alloc TextInfo Struct. */
+ p_tinfo = DrCC_EditText_AllocTextInfo();
+ if( NULL == p_tinfo ) { return -0x02; }
/* Alloc Temp. File-Buffer */
- /* Count Line */
- /* Alloc TextInfo Struct. */
/* Alloc File-Buffer */
+/*
+ dw_maxline = (DWord)p_ftype->i_lines;
+ dw_bufline = (DWord)((double)dw_maxline
+ * (double)DRD64_DRCC_DEFAULT_LINES_SAFETY_FACTOR);
+ dw_bufsize = p_ftype->dw_filesize
+ + (dw_maxline * DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE)
+ + ((dw_bufline - dw_maxline) * DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE);
+*/
/* Generate LineInfo */
/* Regist TextInfo & LineInfo Strcut. */
/* Free Temp. File-Buffer */
#define DRCC_EDITTEXT_INTERNALFUNC
#endif
-#define DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO 256
-
+#define DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO 256
+#define DRD64_DRCC_DEFAULT_LINES_SAFETY_FACTOR 1.5
+#define DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE 20
+#define DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE 80
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 */
DWord dw_nextline; /* Start Bytes of Next Line from TextBuffer Start */
-} Drd64_Drcc_LineInfo;
+} Drd64_DrCC_LineInfo;
typedef struct {
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 */
+ 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 */
char str_pathname[DRD64_MAX_PATH];
char str_filename[DRD64_MAX_PATH];
-} Drd64_Drcc_TextInfo;
+} Drd64_DrCC_TextInfo;
#ifdef DRD64_SRC_DRCC_EDITTEXT
/* Global Parameter */
- Drd64_Drcc_TextInfo *gp_textinfo = NULL;
+ Drd64_DrCC_TextInfo *gp_textinfo = NULL;
DWord gdw_max_textinfo = 0;
DWord gdw_alloc_textinfo = 0;
#endif
#ifdef DRCC_EDITTEXT_INTERNALFUNC
DWord DrCC_EditText_GetMaxNum_TextInfo(void);
DWord DrCC_EditText_GetAllocNum_TextInfo(void);
-Drd64_Drcc_TextInfo *DrCC_EditText_AllocTextInfo( void );
-int DrCC_EditText_FreeTextInfo( Drd64_Drcc_TextInfo *p_textinfo );
+int DrCC_EditText_InitTextInfo( Drd64_DrCC_TextInfo *p_tinfo,
+ Word w_subtype, DWord dw_maxline, DWord dw_bufline, DWord dw_bufsize );
+int DrCC_EditText_ClearTextInfo( Drd64_DrCC_TextInfo *p_tinfo );
+Drd64_DrCC_TextInfo *DrCC_EditText_AllocTextInfo( void );
+int DrCC_EditText_FreeTextInfo( Drd64_DrCC_TextInfo *p_textinfo );
#endif
#endif /* DRD64_HEADER_DRCC_EDITTEXT */
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
char *
- Drcc_FileType_GetFileExtPosition(
+ DrCC_FileType_GetFileExtPosition(
char *pstr_filepath )
{
int i_maxlen;
----------------------------------------------------------------------*/
DRCC_FILETYPE_EXTERN
int
- Drcc_FileType_CheckFileType(
- Drd64_Drcc_FileType *p_filetype,
+ DrCC_FileType_CheckFileType(
+ Drd64_DrCC_FileType *p_filetype,
char *pstr_filename )
{
struct stat t_stat;
int i_lines;
/* Search from Ext. DB --- */
- pstr_ext = Drcc_FileType_GetFileExtPosition( pstr_filename );
+ pstr_ext = DrCC_FileType_GetFileExtPosition( pstr_filename );
i_cnt = 0;
do {
if( !strncmp( pstr_ext, fexttypedb[i_cnt].str_ext, DRD64_MAX_PATH ) )
{
p_filetype->b_type = fexttypedb[i_cnt].b_type;
p_filetype->w_subtype = fexttypedb[i_cnt].w_subtype;
- goto goto_Drcc_FileType_CheckFileType_verification;
+ goto goto_DrCC_FileType_CheckFileType_verification;
}
}while( (Byte)0xff != fexttypedb[++i_cnt].b_type );
{
p_filetype->b_type = fnametypedb[i_cnt].b_type;
p_filetype->w_subtype = fnametypedb[i_cnt].w_subtype;
- goto goto_Drcc_FileType_CheckFileType_verification;
+ goto goto_DrCC_FileType_CheckFileType_verification;
}
}while( (Byte)0xff != fnametypedb[++i_cnt].b_type );
p_filetype->b_type = DRD64_DRCC_FILETYPE_BINARY;
p_filetype->w_subtype = DRD64_DRCC_FILESUBTYPE_BINARY;
-goto_Drcc_FileType_CheckFileType_verification:
+goto_DrCC_FileType_CheckFileType_verification:
i_fd = open( pstr_filename, O_RDONLY );
if( -0x01 == i_fd ) { return 0x01; }
i_err = fstat( i_fd, &t_stat );
if( -0x01 == i_err ) {
i_result = -0x01;
- goto goto_Drcc_FileType_CheckFileType_post;
+ goto goto_DrCC_FileType_CheckFileType_post;
}
p_filetype->dw_filesize = t_stat.st_size;
i_err = DrCC_FileType_VerifyTextFile( &i_lines, i_fd );
if( 0 > i_err ) {
i_result = -0x02;
- goto goto_Drcc_FileType_CheckFileType_post;
+ goto goto_DrCC_FileType_CheckFileType_post;
}
p_filetype->i_lines = i_lines;
}
-goto_Drcc_FileType_CheckFileType_post:
+goto_DrCC_FileType_CheckFileType_post:
close( i_fd );
return i_result;
Word w_subtype;
DWord dw_filesize;
int i_lines;
-} Drd64_Drcc_FileType;
+} Drd64_DrCC_FileType;
typedef struct {
char str_ext[5];
Byte b_type;
Word w_subtype;
-} Drd64_Drcc_FileExtTypeDB;
+} Drd64_DrCC_FileExtTypeDB;
typedef struct {
char str_filename[DRD64_MAX_PATH];
Byte b_type;
Word w_subtype;
-} Drd64_Drcc_FileNameTypeDB;
+} Drd64_DrCC_FileNameTypeDB;
#ifdef DRD64_SRC_DRCC_FILETYPE
-Drd64_Drcc_FileExtTypeDB fexttypedb[] = {
+Drd64_DrCC_FileExtTypeDB fexttypedb[] = {
{ "c", DRD64_DRCC_FILETYPE_TEXT, DRD64_DRCC_FILESUBTYPE_CSRC },
{ "h", DRD64_DRCC_FILETYPE_TEXT, DRD64_DRCC_FILESUBTYPE_CHEADER },
{ "f", DRD64_DRCC_FILETYPE_TEXT, DRD64_DRCC_FILESUBTYPE_CFUNC },
{ "\0", 0xff, 0xffff }
};
-Drd64_Drcc_FileNameTypeDB fnametypedb[] = {
+Drd64_DrCC_FileNameTypeDB fnametypedb[] = {
{ "Makefile", DRD64_DRCC_FILETYPE_TEXT, DRD64_DRCC_FILESUBTYPE_CMAKE },
{ "\0", 0xff, 0xffff }
};
DRCC_FILETYPE_EXTERN
-int Drcc_FileType_CheckFileType(
- Drd64_Drcc_FileType *p_filetype, char *pstr_filename );
+int DrCC_FileType_CheckFileType(
+ Drd64_DrCC_FileType *p_filetype, char *pstr_filename );
#ifdef DRCC_FILETYPE_INTERNALFUNC
-char *Drcc_FileType_GetFileExtPosition( char *pstr_filepath );
+char *DrCC_FileType_GetFileExtPosition( char *pstr_filepath );
int DrCC_FileType_VerifyTextFile( int *pi_lines, int i_fd );
#endif
#include"drcc.h"
+/* DrCC_EditText_InitTextInfo *****************************************/
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_InitTextInfo_test00_001(void)
+{
+ int i_result;
+ Drd64_DrCC_TextInfo t_tinfo;
+
+ i_result = DrCC_EditText_InitTextInfo(
+ &t_tinfo,DRD64_DRCC_FILESUBTYPE_CSRC,
+ 10000, 10200, 100000 );
+ CU_ASSERT_FATAL( 0x00 == i_result );
+ CU_ASSERT( DRD64_DRCC_FILESUBTYPE_CSRC == t_tinfo.w_subtype );
+ CU_ASSERT( NULL != t_tinfo.pb_text );
+ CU_ASSERT( NULL != t_tinfo.pb_attr );
+ CU_ASSERT( NULL != t_tinfo.p_lineinfo );
+ CU_ASSERT( 100000 == t_tinfo.dw_bufsize );
+ CU_ASSERT( 100000 == t_tinfo.dw_attrsize );
+ CU_ASSERT( 10000 == t_tinfo.dw_maxline );
+ CU_ASSERT( 10200 == t_tinfo.dw_bufline );
+
+ i_result = DrCC_EditText_ClearTextInfo( &t_tinfo );
+ CU_ASSERT( 0x00 == i_result );
+ CU_ASSERT( NULL == t_tinfo.pb_text );
+ CU_ASSERT( NULL == t_tinfo.pb_attr );
+ CU_ASSERT( NULL == t_tinfo.p_lineinfo );
+ CU_ASSERT( 0 == t_tinfo.dw_bufsize );
+ CU_ASSERT( 0 == t_tinfo.dw_attrsize );
+ CU_ASSERT( 0 == t_tinfo.dw_maxline );
+ CU_ASSERT( 0 == t_tinfo.dw_bufline );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_InitTextInfo_test01_001(void)
+{
+ int i_result;
+
+ i_result = DrCC_EditText_InitTextInfo(
+ NULL, DRD64_DRCC_FILESUBTYPE_CSRC,
+ 10000, 10200, 100000 );
+ CU_ASSERT_FATAL( 0x00 != i_result );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_InitTextInfo_test01_002(void)
+{
+ int i_result;
+ Drd64_DrCC_TextInfo t_tinfo;
+
+ i_result = DrCC_EditText_InitTextInfo(
+ &t_tinfo, DRD64_DRCC_FILESUBTYPE_CSRC,
+ 10000, 10200, 100000 );
+ CU_ASSERT_FATAL( 0x00 != i_result );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_InitTextInfo_test01_003(void)
+{
+ int i_result;
+ Drd64_DrCC_TextInfo t_tinfo;
+
+ i_result = DrCC_EditText_InitTextInfo(
+ &t_tinfo, DRD64_DRCC_FILESUBTYPE_CSRC,
+ 10000, 0, 100000 );
+ CU_ASSERT_FATAL( 0x00 != i_result );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_InitTextInfo_test01_004(void)
+{
+ int i_result;
+ Drd64_DrCC_TextInfo t_tinfo;
+
+ i_result = DrCC_EditText_InitTextInfo(
+ &t_tinfo, DRD64_DRCC_FILESUBTYPE_CSRC,
+ 10000, 10200, 0 );
+ CU_ASSERT_FATAL( 0x00 != i_result );
+
+ return;
+}
+
/* DrCC_EditText_AllocTextInfo ****************************************/
/*--------------------------------------------------------------------*/
void Test_DrCC_EditText_AllocTextInfo_test00_001(void)
{
int i_cnt;
int i_result;
- Drd64_Drcc_TextInfo *p_tinfo[DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO * 2 + 2];
+ Drd64_DrCC_TextInfo *p_tinfo[DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO * 2 + 2];
for( i_cnt = 0; i_cnt < (DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO * 2); i_cnt++ ) {
p_tinfo[i_cnt] = DrCC_EditText_AllocTextInfo();
CU_add_test( pt_edittext, "EditText_FreeTextInfo_test00_001",
Test_DrCC_EditText_FreeTextInfo_test00_001 );
+ CU_add_test( pt_edittext, "EditText_InitTextInfo_test00_001",
+ Test_DrCC_EditText_InitTextInfo_test00_001 );
+ CU_add_test( pt_edittext, "EditText_InitTextInfo_test01_001",
+ Test_DrCC_EditText_InitTextInfo_test00_001 );
+ CU_add_test( pt_edittext, "EditText_InitTextInfo_test01_002",
+ Test_DrCC_EditText_InitTextInfo_test00_001 );
+ CU_add_test( pt_edittext, "EditText_InitTextInfo_test01_003",
+ Test_DrCC_EditText_InitTextInfo_test00_001 );
+ CU_add_test( pt_edittext, "EditText_InitTextInfo_test01_004",
+ Test_DrCC_EditText_InitTextInfo_test00_001 );
+
CU_add_test( pt_edittext, "EditText_Term_test00_002",
Test_DrCC_EditText_Term_test00_002 );
/*--------------------------------------------------------------------*/
void Test_DrCC_FileType_GetFileExtPosition_test00_001(void)
{
- CU_ASSERT_STRING_EQUAL_FATAL( "c", Drcc_FileType_GetFileExtPosition( "test.c" ) );
+ CU_ASSERT_STRING_EQUAL_FATAL( "c", DrCC_FileType_GetFileExtPosition( "test.c" ) );
return;
}
/*--------------------------------------------------------------------*/
void Test_DrCC_FileType_GetFileExtPosition_test00_002(void)
{
- CU_ASSERT_STRING_EQUAL_FATAL( "", Drcc_FileType_GetFileExtPosition( "test." ) );
+ CU_ASSERT_STRING_EQUAL_FATAL( "", DrCC_FileType_GetFileExtPosition( "test." ) );
return;
}
/*--------------------------------------------------------------------*/
void Test_DrCC_FileType_GetFileExtPosition_test01_001(void)
{
- CU_ASSERT_STRING_EQUAL_FATAL( "", Drcc_FileType_GetFileExtPosition( "test" ) );
+ CU_ASSERT_STRING_EQUAL_FATAL( "", DrCC_FileType_GetFileExtPosition( "test" ) );
return;
}
/*--------------------------------------------------------------------*/
void Test_DrCC_FileType_GetFileExtPosition_test01_002(void)
{
- CU_ASSERT_STRING_EQUAL_FATAL( "", Drcc_FileType_GetFileExtPosition( "" ) );
+ CU_ASSERT_STRING_EQUAL_FATAL( "", DrCC_FileType_GetFileExtPosition( "" ) );
return;
}
void Test_DrCC_FileType_CheckFileType_test00_001(void)
{
int i_result;
- Drd64_Drcc_FileType t_ftype;
+ Drd64_DrCC_FileType t_ftype;
- i_result = Drcc_FileType_CheckFileType( &t_ftype, "./testdata/drcc_testfile.c");
+ i_result = DrCC_FileType_CheckFileType( &t_ftype, "./testdata/drcc_testfile.c");
CU_ASSERT_FATAL( 0x00 == i_result );
CU_ASSERT_FATAL( t_ftype.b_type == DRD64_DRCC_FILETYPE_TEXT );
void Test_DrCC_FileType_CheckFileType_test00_002(void)
{
int i_result;
- Drd64_Drcc_FileType t_ftype;
+ Drd64_DrCC_FileType t_ftype;
- i_result = Drcc_FileType_CheckFileType( &t_ftype, "./testdata/drcc_testfile.h");
+ i_result = DrCC_FileType_CheckFileType( &t_ftype, "./testdata/drcc_testfile.h");
CU_ASSERT_FATAL( 0x00 == i_result );
CU_ASSERT_FATAL( t_ftype.b_type == DRD64_DRCC_FILETYPE_TEXT );
void Test_DrCC_FileType_CheckFileType_test00_003(void)
{
int i_result;
- Drd64_Drcc_FileType t_ftype;
+ Drd64_DrCC_FileType t_ftype;
- i_result = Drcc_FileType_CheckFileType( &t_ftype, "./testdata/drcc_testfile.o");
+ i_result = DrCC_FileType_CheckFileType( &t_ftype, "./testdata/drcc_testfile.o");
CU_ASSERT_FATAL( 0x00 == i_result );
CU_ASSERT_FATAL( t_ftype.b_type == DRD64_DRCC_FILETYPE_BINARY );
void Test_DrCC_FileType_CheckFileType_test01_001(void)
{
int i_result;
- Drd64_Drcc_FileType t_ftype;
+ Drd64_DrCC_FileType t_ftype;
- i_result = Drcc_FileType_CheckFileType( &t_ftype, "./testdata/drcc_notexistfile");
+ i_result = DrCC_FileType_CheckFileType( &t_ftype, "./testdata/drcc_notexistfile");
CU_ASSERT_FATAL( 0x00 != i_result );