blob: a99792e25a75d739787bc7b7b5134272404d8f1a [file] [log] [blame]
#ifndef __GEMFIRE_STRUCTSETIMPL_H__
#define __GEMFIRE_STRUCTSETIMPL_H__
/*=========================================================================
* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* more patents listed at http://www.pivotal.io/patents.
*========================================================================
*/
#include "../gfcpp_globals.hpp"
#include "../gf_types.hpp"
#include "../StructSet.hpp"
#include "../Struct.hpp"
#include "../CacheableBuiltins.hpp"
#include "../SelectResultsIterator.hpp"
#include <string>
#include <map>
/**
* @file
*/
namespace gemfire
{
class CPPCACHE_EXPORT StructSetImpl : public StructSet
{
public:
StructSetImpl(const CacheableVectorPtr& values,
const std::vector<CacheableStringPtr>& fieldNames);
bool isModifiable() const;
int32_t size() const;
const SerializablePtr operator [] (int32_t index) const;
int32_t getFieldIndex(const char * fieldname);
const char * getFieldName(int32_t index);
SelectResultsIterator getIterator();
/** Get an iterator pointing to the start of vector. */
virtual SelectResults::Iterator begin( ) const;
/** Get an iterator pointing to the end of vector. */
virtual SelectResults::Iterator end( ) const;
virtual ~StructSetImpl();
private:
CacheableVectorPtr m_structVector;
std::map<std::string, int32_t> m_fieldNameIndexMap;
int32_t m_nextIndex;
};
} //namespace gemfire
#endif //ifndef __GEMFIRE_STRUCTSETIMPL_H__