KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > quercus > env > RefVar


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  *
23  * Free Software Foundation, Inc.
24  * 59 Temple Place, Suite 330
25  * Boston, MA 02111-1307 USA
26  *
27  * @author Scott Ferguson
28  */

29
30 package com.caucho.quercus.env;
31
32 import com.caucho.quercus.expr.Expr;
33 import com.caucho.quercus.program.AbstractFunction;
34 import com.caucho.vfs.WriteStream;
35
36 import java.io.IOException JavaDoc;
37 import java.io.Serializable JavaDoc;
38 import java.util.Collection JavaDoc;
39 import java.util.IdentityHashMap JavaDoc;
40
41 /**
42  * Represents a reference to a PHP variable in a function call.
43  */

44 public class RefVar extends Value
45   implements Serializable JavaDoc
46 {
47   private Var _var;
48
49   public RefVar(Var var)
50   {
51     _var = var;
52   }
53
54   /**
55    * Returns true for an implementation of a class
56    */

57   public boolean isA(String JavaDoc name)
58   {
59     return _var.isA(name);
60   }
61
62   /**
63    * True for a long
64    */

65   public boolean isLongConvertible()
66   {
67     return _var.isLongConvertible();
68   }
69
70   /**
71    * True to a double.
72    */

73   public boolean isDoubleConvertible()
74   {
75     return _var.isDoubleConvertible();
76   }
77
78   /**
79    * True for a number
80    */

81   public boolean isNumberConvertible()
82   {
83     return _var.isNumberConvertible();
84   }
85
86   /**
87    * Converts to a boolean.
88    */

89   public boolean toBoolean()
90   {
91     return _var.toBoolean();
92   }
93
94   /**
95    * Converts to a long.
96    */

97   public long toLong()
98   {
99     return _var.toLong();
100   }
101
102   /**
103    * Converts to a double.
104    */

105   public double toDouble()
106   {
107     return _var.toDouble();
108   }
109
110   /**
111    * Converts to a string.
112    * @param env
113    */

114   public StringValue toString(Env env)
115   {
116     return _var.toString(env);
117   }
118
119   /**
120    * Converts to an object.
121    */

122   public Value toObject(Env env)
123   {
124     return _var.toObject(env);
125   }
126
127   /**
128    * Converts to an object.
129    */

130   public Object JavaDoc toJavaObject()
131   {
132     return _var.toJavaObject();
133   }
134
135   /**
136    * Converts to a raw value.
137    */

138   public Value toValue()
139   {
140     return _var.toValue();
141   }
142
143   /**
144    * Returns true for an array.
145    */

146   public boolean isArray()
147   {
148     return _var.isArray();
149   }
150
151   /**
152    * Copy the value.
153    */

154   public Value copy()
155   {
156     // quercus/0d05
157
return this;
158   }
159
160   /**
161    * Converts to an argument value.
162    */

163   @Override JavaDoc
164   public Value toArgValueReadOnly()
165   {
166     return _var;
167   }
168
169   /**
170    * Converts to an argument value.
171    */

172   @Override JavaDoc
173   public Value toArgValue()
174   {
175     // php/343k
176
return _var;
177   }
178
179   /**
180    * Converts to an argument value.
181    */

182   @Override JavaDoc
183   public Value toRefValue()
184   {
185     return _var;
186   }
187
188   /**
189    * Converts to a variable
190    */

191   @Override JavaDoc
192   public Var toVar()
193   {
194     return _var;
195   }
196
197   /**
198    * Converts to a reference variable
199    */

200   @Override JavaDoc
201   public Var toRefVar()
202   {
203     return _var;
204   }
205
206   /**
207    * Negates the value.
208    */

209   public Value neg()
210   {
211     return _var.neg();
212   }
213
214   /**
215    * Adds to the following value.
216    */

217   public Value add(Value rValue)
218   {
219     return _var.add(rValue);
220   }
221
222   /**
223    * Adds to the following value.
224    */

225   public Value add(long rValue)
226   {
227     return _var.add(rValue);
228   }
229
230   /**
231    * Pre-increment the following value.
232    */

233   public Value preincr(int incr)
234   {
235     return _var.preincr(incr);
236   }
237
238   /**
239    * Post-increment the following value.
240    */

241   public Value postincr(int incr)
242   {
243     return _var.postincr(incr);
244   }
245
246   /**
247    * Subtracts to the following value.
248    */

249   public Value sub(Value rValue)
250   {
251     return _var.sub(rValue);
252   }
253
254   /**
255    * Multiplies to the following value.
256    */

257   public Value mul(Value rValue)
258   {
259     return _var.mul(rValue);
260   }
261
262   /**
263    * Multiplies to the following value.
264    */

265   public Value mul(long lValue)
266   {
267     return _var.mul(lValue);
268   }
269
270   /**
271    * Divides the following value.
272    */

273   public Value div(Value rValue)
274   {
275     return _var.div(rValue);
276   }
277
278   /**
279    * Shifts left by the value.
280    */

281   public Value lshift(Value rValue)
282   {
283     return _var.lshift(rValue);
284   }
285
286   /**
287    * Shifts right by the value.
288    */

289   public Value rshift(Value rValue)
290   {
291     return _var.rshift(rValue);
292   }
293
294   /**
295    * Returns true for equality
296    */

297   public boolean eql(Value rValue, Env env)
298   {
299     return _var.equals(rValue.toValue());
300   }
301
302   /**
303    * Returns the array/object size
304    */

305   public int getSize()
306   {
307     return _var.getSize();
308   }
309
310   /**
311    * Returns the field values.
312    */

313   public Collection JavaDoc<Value> getIndices()
314   {
315     return _var.getIndices();
316   }
317
318   /**
319    * Returns the array keys.
320    */

321   public Value []getKeyArray()
322   {
323     return _var.getKeyArray();
324   }
325
326   /**
327    * Returns the array values.
328    */

329   public Value []getValueArray(Env env)
330   {
331     return _var.getValueArray(env);
332   }
333
334   /**
335    * Returns the array ref.
336    */

337   public Value get(Value index)
338   {
339     return _var.get(index);
340   }
341
342   /**
343    * Returns the array ref.
344    */

345   public Value getRef(Value index)
346   {
347     return _var.getRef(index);
348   }
349
350   /**
351    * Returns the array ref.
352    */

353   public Value put(Value index, Value value)
354   {
355     return _var.put(index, value);
356   }
357
358   /**
359    * Returns the array ref.
360    */

361   public Value put(Value value)
362   {
363     return _var.put(value);
364   }
365
366   /**
367    * Returns the character at an index
368    */

369   /* XXX: need test first
370   public Value charAt(long index)
371   {
372     return _ref.charAt(index);
373   }
374   */

375
376   /**
377    * Evaluates a method.
378    */

379   public Value callMethod(Env env, String JavaDoc methodName, Expr []args)
380   {
381     return _var.callMethod(env, methodName, args);
382   }
383
384   /**
385    * Evaluates a method.
386    */

387   public Value callMethod(Env env, String JavaDoc methodName, Value []args)
388   {
389     return _var.callMethod(env, methodName, args);
390   }
391
392   /**
393    * Evaluates a method.
394    */

395   public Value callMethod(Env env, String JavaDoc methodName)
396   {
397     return _var.callMethod(env, methodName);
398   }
399
400   /**
401    * Evaluates a method.
402    */

403   public Value callMethod(Env env, String JavaDoc methodName, Value a0)
404   {
405     return _var.callMethod(env, methodName, a0);
406   }
407
408   /**
409    * Evaluates a method.
410    */

411   public Value callMethod(Env env, String JavaDoc methodName, Value a0, Value a1)
412   {
413     return _var.callMethod(env, methodName, a0, a1);
414   }
415
416   /**
417    * Evaluates a method with 3 args.
418    */

419   public Value callMethod(Env env, String JavaDoc methodName,
420               Value a0, Value a1, Value a2)
421   {
422     return _var.callMethod(env, methodName, a0, a1, a2);
423   }
424
425   /**
426    * Evaluates a method with 4 args.
427    */

428   public Value callMethod(Env env, String JavaDoc methodName,
429               Value a0, Value a1, Value a2, Value a3)
430   {
431     return _var.callMethod(env, methodName, a0, a1, a2, a3);
432   }
433
434   /**
435    * Evaluates a method with 5 args.
436    */

437   public Value callMethod(Env env, String JavaDoc methodName,
438               Value a0, Value a1, Value a2, Value a3, Value a4)
439   {
440     return _var.callMethod(env, methodName, a0, a1, a2, a3, a4);
441   }
442
443   /**
444    * Evaluates a method.
445    */

446   public Value callMethodRef(Env env, String JavaDoc methodName, Expr []args)
447   {
448     return _var.callMethodRef(env, methodName, args);
449   }
450
451   /**
452    * Evaluates a method.
453    */

454   public Value callMethodRef(Env env, String JavaDoc methodName, Value []args)
455   {
456     return _var.callMethodRef(env, methodName, args);
457   }
458
459   /**
460    * Evaluates a method.
461    */

462   public Value callMethodRef(Env env, String JavaDoc methodName)
463   {
464     return _var.callMethodRef(env, methodName);
465   }
466
467   /**
468    * Evaluates a method.
469    */

470   public Value callMethodRef(Env env, String JavaDoc methodName, Value a0)
471   {
472     return _var.callMethodRef(env, methodName, a0);
473   }
474
475   /**
476    * Evaluates a method.
477    */

478   public Value callMethodRef(Env env, String JavaDoc methodName, Value a0, Value a1)
479   {
480     return _var.callMethodRef(env, methodName, a0, a1);
481   }
482
483   /**
484    * Evaluates a method with 3 args.
485    */

486   public Value callMethodRef(Env env, String JavaDoc methodName,
487               Value a0, Value a1, Value a2)
488   {
489     return _var.callMethodRef(env, methodName, a0, a1, a2);
490   }
491
492   /**
493    * Evaluates a method with 4 args.
494    */

495   public Value callMethodRef(Env env, String JavaDoc methodName,
496               Value a0, Value a1, Value a2, Value a3)
497   {
498     return _var.callMethodRef(env, methodName, a0, a1, a2, a3);
499   }
500
501   /**
502    * Evaluates a method with 5 args.
503    */

504   public Value callMethodRef(Env env, String JavaDoc methodName,
505               Value a0, Value a1, Value a2, Value a3, Value a4)
506   {
507     return _var.callMethodRef(env, methodName, a0, a1, a2, a3, a4);
508   }
509
510   /**
511    * Evaluates a method.
512    */

513   public Value callClassMethod(Env env, AbstractFunction fun, Value []args)
514   {
515     return _var.callClassMethod(env, fun, args);
516   }
517
518   /**
519    * Prints the value.
520    * @param env
521    */

522   public void print(Env env)
523   {
524     _var.print(env);
525   }
526
527   public void varDumpImpl(Env env,
528                           WriteStream out,
529                           int depth,
530                           IdentityHashMap JavaDoc<Value,String JavaDoc> valueSet)
531     throws IOException JavaDoc
532   {
533     out.print("&");
534     toValue().varDumpImpl(env, out, depth, valueSet);
535   }
536
537   protected void printRImpl(Env env,
538                             WriteStream out,
539                             int depth,
540                             IdentityHashMap JavaDoc<Value, String JavaDoc> valueSet)
541     throws IOException JavaDoc
542   {
543     toValue().printRImpl(env, out, depth, valueSet);
544   }
545   
546   //
547
// Java Serialization
548
//
549

550   public Object JavaDoc writeReplace()
551   {
552     return _var;
553   }
554 }
555
556
Popular Tags