Develop and Download Open Source Software

Browse CVS Repository

Annotation of /xoonips/AL/criteria.cc

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


Revision 1.5 - (hide annotations) (download) (as text)
Mon Aug 29 02:02:56 2005 UTC (18 years, 7 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 youi 1.1 /*
2 tani 1.4 * --------------------------------------------------------------------------
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 youi 1.1 * SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申criteria鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
23     *
24 aga4096 1.5 * $Revision: 1.4 $
25 youi 1.2 * $Log: criteria.cc,v $
26 aga4096 1.5 * Revision 1.4 2005/03/15 04:49:40 tani
27     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
28     *
29 tani 1.4 * Revision 1.3 2004/11/27 01:08:08 youi
30     * clearAll:orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
31     *
32 youi 1.3 * Revision 1.2 2004/11/27 00:39:57 youi
33     * orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申column鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
34     *
35 youi 1.2 * Revision 1.1 2004/11/24 06:54:31 youi
36     * initial version
37     *
38 youi 1.1 *
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 youi 1.2 this -> column = 0;
57 youi 1.1 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 aga4096 1.5 delete[] this -> column;
71 youi 1.1 }
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 youi 1.3 for( int i = 0; i < ordersLen; i++ ) delete orders[ i ];
203 youi 1.1 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