OSDN Git Service

2019/04/13(Sat) 07:01
[drdeamon64/drdeamon64.git] / libedittext / drd64_libedittext_cursorapi_find.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_LIBEDITTEXT_CURSORAPI_FIND
38 #include"drd64_libedittext.h"
39
40 #define LOCATION(n)     DRD64_ERR_LOCATION( \
41                                                 DRD64_ERROR_MODULE_LIBEDITTEXT, DRD64_ERROR_ARCH_NODEPEND, \
42                                                 DRD64_SRC_LIBEDITTEXT_CURSORAPI_FIND_SRCID, (n))
43
44
45 /***********************************************************************
46 ***********************************************************************/
47 #define FUNCID_LibEditText_FindString   0x01
48 LIBEDITTEXT_API_CURSORAPI_FIND
49 int
50         LibEditText_FindString(
51                         int             i_tinfoid,
52                         int             i_curid,
53                         char    *pstr_regex,
54                         DWord   dw_regexlen,
55                         DWord   *pdw_len )
56 {
57         int             i_result;
58         LibEditText_TextInfo    *p_tinfo;
59         LibEditText_Cursor              *p_cursor;
60
61         p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
62         if( NULL == p_tinfo )   {
63                 LibBrownie_Error_SetErrorInfo(
64                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
65                                 LOCATION( FUNCID_LibEditText_FindString ),
66                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
67
68                 return -0x01;
69         }
70
71         p_cursor        = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
72         if( NULL == p_cursor )  {
73                 LibBrownie_Error_SetErrorInfo(
74                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x02 ),
75                                 LOCATION( FUNCID_LibEditText_FindString ),
76                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
77
78                 return -0x02;
79         }
80
81         i_result        = LibEditText_CursorFind_FindString(
82                                                 p_tinfo, p_cursor, pstr_regex, dw_regexlen, LIBEDITTEXT_FLAGFIND_NORMAL );
83         if( 0x00 > i_result )   {
84                 LibBrownie_Error_SetErrorInfo(
85                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x03 ),
86                                 LOCATION( FUNCID_LibEditText_FindString ),
87                                 errno, (QWord)i_result, (QWord)dw_regexlen, __LINE__ ); 
88
89                 return i_result;
90         }
91
92         if(( LIBEDITTEXT_RET_FINDNOMATCH != i_result ) && ( NULL != pdw_len ))
93                 { *pdw_len      = p_cursor->dw_find_prevpos_len; }
94
95         return  i_result;
96 }
97
98
99 /***********************************************************************
100 ***********************************************************************/
101 #define FUNCID_LibEditText_FindNextString       0x02
102 LIBEDITTEXT_API_CURSORAPI_FIND
103 int
104         LibEditText_FindNextString(
105                         int             i_tinfoid,
106                         int             i_curid,
107                         DWord   *pdw_len )
108 {
109         int             i_result;
110         LibEditText_TextInfo    *p_tinfo;
111         LibEditText_Cursor              *p_cursor;
112
113         p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
114         if( NULL == p_tinfo )   {
115                 LibBrownie_Error_SetErrorInfo(
116                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
117                                 LOCATION( FUNCID_LibEditText_FindNextString     ),
118                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
119
120                 return -0x01;
121         }
122
123         p_cursor        = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
124         if( NULL == p_cursor )  {
125                 LibBrownie_Error_SetErrorInfo(
126                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x02 ),
127                                 LOCATION( FUNCID_LibEditText_FindNextString     ),
128                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
129
130                 return -0x02;
131         }
132
133         i_result        = LibEditText_CursorFind_FindNextString( p_tinfo, p_cursor );
134         if( 0x00 > i_result )   {
135                 LibBrownie_Error_SetErrorInfo(
136                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x03 ),
137                                 LOCATION( FUNCID_LibEditText_FindNextString     ),
138                                 errno, (QWord)i_result, (QWord)i_curid, __LINE__ ); 
139
140                 return i_result;
141         }
142
143         if(( LIBEDITTEXT_RET_FINDNOMATCH != i_result ) && ( NULL != pdw_len ))
144                 { *pdw_len      = p_cursor->dw_find_prevpos_len; }
145
146         return  i_result;
147 }
148
149
150 /***********************************************************************
151 ***********************************************************************/
152 #define FUNCID_LibEditText_BackFindString       0x03
153 LIBEDITTEXT_API_CURSORAPI_FIND
154 int
155         LibEditText_BackFindString(
156                         int             i_tinfoid,
157                         int             i_curid,
158                         char    *pstr_regex,
159                         DWord   dw_regexlen,
160                         DWord   *pdw_len )
161 {
162         int             i_result;
163         LibEditText_TextInfo    *p_tinfo;
164         LibEditText_Cursor              *p_cursor;
165
166         p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
167         if( NULL == p_tinfo )   {
168                 LibBrownie_Error_SetErrorInfo(
169                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
170                                 LOCATION( FUNCID_LibEditText_BackFindString     ),
171                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
172
173                 return -0x01;
174         }
175
176         p_cursor        = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
177         if( NULL == p_cursor )  {
178                 LibBrownie_Error_SetErrorInfo(
179                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x02 ),
180                                 LOCATION( FUNCID_LibEditText_BackFindString     ),
181                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
182
183                 return -0x02;
184         }
185
186         i_result        = LibEditText_CursorFind_BackFindString(
187                                                 p_tinfo, p_cursor, pstr_regex, dw_regexlen, LIBEDITTEXT_FLAGFIND_NORMAL );
188         if( 0x00 > i_result )   {
189                 LibBrownie_Error_SetErrorInfo(
190                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x03 ),
191                                 LOCATION( FUNCID_LibEditText_BackFindString     ),
192                                 errno, (QWord)i_result, (QWord)dw_regexlen, __LINE__ ); 
193
194                 return i_result;
195         }
196
197         if(( LIBEDITTEXT_RET_FINDNOMATCH != i_result ) && ( NULL != pdw_len ))
198                 { *pdw_len      = p_cursor->dw_find_prevpos_len; }
199
200         return  i_result;
201 }
202
203
204 /***********************************************************************
205 ***********************************************************************/
206 #define FUNCID_LibEditText_BackFindBeforeString 0x04
207 LIBEDITTEXT_API_CURSORAPI_FIND
208 int
209         LibEditText_BackFindBeforeString(
210                         int             i_tinfoid,
211                         int             i_curid,
212                         DWord   *pdw_len )
213 {
214         int             i_result;
215         LibEditText_TextInfo    *p_tinfo;
216         LibEditText_Cursor              *p_cursor;
217
218         p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
219         if( NULL == p_tinfo )   {
220                 LibBrownie_Error_SetErrorInfo(
221                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x01 ),
222                                 LOCATION( FUNCID_LibEditText_BackFindBeforeString ),
223                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
224
225                 return -0x01;
226         }
227
228         p_cursor        = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
229         if( NULL == p_cursor )  {
230                 LibBrownie_Error_SetErrorInfo(
231                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x02 ),
232                                 LOCATION( FUNCID_LibEditText_BackFindBeforeString ),
233                                 errno, (QWord)i_tinfoid, (QWord)i_curid, __LINE__ ); 
234
235                 return -0x02;
236         }
237
238         i_result        = LibEditText_CursorFind_BackFindBeforeString( p_tinfo, p_cursor );
239         if( 0x00 > i_result )   {
240                 LibBrownie_Error_SetErrorInfo(
241                                 DRD64_ERROR( DRD64_ERROR_PTN_CALLFUNC, 0x01, 0x03 ),
242                                 LOCATION( FUNCID_LibEditText_BackFindBeforeString ),
243                                 errno, (QWord)i_result, (QWord)i_curid, __LINE__ ); 
244
245                 return i_result;
246         }
247
248         if(( LIBEDITTEXT_RET_FINDNOMATCH != i_result ) && ( NULL != pdw_len ))
249                 { *pdw_len      = p_cursor->dw_find_prevpos_len; }
250
251         return  i_result;
252 }
253
254
255 /* EOF of drd64_.c ----------------------------------- */