diff options
author | maximius <none@none> | 2009-10-17 15:51:44 -0700 |
---|---|---|
committer | maximius <none@none> | 2009-10-17 15:51:44 -0700 |
commit | e585187b248f48b3c6e9247b49fa07c6565d65e5 (patch) | |
tree | 637c5b7ddacf41040bef4ea4f75a97da64c6a9bc /src/shared/Database/QueryResult.h | |
parent | 26b5e033ffde3d161382fc9addbfa99738379641 (diff) |
*Backed out changeset 3be01fb200a5
--HG--
branch : trunk
Diffstat (limited to 'src/shared/Database/QueryResult.h')
-rw-r--r-- | src/shared/Database/QueryResult.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/shared/Database/QueryResult.h b/src/shared/Database/QueryResult.h index 9d5bb57e4e9..f9f1a009833 100644 --- a/src/shared/Database/QueryResult.h +++ b/src/shared/Database/QueryResult.h @@ -17,39 +17,52 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #if !defined(QUERYRESULT_H) #define QUERYRESULT_H + class TRINITY_DLL_SPEC QueryResult { public: QueryResult(uint64 rowCount, uint32 fieldCount) : mFieldCount(fieldCount), mRowCount(rowCount) {} + virtual ~QueryResult() {} + virtual bool NextRow() = 0; + Field *Fetch() const { return mCurrentRow; } + const Field & operator [] (int index) const { return mCurrentRow[index]; } + uint32 GetFieldCount() const { return mFieldCount; } uint64 GetRowCount() const { return mRowCount; } + protected: Field *mCurrentRow; uint32 mFieldCount; uint64 mRowCount; }; + typedef std::vector<std::string> QueryFieldNames; + class MANGOS_DLL_SPEC QueryNamedResult { public: explicit QueryNamedResult(QueryResult* query, QueryFieldNames const& names) : mQuery(query), mFieldNames(names) {} ~QueryNamedResult() { delete mQuery; } + // compatible interface with QueryResult bool NextRow() { return mQuery->NextRow(); } Field *Fetch() const { return mQuery->Fetch(); } uint32 GetFieldCount() const { return mQuery->GetFieldCount(); } uint64 GetRowCount() const { return mQuery->GetRowCount(); } Field const& operator[] (int index) const { return (*mQuery)[index]; } + // named access Field const& operator[] (const std::string &name) const { return mQuery->Fetch()[GetField_idx(name)]; } QueryFieldNames const& GetFieldNames() const { return mFieldNames; } + uint32 GetField_idx(const std::string &name) const { for(size_t idx = 0; idx < mFieldNames.size(); ++idx) @@ -60,9 +73,11 @@ class MANGOS_DLL_SPEC QueryNamedResult ASSERT(false && "unknown field name"); return uint32(-1); } + protected: QueryResult *mQuery; QueryFieldNames mFieldNames; }; + #endif |