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.4 - (hide annotations) (download) (as text)
Tue Mar 15 04:49:40 2005 UTC (19 years ago) by tani
Branch: MAIN
CVS Tags: RELEASE_1_0_0, RELEASE_1_0_1
Changes since 1.3: +24 -1 lines
File MIME type: text/x-c++src
ライセンス文を追加.

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 tani 1.4 * $Revision: 1.3 $
25 youi 1.2 * $Log: criteria.cc,v $
26 tani 1.4 * Revision 1.3 2004/11/27 01:08:08 youi
27     * clearAll:orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
28     *
29 youi 1.3 * Revision 1.2 2004/11/27 00:39:57 youi
30     * orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申column鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
31     *
32 youi 1.2 * Revision 1.1 2004/11/24 06:54:31 youi
33     * initial version
34     *
35 youi 1.1 *
36     */
37     #include <stdlib.h>
38     #include <string.h>
39    
40     #include "common.h"
41     #include "criteria.h"
42    
43     /**
44     * SQL鐃緒申ORDERBY鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
45     *
46     * @param column 鐃緒申鐃緒申鐃緒申鐃緒申
47     * @param order 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(鐃緒申鐃緒申鐃緒申鐃緒申 orderby::ASC)
48     * @ref orderby::ASC
49     * @ref orderby::DESC
50     *
51     */
52     orderby::orderby( const char* column = "", int order = orderby::ASC ){
53 youi 1.2 this -> column = 0;
54 youi 1.1 setValue( &this -> column, column );
55     this -> order = order;
56     this -> next = 0;
57     }
58    
59     /**
60     *
61     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
62     *
63     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
64     *
65     */
66     orderby::~orderby( ){
67     delete this -> column;
68     }
69    
70     /**
71     *
72     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
73     * @return 鐃緒申鐃緒申鐃緒申鐃緒申
74     *
75     */
76     const char* orderby::getColumn( ) const { return column; }
77    
78     /**
79     *
80     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
81     * @return 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
82     * @ref orderby::ASC
83     * @ref orderby::DESC
84     *
85     */
86     order_t orderby::getOrder( ) const{ return order; }
87    
88     /**
89     *
90     * SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(LIMIT)鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申)鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
91     * 鐃緒申.
92     *
93     */
94     criteria::criteria( )
95     {
96     start = 0;
97     rows = 0;
98     indexOfOrders = 0;
99     ordersLen = 0;
100     ordersMax = 16;
101     orders = new orderby*[ ordersMax ];
102     memset( orders, 0, sizeof( orderby* ) * ordersMax );
103     }
104    
105     /**
106     *
107     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
108     *
109     * addOrderBy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
110     *
111     * @ref addOrderBy
112     *
113     */
114     criteria::~criteria( )
115     {
116     if( orders != 0 ){
117     for( int i = 0; i < ordersLen; i++ ) delete orders[ i ];
118     delete[] orders;
119     }
120     }
121    
122     /**
123     *
124     * SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
125     *
126     * @param start 鐃緒申鐃緒申鐃緒申
127     * @param rows 鐃緒申鐃緒申
128     *
129     */
130     void criteria::setLimit( int start , int rows )
131     {
132     this -> start = start;
133     this -> rows = rows;
134     }
135    
136     /**
137     *
138     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申SQL鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
139     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
140     *
141     * @param order orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
142     *
143     */
144     void criteria::addOrderBy( orderby *order )
145     {
146     if( ordersMax == ordersLen ){
147     //orders鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
148     orderby** ptr = new orderby*[ ordersMax * 2 ];
149     memset( ptr, 0, sizeof( orderby* ) * ordersMax * 2 );
150     memcpy( ptr, orders, sizeof( orderby* ) * ordersMax );
151     delete[] orders;
152     ordersMax *= 2;
153     orders = ptr;
154     }
155     orders[ ordersLen ] = order;
156     ordersLen++;
157     }
158    
159     /**
160     *
161     * 鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申. 2鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申nextOrderBy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.<br>
162     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(unsafe)鐃緒申鐃緒申
163     *
164     * @return 鐃緒申鐃緒申鐃緒申orderby
165     * @return 0 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申
166     * @ref nextOrderBy
167     *
168     */
169     const orderby* criteria::headOrderBy( )
170     {
171     indexOfOrders = 0;
172     if( indexOfOrders >= ordersLen ) return 0;
173     return orders[ indexOfOrders++ ];
174     }
175    
176     /**
177     *
178     * orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.<br>
179     * 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申(unsafe)鐃緒申鐃緒申
180     *
181     * @return orderby鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
182     * @return 0 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申orderby鐃緒申鐃緒申鐃緒申
183     * @ref headNextOrderBy
184     *
185     */
186     const orderby* criteria::nextOrderBy( )
187     {
188     if( indexOfOrders >= ordersLen ) return 0;
189     return orders[ indexOfOrders++ ];
190     }
191    
192     /**
193     *
194     * LIMIT鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申ORDERBY鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申.
195     *
196     */
197     void criteria::clearAll( )
198     {
199 youi 1.3 for( int i = 0; i < ordersLen; i++ ) delete orders[ i ];
200 youi 1.1 memset( orders, 0, sizeof( orderby* ) * ordersMax );
201     ordersLen = 0;
202     start = rows = 0;
203     }
204    
205     /**
206     *
207     * LIMIT鐃緒申鐃緒申鐃緒申鐃緒申
208     *
209     * @return
210     *
211     */
212     int criteria::getLimitStart( ) const { return start; }
213    
214     /**
215     *
216     * LIMIT鐃緒申鐃緒申鐃緒申
217     *
218     * @return
219     *
220     */
221     int criteria::getLimitRows( ) const{ return rows; }

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