jrange.h
Go to the documentation of this file.
00001 // File: $Id$
00002 // Author: John Wu <John.Wu at ACM.org>
00003 // Copyright 2010-2011 the Regents of the University of California
00004 #ifndef IBIS_JRANGE_H
00005 #define IBIS_JRANGE_H
00006 
00013 #include "quaere.h"     // ibis::quaere
00014 
00015 namespace ibis {
00016     class jRange; // forward definition
00017 } // namespace ibis
00018 
00037 class ibis::jRange : public ibis::quaere {
00038 public:
00039     jRange(const ibis::part& partr, const ibis::part& parts,
00040            const ibis::column& colr, const ibis::column& cols,
00041            double delta1, double delta2,
00042            const ibis::qExpr* condr, const ibis::qExpr* conds,
00043            const ibis::selectClause* sel, const ibis::fromClause* frm,
00044            const char* desc);
00045     virtual ~jRange();
00046 
00047     virtual void roughCount(uint64_t& nmin, uint64_t& nmax) const;
00048     virtual int64_t count() const;
00049 
00050     virtual ibis::table* select() const;
00051     virtual ibis::table* select(const ibis::table::stringList& colnames) const;
00052 
00053 protected:
00054     std::string desc_;
00055     const ibis::selectClause *sel_;
00056     const ibis::fromClause *frm_;
00057     const ibis::part& partr_;
00058     const ibis::part& parts_;
00059     const ibis::column& colr_;
00060     const ibis::column& cols_;
00061     ibis::bitvector maskr_;
00062     ibis::bitvector masks_;
00063     const double delta1_;
00064     const double delta2_;
00065 
00066     mutable array_t<uint32_t> *orderr_;
00067     mutable array_t<uint32_t> *orders_;
00068     mutable void *valr_;
00069     mutable void *vals_;
00070     mutable int64_t nrows;
00071 
00072     template <typename T>
00073     static table*
00074     fillResult(size_t nrows, double delta1, double delta2,
00075                const std::string &desc,
00076                const ibis::array_t<T>& rjcol,
00077                const ibis::table::typeList& rtypes,
00078                const ibis::table::bufferList& rbuff,
00079                const ibis::array_t<T>& sjcol,
00080                const ibis::table::typeList& stypes,
00081                const ibis::table::bufferList& sbuff,
00082                const ibis::table::stringList& cnamet,
00083                const std::vector<uint32_t>& cnpos);
00084 
00085 private:
00086     jRange(const jRange&); // no copying
00087     jRange& operator=(const jRange&); // no assignment
00088 }; // class ibis::jRange
00089 #endif

Make It A Bit Faster
Contact us
Disclaimers
FastBit source code
FastBit mailing list archive