Develop and Download Open Source Software

Browse CVS Repository

Contents of /xoonips/AL/criteria.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.5 - (show annotations) (download) (as text)
Mon Aug 29 02:02:56 2005 UTC (18 years, 6 months ago) by aga4096
Branch: MAIN
CVS Tags: AL_PORTING, MergePnt_20051116, REL20051226, XOONIPS_RC1, REL20060323, tag20060615, tag20070307current, tag20061115, MergePnt_20051220, tag20061130, merge_to_20060605, tag20070307, REL20060213, RELENG_2_0_0a_RELEASE, tag20060622, merge_to_20060411, HEAD
Branch point for: XOONIPS_STABLE_32, XOONIPS_STABLE, XOONIPS_STABLE_3, XOONIPS_STABLE_2
Changes since 1.4: +5 -2 lines
File MIME type: text/x-c++src
・valgrindでエラーが出るのを修正.

1 /*
2 * --------------------------------------------------------------------------
3 * XooNiPs Xoops modules for Neuroinformatics Platforms
4 * Copyright (C) 2005 RIKEN, Japan. All rights reserved.
5 * http://sourceforge.jp/projects/xoonips/
6 * --------------------------------------------------------------------------
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 * --------------------------------------------------------------------------
21 *
22 * SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申criteria鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
23 *
24 * $Revision: 1.4 $
25 * $Log: criteria.cc,v $
26 * Revision 1.4 2005/03/15 04:49:40 tani
27 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
28 *
29 * Revision 1.3 2004/11/27 01:08:08 youi
30 * clearAll:orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
31 *
32 * Revision 1.2 2004/11/27 00:39:57 youi
33 * orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申column鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
34 *
35 * Revision 1.1 2004/11/24 06:54:31 youi
36 * initial version
37 *
38 *
39 */
40 #include <stdlib.h>
41 #include <string.h>
42
43 #include "common.h"
44 #include "criteria.h"
45
46 /**
47 * SQL鐃緒申ORDERBY鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
48 *
49 * @param column 鐃緒申鐃緒申鐃緒申鐃緒申
50 * @param order 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(鐃緒申鐃緒申鐃緒申鐃緒申 orderby::ASC)
51 * @ref orderby::ASC
52 * @ref orderby::DESC
53 *
54 */
55 orderby::orderby( const char* column = "", int order = orderby::ASC ){
56 this -> column = 0;
57 setValue( &this -> column, column );
58 this -> order = order;
59 this -> next = 0;
60 }
61
62 /**
63 *
64 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
65 *
66 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
67 *
68 */
69 orderby::~orderby( ){
70 delete[] this -> column;
71 }
72
73 /**
74 *
75 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
76 * @return 鐃緒申鐃緒申鐃緒申鐃緒申
77 *
78 */
79 const char* orderby::getColumn( ) const { return column; }
80
81 /**
82 *
83 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
84 * @return 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
85 * @ref orderby::ASC
86 * @ref orderby::DESC
87 *
88 */
89 order_t orderby::getOrder( ) const{ return order; }
90
91 /**
92 *
93 * SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(LIMIT)鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申)鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
94 * 鐃緒申.
95 *
96 */
97 criteria::criteria( )
98 {
99 start = 0;
100 rows = 0;
101 indexOfOrders = 0;
102 ordersLen = 0;
103 ordersMax = 16;
104 orders = new orderby*[ ordersMax ];
105 memset( orders, 0, sizeof( orderby* ) * ordersMax );
106 }
107
108 /**
109 *
110 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
111 *
112 * addOrderBy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
113 *
114 * @ref addOrderBy
115 *
116 */
117 criteria::~criteria( )
118 {
119 if( orders != 0 ){
120 for( int i = 0; i < ordersLen; i++ ) delete orders[ i ];
121 delete[] orders;
122 }
123 }
124
125 /**
126 *
127 * SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
128 *
129 * @param start 鐃緒申鐃緒申鐃緒申
130 * @param rows 鐃緒申鐃緒申
131 *
132 */
133 void criteria::setLimit( int start , int rows )
134 {
135 this -> start = start;
136 this -> rows = rows;
137 }
138
139 /**
140 *
141 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
142 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
143 *
144 * @param order orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
145 *
146 */
147 void criteria::addOrderBy( orderby *order )
148 {
149 if( ordersMax == ordersLen ){
150 //orders鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
151 orderby** ptr = new orderby*[ ordersMax * 2 ];
152 memset( ptr, 0, sizeof( orderby* ) * ordersMax * 2 );
153 memcpy( ptr, orders, sizeof( orderby* ) * ordersMax );
154 delete[] orders;
155 ordersMax *= 2;
156 orders = ptr;
157 }
158 orders[ ordersLen ] = order;
159 ordersLen++;
160 }
161
162 /**
163 *
164 * 鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申. 2鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申nextOrderBy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.<br>
165 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(unsafe)鐃緒申鐃緒申
166 *
167 * @return 鐃緒申鐃緒申鐃緒申orderby
168 * @return 0 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申
169 * @ref nextOrderBy
170 *
171 */
172 const orderby* criteria::headOrderBy( )
173 {
174 indexOfOrders = 0;
175 if( indexOfOrders >= ordersLen ) return 0;
176 return orders[ indexOfOrders++ ];
177 }
178
179 /**
180 *
181 * orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.<br>
182 * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(unsafe)鐃緒申鐃緒申
183 *
184 * @return orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
185 * @return 0 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申
186 * @ref headNextOrderBy
187 *
188 */
189 const orderby* criteria::nextOrderBy( )
190 {
191 if( indexOfOrders >= ordersLen ) return 0;
192 return orders[ indexOfOrders++ ];
193 }
194
195 /**
196 *
197 * LIMIT鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申ORDERBY鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
198 *
199 */
200 void criteria::clearAll( )
201 {
202 for( int i = 0; i < ordersLen; i++ ) delete orders[ i ];
203 memset( orders, 0, sizeof( orderby* ) * ordersMax );
204 ordersLen = 0;
205 start = rows = 0;
206 }
207
208 /**
209 *
210 * LIMIT鐃緒申鐃緒申鐃緒申鐃緒申
211 *
212 * @return
213 *
214 */
215 int criteria::getLimitStart( ) const { return start; }
216
217 /**
218 *
219 * LIMIT鐃緒申鐃緒申鐃緒申
220 *
221 * @return
222 *
223 */
224 int criteria::getLimitRows( ) const{ return rows; }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26