OSDN Git Service

8f487d24cefe5a0b6554acf8e3403e2543f4049b
[drdeamon64/drdeamon64.git] / drcc / drcc_edittext.c
1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2
3                          D r . D e a m o n  6 4
4                         for INTEL64(R), AMD64(R)
5         
6    Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
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.
16
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.
28
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
30
31 /* File Info -----------------------------------------------------------
32 File: drd64_.c
33 Function: 
34 Comment: 
35 ----------------------------------------------------------------------*/
36
37 #define DRD64_SRC_DRCC_EDITTEXT
38 #include"drcc.h"
39
40 /*----------------------------------------------------------------------
41 ReadText
42 CreateText
43 WriteText
44 AddLine
45 DeleteLine
46 AddChar
47 DeleteChar
48 AddWord
49 DeleteChar
50 ----------------------------------------------------------------------*/
51
52
53 /*----------------------------------------------------------------------
54 Alloc
55 ----------------------------------------------------------------------*/
56 Drd64_Drcc_TextInfo *
57         DrCC_EditText_AllocTextInfo(
58                         void )
59 {
60         DWord           dw_cnt;
61         Drd64_Drcc_TextInfo             *p_textinfo     = NULL;
62
63         for( dw_cnt = gdw_max_textinfo; dw_cnt > 0; dw_cnt-- )  {
64                 p_textinfo      = (gp_textinfo + dw_cnt - 1);
65                 assert( NULL != p_textinfo );
66                 if( -1 == p_textinfo->i_id )    { break; }
67         }
68         p_textinfo      = NULL;
69
70         if(( 0 == dw_cnt ) && ( gdw_max_textinfo == gdw_alloc_textinfo ))       {
71                 p_textinfo      = (Drd64_Drcc_TextInfo *)realloc(
72                                 gp_textinfo, sizeof( Drd64_Drcc_TextInfo )
73                                         * (gdw_alloc_textinfo + DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO ) );
74                 if( NULL == p_textinfo )        { return NULL; }
75
76                 gp_textinfo                     = p_textinfo;
77                 gdw_alloc_textinfo      += DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO;
78                 p_textinfo      = NULL;
79                 dw_cnt  = gdw_max_textinfo + 1;
80         }
81
82         if( 0 < dw_cnt )        {
83                 p_textinfo      = (gp_textinfo + dw_cnt - 1);
84
85                 p_textinfo->i_id        = (int)(dw_cnt - 1);
86                 p_textinfo->pb_text             = NULL;
87                 p_textinfo->p_lineinfo  = NULL;
88                 p_textinfo->dw_bufsize  = 0;
89                 p_textinfo->dw_maxline  = 0;
90                 p_textinfo->dw_bufline  = 0;
91
92                 gdw_max_textinfo++;
93         }
94
95         return p_textinfo;
96 }
97
98
99 /*----------------------------------------------------------------------
100 Alloc
101 ----------------------------------------------------------------------*/
102 int
103         DrCC_EditText_FreeTextInfo(
104                 Drd64_Drcc_TextInfo     *p_textinfo )
105 {
106         DWord   dw_id;
107
108         if( NULL == p_textinfo )        { return 0x01; }
109
110         /* Clear TextInfo Struct */
111         dw_id   = (DWord) p_textinfo->i_id;
112
113         p_textinfo->i_id        = -1;
114         p_textinfo->pb_text     = NULL;
115
116         if( dw_id + 1 == gdw_max_textinfo )     
117                 { gdw_max_textinfo--; }
118         
119         return 0x00;
120 }
121
122
123 /*----------------------------------------------------------------------
124 Init
125 ----------------------------------------------------------------------*/
126 DRCC_EDITTEXT_EXTERN    int
127         DrCC_EditText_Init(
128                         void )
129 {
130         Drd64_Drcc_TextInfo             *p_textinfo;
131
132         if( NULL != gp_textinfo )       { return 0x01; }
133
134         p_textinfo      = (Drd64_Drcc_TextInfo *)malloc(
135                                         sizeof( Drd64_Drcc_TextInfo ) * DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO );
136         if( NULL == p_textinfo )        { return 0x02; }
137
138         gp_textinfo                     = p_textinfo;
139         gdw_max_textinfo        = 0;
140         gdw_alloc_textinfo      = DRD64_DRCC_DEFAULT_ALLOC_TEXTINFO;
141         
142         return 0x00;
143 }
144
145
146 /*----------------------------------------------------------------------
147 Term
148 ----------------------------------------------------------------------*/
149 DRCC_EDITTEXT_EXTERN    int
150         DrCC_EditText_Term(
151                         void )
152 {
153         DWord   dw_cnt;
154         Drd64_Drcc_TextInfo     *p_textinfo;
155
156         if( NULL == gp_textinfo)        { return 0x01; }
157         
158         for( dw_cnt = gdw_max_textinfo; dw_cnt > 0; dw_cnt-- )  {
159                 p_textinfo      = (gp_textinfo + dw_cnt - 1);
160                 assert( NULL != p_textinfo );
161
162                 p_textinfo->i_id        = -1;
163         }
164
165         free( gp_textinfo );
166         gp_textinfo     = NULL;
167
168         return 0x00;
169 }
170
171
172 /*----------------------------------------------------------------------
173 Read Text File 
174 ----------------------------------------------------------------------*/
175 DRCC_EDITTEXT_EXTERN
176         int
177         DrCC_EditText_ReadFile(
178                         char *pstr_filepath )
179 {
180         
181
182         if( NULL == pstr_filepath )             { return -0x01; }
183
184         /* Get FileSize */
185         /* Judge text-file */
186         /* Alloc Temp. File-Buffer */
187         /* Count Line */
188         /* Alloc TextInfo Struct. */
189         /* Alloc File-Buffer */
190         /* Generate LineInfo */
191         /* Regist TextInfo & LineInfo Strcut. */
192         /* Free Temp. File-Buffer */
193         
194         return 0x00;
195 }
196
197
198 /*----------------------------------------------------------------------
199 Create Text File
200 ----------------------------------------------------------------------*/
201
202
203
204 /*----------------------------------------------------------------------
205 Write Text File
206 ----------------------------------------------------------------------*/
207
208
209
210 /*----------------------------------------------------------------------
211 Close Text File
212 ----------------------------------------------------------------------*/
213
214
215
216 /*----------------------------------------------------------------------
217 ----------------------------------------------------------------------*/
218 /*----------------------------------------------------------------------
219 ----------------------------------------------------------------------*/
220 /*----------------------------------------------------------------------
221 ----------------------------------------------------------------------*/
222
223
224 /* EOF of drd64_.c ----------------------------------- */
225