casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
ExprMathNodeArray.h
Go to the documentation of this file.
00001 //# ExprMathArrayNode.h: Nodes representing mathematical array operators in table select expression tree
00002 //# Copyright (C) 1997,1999,2000
00003 //# Associated Universities, Inc. Washington DC, USA.
00004 //#
00005 //# This library is free software; you can redistribute it and/or modify it
00006 //# under the terms of the GNU Library General Public License as published by
00007 //# the Free Software Foundation; either version 2 of the License, or (at your
00008 //# option) any later version.
00009 //#
00010 //# This library is distributed in the hope that it will be useful, but WITHOUT
00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00013 //# License for more details.
00014 //#
00015 //# You should have received a copy of the GNU Library General Public License
00016 //# along with this library; if not, write to the Free Software Foundation,
00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00018 //#
00019 //# Correspondence concerning AIPS++ should be addressed as follows:
00020 //#        Internet email: aips2-request@nrao.edu.
00021 //#        Postal address: AIPS++ Project Office
00022 //#                        National Radio Astronomy Observatory
00023 //#                        520 Edgemont Road
00024 //#                        Charlottesville, VA 22903-2475 USA
00025 //#
00026 //# $Id: ExprMathNodeArray.h 21168 2012-01-04 08:11:03Z gervandiepen $
00027 
00028 #ifndef TABLES_EXPRMATHNODEARRAY_H
00029 #define TABLES_EXPRMATHNODEARRAY_H
00030 
00031 //# Includes
00032 #include <casa/aips.h>
00033 #include <tables/Tables/ExprNodeArray.h>
00034 #include <casa/Arrays/Array.h>
00035 
00036 namespace casa { //# NAMESPACE CASA - BEGIN
00037 
00038 //# Forward Declarations
00039 
00040 //# This file defines classes derived from TableExprNode representing
00041 //# the data type and operator in a table expression.
00042 //#
00043 //# Data types Bool, Int64, Double, DComplex and String are used.
00044 //# Char, uChar, Short, uShort, Int, and uInt are converted to Int64,
00045 //# Float to Double, and Complex to DComplex.
00046 //# Binary operators +, -, *, /, and % are recognized.
00047 //# Also unary + and - are recognized.
00048 
00049 
00050 
00051 // <summary>
00052 // Array addition in table select expression tree
00053 // </summary>
00054 
00055 // <use visibility=local>
00056 
00057 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00058 // </reviewed>
00059 
00060 // <prerequisite>
00061 //# Classes you should understand before using this one.
00062 //   <li> TableExprNode
00063 //   <li> TableExprNodeRep
00064 // </prerequisite>
00065 
00066 // <synopsis>
00067 // This abstract class represents an addition in a table expression tree.
00068 // </synopsis>
00069 
00070 class TableExprNodeArrayPlus : public TableExprNodeArray
00071 {
00072 public:
00073     TableExprNodeArrayPlus (NodeDataType, const TableExprNodeRep&);
00074     ~TableExprNodeArrayPlus();
00075 };
00076 
00077 
00078 // <summary>
00079 // Int Array addition in table select expression tree
00080 // </summary>
00081 
00082 // <use visibility=local>
00083 
00084 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00085 // </reviewed>
00086 
00087 // <prerequisite>
00088 //# Classes you should understand before using this one.
00089 //   <li> TableExprNode
00090 //   <li> TableExprNodeRep
00091 // </prerequisite>
00092 
00093 // <synopsis> 
00094 // This class represents an addition in a table select expression tree.
00095 // Strings can also be added (ie. concatenated).
00096 // Numeric data types will be promoted if possible, so for instance
00097 // an addition of Int and Complex is possible.
00098 // </synopsis> 
00099 
00100 class TableExprNodeArrayPlusInt : public TableExprNodeArrayPlus
00101 {
00102 public:
00103     TableExprNodeArrayPlusInt (const TableExprNodeRep&);
00104     ~TableExprNodeArrayPlusInt();
00105     Array<Int64> getArrayInt (const TableExprId& id);
00106 };
00107 
00108 
00109 // <summary>
00110 // Double Array addition in table select expression tree
00111 // </summary>
00112 
00113 // <use visibility=local>
00114 
00115 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00116 // </reviewed>
00117 
00118 // <prerequisite>
00119 //# Classes you should understand before using this one.
00120 //   <li> TableExprNode
00121 //   <li> TableExprNodeRep
00122 // </prerequisite>
00123 
00124 // <synopsis> 
00125 // This class represents an addition in a table select expression tree.
00126 // Strings can also be added (ie. concatenated).
00127 // Numeric data types will be promoted if possible, so for instance
00128 // an addition of Int and Complex is possible.
00129 // </synopsis> 
00130 
00131 class TableExprNodeArrayPlusDouble : public TableExprNodeArrayPlus
00132 {
00133 public:
00134     TableExprNodeArrayPlusDouble (const TableExprNodeRep&);
00135     ~TableExprNodeArrayPlusDouble();
00136     Array<Double> getArrayDouble (const TableExprId& id);
00137 };
00138 
00139 
00140 // <summary>
00141 // DComplex Array addition in table select expression tree
00142 // </summary>
00143 
00144 // <use visibility=local>
00145 
00146 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00147 // </reviewed>
00148 
00149 // <prerequisite>
00150 //# Classes you should understand before using this one.
00151 //   <li> TableExprNode
00152 //   <li> TableExprNodeRep
00153 // </prerequisite>
00154 
00155 // <synopsis> 
00156 // This class represents an addition in a table select expression tree.
00157 // Strings can also be added (ie. concatenated).
00158 // Numeric data types will be promoted if possible, so for instance
00159 // an addition of Int and Complex is possible.
00160 // </synopsis> 
00161 
00162 class TableExprNodeArrayPlusDComplex : public TableExprNodeArrayPlus
00163 {
00164 public:
00165     TableExprNodeArrayPlusDComplex (const TableExprNodeRep&);
00166     ~TableExprNodeArrayPlusDComplex();
00167     Array<DComplex> getArrayDComplex (const TableExprId& id);
00168 };
00169 
00170 
00171 // <summary>
00172 // String Array addition in table select expression tree
00173 // </summary>
00174 
00175 // <use visibility=local>
00176 
00177 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00178 // </reviewed>
00179 
00180 // <prerequisite>
00181 //# Classes you should understand before using this one.
00182 //   <li> TableExprNode
00183 //   <li> TableExprNodeRep
00184 // </prerequisite>
00185 
00186 // <synopsis> 
00187 // This class represents an addition in a table select expression tree.
00188 // Strings can also be added (ie. concatenated).
00189 // Numeric data types will be promoted if possible, so for instance
00190 // an addition of Int and Complex is possible.
00191 // </synopsis> 
00192 
00193 class TableExprNodeArrayPlusString : public TableExprNodeArrayPlus
00194 {
00195 public:
00196     TableExprNodeArrayPlusString (const TableExprNodeRep&);
00197     ~TableExprNodeArrayPlusString();
00198     Array<String> getArrayString (const TableExprId& id);
00199 private:
00200     // Concatenate <src>nr</src> arrays of strings.
00201     // The increment is 0 for a scalar value. Otherwise it is 1.
00202     void concString (String* to, const String* left, Int incrLeft,
00203                      const String* right, Int incrRight, uInt nr) const;
00204 };
00205 
00206 
00207 // <summary>
00208 // Date Array addition in table select expression tree
00209 // </summary>
00210 
00211 // <use visibility=local>
00212 
00213 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00214 // </reviewed>
00215 
00216 // <prerequisite>
00217 //# Classes you should understand before using this one.
00218 //   <li> TableExprNode
00219 //   <li> TableExprNodeRep
00220 // </prerequisite>
00221 
00222 // <synopsis> 
00223 // This class represents an addition in a table select expression tree.
00224 // Strings can also be added (ie. concatenated).
00225 // Numeric data types will be promoted if possible, so for instance
00226 // an addition of Int and Complex is possible.
00227 // </synopsis> 
00228 
00229 class TableExprNodeArrayPlusDate : public TableExprNodeArrayPlus
00230 {
00231 public:
00232     TableExprNodeArrayPlusDate (const TableExprNodeRep&);
00233     ~TableExprNodeArrayPlusDate();
00234     virtual void handleUnits();
00235     Array<Double> getArrayDouble (const TableExprId& id);
00236     Array<MVTime> getArrayDate   (const TableExprId& id);
00237 };
00238 
00239 
00240 
00241 // <summary>
00242 // Array addition in table select expression tree
00243 // </summary>
00244 
00245 // <use visibility=local>
00246 
00247 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00248 // </reviewed>
00249 
00250 // <prerequisite>
00251 //# Classes you should understand before using this one.
00252 //   <li> TableExprNode
00253 //   <li> TableExprNodeRep
00254 // </prerequisite>
00255 
00256 // <synopsis>
00257 // This abstract class represents an addition in a table expression tree.
00258 // </synopsis>
00259 
00260 class TableExprNodeArrayMinus : public TableExprNodeArray
00261 {
00262 public:
00263     TableExprNodeArrayMinus (NodeDataType, const TableExprNodeRep&);
00264     ~TableExprNodeArrayMinus();
00265 };
00266 
00267 
00268 // <summary>
00269 // Int Array subtraction in table select expression tree
00270 // </summary>
00271 
00272 // <use visibility=local>
00273 
00274 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00275 // </reviewed>
00276 
00277 // <prerequisite>
00278 //# Classes you should understand before using this one.
00279 //   <li> TableExprNode
00280 //   <li> TableExprNodeRep
00281 // </prerequisite>
00282 
00283 // <synopsis> 
00284 // This class represents a subtraction in a table select expression tree.
00285 // Numeric data types will be promoted if possible, so for instance
00286 // a subtraction of Int and Complex is possible.
00287 // </synopsis> 
00288 
00289 class TableExprNodeArrayMinusInt : public TableExprNodeArrayMinus
00290 {
00291 public:
00292     TableExprNodeArrayMinusInt (const TableExprNodeRep&);
00293     ~TableExprNodeArrayMinusInt();
00294     Array<Int64> getArrayInt (const TableExprId& id);
00295 };
00296 
00297 
00298 // <summary>
00299 // Double Array subtraction in table select expression tree
00300 // </summary>
00301 
00302 // <use visibility=local>
00303 
00304 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00305 // </reviewed>
00306 
00307 // <prerequisite>
00308 //# Classes you should understand before using this one.
00309 //   <li> TableExprNode
00310 //   <li> TableExprNodeRep
00311 // </prerequisite>
00312 
00313 // <synopsis> 
00314 // This class represents a subtraction in a table select expression tree.
00315 // Numeric data types will be promoted if possible, so for instance
00316 // a subtraction of Int and Complex is possible.
00317 // </synopsis> 
00318 
00319 class TableExprNodeArrayMinusDouble : public TableExprNodeArrayMinus
00320 {
00321 public:
00322     TableExprNodeArrayMinusDouble (const TableExprNodeRep&);
00323     ~TableExprNodeArrayMinusDouble();
00324     Array<Double> getArrayDouble (const TableExprId& id);
00325 };
00326 
00327 
00328 // <summary>
00329 // DComplex Array subtraction in table select expression tree
00330 // </summary>
00331 
00332 // <use visibility=local>
00333 
00334 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00335 // </reviewed>
00336 
00337 // <prerequisite>
00338 //# Classes you should understand before using this one.
00339 //   <li> TableExprNode
00340 //   <li> TableExprNodeRep
00341 // </prerequisite>
00342 
00343 // <synopsis> 
00344 // This class represents a subtraction in a table select expression tree.
00345 // Numeric data types will be promoted if possible, so for instance
00346 // a subtraction of Int and Complex is possible.
00347 // </synopsis> 
00348 
00349 class TableExprNodeArrayMinusDComplex : public TableExprNodeArrayMinus
00350 {
00351 public:
00352     TableExprNodeArrayMinusDComplex (const TableExprNodeRep&);
00353     ~TableExprNodeArrayMinusDComplex();
00354     Array<DComplex> getArrayDComplex (const TableExprId& id);
00355 };
00356 
00357 
00358 // <summary>
00359 // Date Array subtraction in table select expression tree
00360 // </summary>
00361 
00362 // <use visibility=local>
00363 
00364 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00365 // </reviewed>
00366 
00367 // <prerequisite>
00368 //# Classes you should understand before using this one.
00369 //   <li> TableExprNode
00370 //   <li> TableExprNodeRep
00371 // </prerequisite>
00372 
00373 // <synopsis> 
00374 // This class represents a subtraction in a table select expression tree.
00375 // Numeric data types will be promoted if possible, so for instance
00376 // a subtraction of Int and Complex is possible.
00377 // </synopsis> 
00378 
00379 class TableExprNodeArrayMinusDate : public TableExprNodeArrayMinus
00380 {
00381 public:
00382     TableExprNodeArrayMinusDate (const TableExprNodeRep&);
00383     ~TableExprNodeArrayMinusDate();
00384     virtual void handleUnits();
00385     Array<Double> getArrayDouble (const TableExprId& id);
00386     Array<MVTime> getArrayDate   (const TableExprId& id);
00387 };
00388 
00389 
00390 
00391 // <summary>
00392 // Array addition in table select expression tree
00393 // </summary>
00394 
00395 // <use visibility=local>
00396 
00397 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00398 // </reviewed>
00399 
00400 // <prerequisite>
00401 //# Classes you should understand before using this one.
00402 //   <li> TableExprNode
00403 //   <li> TableExprNodeRep
00404 // </prerequisite>
00405 
00406 // <synopsis>
00407 // This abstract class represents an addition in a table expression tree.
00408 // </synopsis>
00409 
00410 class TableExprNodeArrayTimes : public TableExprNodeArray
00411 {
00412 public:
00413     TableExprNodeArrayTimes (NodeDataType, const TableExprNodeRep&);
00414     ~TableExprNodeArrayTimes();
00415     virtual void handleUnits();
00416 };
00417 
00418 
00419 // <summary>
00420 // Int Array multiplication in table select expression tree
00421 // </summary>
00422 
00423 // <use visibility=local>
00424 
00425 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00426 // </reviewed>
00427 
00428 // <prerequisite>
00429 //# Classes you should understand before using this one.
00430 //   <li> TableExprNode
00431 //   <li> TableExprNodeRep
00432 // </prerequisite>
00433 
00434 // <synopsis> 
00435 // This class represents a multiplication in a table select expression tree.
00436 // Numeric data types will be promoted if possible, so for instance
00437 // a multiplication of Int and Complex is possible.
00438 // </synopsis> 
00439 
00440 class TableExprNodeArrayTimesInt : public TableExprNodeArrayTimes
00441 {
00442 public:
00443     TableExprNodeArrayTimesInt (const TableExprNodeRep&);
00444     ~TableExprNodeArrayTimesInt();
00445     Array<Int64> getArrayInt (const TableExprId& id);
00446 };
00447 
00448 
00449 // <summary>
00450 // Double Array multiplication in table select expression tree
00451 // </summary>
00452 
00453 // <use visibility=local>
00454 
00455 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00456 // </reviewed>
00457 
00458 // <prerequisite>
00459 //# Classes you should understand before using this one.
00460 //   <li> TableExprNode
00461 //   <li> TableExprNodeRep
00462 // </prerequisite>
00463 
00464 // <synopsis> 
00465 // This class represents a multiplication in a table select expression tree.
00466 // Numeric data types will be promoted if possible, so for instance
00467 // a multiplication of Int and Complex is possible.
00468 // </synopsis> 
00469 
00470 class TableExprNodeArrayTimesDouble : public TableExprNodeArrayTimes
00471 {
00472 public:
00473     TableExprNodeArrayTimesDouble (const TableExprNodeRep&);
00474     ~TableExprNodeArrayTimesDouble();
00475     Array<Double> getArrayDouble (const TableExprId& id);
00476 };
00477 
00478 
00479 // <summary>
00480 // DComplex Array multiplication in table select expression tree
00481 // </summary>
00482 
00483 // <use visibility=local>
00484 
00485 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00486 // </reviewed>
00487 
00488 // <prerequisite>
00489 //# Classes you should understand before using this one.
00490 //   <li> TableExprNode
00491 //   <li> TableExprNodeRep
00492 // </prerequisite>
00493 
00494 // <synopsis> 
00495 // This class represents a multiplication in a table select expression tree.
00496 // Numeric data types will be promoted if possible, so for instance
00497 // a multiplication of Int and Complex is possible.
00498 // </synopsis> 
00499 
00500 class TableExprNodeArrayTimesDComplex : public TableExprNodeArrayTimes
00501 {
00502 public:
00503     TableExprNodeArrayTimesDComplex (const TableExprNodeRep&);
00504     ~TableExprNodeArrayTimesDComplex();
00505     Array<DComplex> getArrayDComplex (const TableExprId& id);
00506 };
00507 
00508 
00509 
00510 // <summary>
00511 // Array addition in table select expression tree
00512 // </summary>
00513 
00514 // <use visibility=local>
00515 
00516 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00517 // </reviewed>
00518 
00519 // <prerequisite>
00520 //# Classes you should understand before using this one.
00521 //   <li> TableExprNode
00522 //   <li> TableExprNodeRep
00523 // </prerequisite>
00524 
00525 // <synopsis>
00526 // This abstract class represents an addition in a table expression tree.
00527 // </synopsis>
00528 
00529 class TableExprNodeArrayDivide : public TableExprNodeArray
00530 {
00531 public:
00532     TableExprNodeArrayDivide (NodeDataType, const TableExprNodeRep&);
00533     ~TableExprNodeArrayDivide();
00534     virtual void handleUnits();
00535 };
00536 
00537 
00538 // <summary>
00539 // Double Array division in table select expression tree
00540 // </summary>
00541 
00542 // <use visibility=local>
00543 
00544 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00545 // </reviewed>
00546 
00547 // <prerequisite>
00548 //# Classes you should understand before using this one.
00549 //   <li> TableExprNode
00550 //   <li> TableExprNodeRep
00551 // </prerequisite>
00552 
00553 // <synopsis> 
00554 // This class represents a division in a table select expression tree.
00555 // Numeric data types will be promoted if possible, so for instance
00556 // a division of Int and Complex is possible.
00557 // </synopsis> 
00558 
00559 class TableExprNodeArrayDivideDouble : public TableExprNodeArrayDivide
00560 {
00561 public:
00562     TableExprNodeArrayDivideDouble (const TableExprNodeRep&);
00563     ~TableExprNodeArrayDivideDouble();
00564     Array<Double> getArrayDouble (const TableExprId& id);
00565 };
00566 
00567 
00568 // <summary>
00569 // DComplex Array division in table select expression tree
00570 // </summary>
00571 
00572 // <use visibility=local>
00573 
00574 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00575 // </reviewed>
00576 
00577 // <prerequisite>
00578 //# Classes you should understand before using this one.
00579 //   <li> TableExprNode
00580 //   <li> TableExprNodeRep
00581 // </prerequisite>
00582 
00583 // <synopsis> 
00584 // This class represents a division in a table select expression tree.
00585 // Numeric data types will be promoted if possible, so for instance
00586 // a division of Int and Complex is possible.
00587 // </synopsis> 
00588 
00589 class TableExprNodeArrayDivideDComplex : public TableExprNodeArrayDivide
00590 {
00591 public:
00592     TableExprNodeArrayDivideDComplex (const TableExprNodeRep&);
00593     ~TableExprNodeArrayDivideDComplex();
00594     Array<DComplex> getArrayDComplex (const TableExprId& id);
00595 };
00596 
00597 
00598 
00599 // <summary>
00600 // Array addition in table select expression tree
00601 // </summary>
00602 
00603 // <use visibility=local>
00604 
00605 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00606 // </reviewed>
00607 
00608 // <prerequisite>
00609 //# Classes you should understand before using this one.
00610 //   <li> TableExprNode
00611 //   <li> TableExprNodeRep
00612 // </prerequisite>
00613 
00614 // <synopsis>
00615 // This abstract class represents an addition in a table expression tree.
00616 // </synopsis>
00617 
00618 class TableExprNodeArrayModulo : public TableExprNodeArray
00619 {
00620 public:
00621     TableExprNodeArrayModulo (NodeDataType, const TableExprNodeRep&);
00622     ~TableExprNodeArrayModulo();
00623     virtual void handleUnits();
00624 };
00625 
00626 
00627 // <summary>
00628 // Int Array modulo in table select expression tree
00629 // </summary>
00630 
00631 // <use visibility=local>
00632 
00633 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00634 // </reviewed>
00635 
00636 // <prerequisite>
00637 //# Classes you should understand before using this one.
00638 //   <li> TableExprNode
00639 //   <li> TableExprNodeRep
00640 // </prerequisite>
00641 
00642 // <synopsis> 
00643 // This class represents a modulo operation in a table select expression tree.
00644 // It is only possible for datatype Int.
00645 // </synopsis> 
00646 
00647 class TableExprNodeArrayModuloInt : public TableExprNodeArrayModulo
00648 {
00649 public:
00650     TableExprNodeArrayModuloInt (const TableExprNodeRep&);
00651     ~TableExprNodeArrayModuloInt();
00652     Array<Int64> getArrayInt (const TableExprId& id);
00653 };
00654 
00655 
00656 // <summary>
00657 // Double Array modulo in table select expression tree
00658 // </summary>
00659 
00660 // <use visibility=local>
00661 
00662 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00663 // </reviewed>
00664 
00665 // <prerequisite>
00666 //# Classes you should understand before using this one.
00667 //   <li> TableExprNode
00668 //   <li> TableExprNodeRep
00669 // </prerequisite>
00670 
00671 // <synopsis> 
00672 // This class represents a modulo operation in a table select expression tree.
00673 // It is only possible for datatype Double.
00674 // </synopsis> 
00675 
00676 class TableExprNodeArrayModuloDouble : public TableExprNodeArrayModulo
00677 {
00678 public:
00679     TableExprNodeArrayModuloDouble (const TableExprNodeRep&);
00680     ~TableExprNodeArrayModuloDouble();
00681     Array<Double> getArrayDouble (const TableExprId& id);
00682 };
00683 
00684 
00685 
00686 // <summary>
00687 // Int Array bitwise and in table select expression tree
00688 // </summary>
00689 
00690 // <use visibility=local>
00691 
00692 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00693 // </reviewed>
00694 
00695 // <prerequisite>
00696 //# Classes you should understand before using this one.
00697 //   <li> TableExprNode
00698 //   <li> TableExprNodeRep
00699 // </prerequisite>
00700 
00701 // <synopsis> 
00702 // This class represents a bitwise and  operation in a table select expression
00703 // tree. It is only possible for datatype Int.
00704 // </synopsis> 
00705 
00706 class TableExprNodeArrayBitAndInt : public TableExprNodeArray
00707 {
00708 public:
00709     TableExprNodeArrayBitAndInt (const TableExprNodeRep&);
00710     ~TableExprNodeArrayBitAndInt();
00711     Array<Int64> getArrayInt (const TableExprId& id);
00712 };
00713 
00714 
00715 // <summary>
00716 // Int Array bitwise or in table select expression tree
00717 // </summary>
00718 
00719 // <use visibility=local>
00720 
00721 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00722 // </reviewed>
00723 
00724 // <prerequisite>
00725 //# Classes you should understand before using this one.
00726 //   <li> TableExprNode
00727 //   <li> TableExprNodeRep
00728 // </prerequisite>
00729 
00730 // <synopsis> 
00731 // This class represents a bitwise or  operation in a table select expression
00732 // tree. It is only possible for datatype Int.
00733 // </synopsis> 
00734 
00735 class TableExprNodeArrayBitOrInt : public TableExprNodeArray
00736 {
00737 public:
00738     TableExprNodeArrayBitOrInt (const TableExprNodeRep&);
00739     ~TableExprNodeArrayBitOrInt();
00740     Array<Int64> getArrayInt (const TableExprId& id);
00741 };
00742 
00743 
00744 // <summary>
00745 // Int Array bitwise xor in table select expression tree
00746 // </summary>
00747 
00748 // <use visibility=local>
00749 
00750 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00751 // </reviewed>
00752 
00753 // <prerequisite>
00754 //# Classes you should understand before using this one.
00755 //   <li> TableExprNode
00756 //   <li> TableExprNodeRep
00757 // </prerequisite>
00758 
00759 // <synopsis> 
00760 // This class represents a bitwise xor  operation in a table select expression
00761 // tree. It is only possible for datatype Int.
00762 // </synopsis> 
00763 
00764 class TableExprNodeArrayBitXorInt : public TableExprNodeArray
00765 {
00766 public:
00767     TableExprNodeArrayBitXorInt (const TableExprNodeRep&);
00768     ~TableExprNodeArrayBitXorInt();
00769     Array<Int64> getArrayInt (const TableExprId& id);
00770 };
00771 
00772 
00773 
00774 // <summary>
00775 // Unary minus in table select expression tree
00776 // </summary>
00777 
00778 // <use visibility=local>
00779 
00780 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00781 // </reviewed>
00782 
00783 // <prerequisite>
00784 //# Classes you should understand before using this one.
00785 //   <li> TableExprNode
00786 // </prerequisite>
00787 
00788 // <synopsis> 
00789 // This class represents a unary minus in a table select expression tree.
00790 // This is defined for numeric data types only.
00791 // </synopsis> 
00792 
00793 class TableExprNodeArrayMIN : public TableExprNodeArray
00794 {
00795 public:
00796     TableExprNodeArrayMIN (const TableExprNodeRep&);
00797     ~TableExprNodeArrayMIN();
00798     Array<Int64>    getArrayInt      (const TableExprId& id);
00799     Array<Double>   getArrayDouble   (const TableExprId& id);
00800     Array<DComplex> getArrayDComplex (const TableExprId& id);
00801 };
00802 
00803 
00804 // <summary>
00805 // Bitwise negate in table select expression tree
00806 // </summary>
00807 
00808 // <use visibility=local>
00809 
00810 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
00811 // </reviewed>
00812 
00813 // <prerequisite>
00814 //# Classes you should understand before using this one.
00815 //   <li> TableExprNode
00816 // </prerequisite>
00817 
00818 // <synopsis> 
00819 // This class represents a bitwise negate in a table select expression tree.
00820 // This is defined for Int data types only.
00821 // </synopsis> 
00822 
00823 class TableExprNodeArrayBitNegate : public TableExprNodeArray
00824 {
00825 public:
00826     TableExprNodeArrayBitNegate (const TableExprNodeRep&);
00827     ~TableExprNodeArrayBitNegate();
00828     Array<Int64> getArrayInt (const TableExprId& id);
00829 };
00830 
00831 
00832 } //# NAMESPACE CASA - END
00833 
00834 #endif