20#ifndef GEODE_PDXINSTANCE_H_
21#define GEODE_PDXINSTANCE_H_
24#include "PdxFieldTypes.hpp"
25#include "PdxSerializable.hpp"
30class WritablePdxInstance;
32class CacheableObjectArray;
76 virtual
bool hasField(const std::
string& fieldname) = 0;
90 virtual std::shared_ptr<
Cacheable> getCacheableField(
91 const std::
string& fieldname) const = 0;
101 virtual
bool getBooleanField(const std::
string& fieldname) const = 0;
111 virtual int8_t getByteField(const std::
string& fieldname) const = 0;
121 virtual int16_t getShortField(const std::
string& fieldname) const = 0;
129 virtual int32_t getIntField(const std::
string& fieldname) const = 0;
139 virtual int64_t getLongField(const std::
string& fieldname) const = 0;
149 virtual
float getFloatField(const std::
string& fieldname) const = 0;
159 virtual
double getDoubleField(const std::
string& fieldname) const = 0;
168 virtual
char16_t getCharField(const std::
string& fieldName) const = 0;
179 virtual std::
string getStringField(const std::
string& fieldname) const = 0;
189 virtual std::vector<
bool> getBooleanArrayField(
190 const std::
string& fieldname) const = 0;
200 virtual std::vector<int8_t> getByteArrayField(
201 const std::
string& fieldname) const = 0;
211 virtual std::vector<int16_t> getShortArrayField(
212 const std::
string& fieldname) const = 0;
222 virtual std::vector<int32_t> getIntArrayField(
223 const std::
string& fieldname) const = 0;
233 virtual std::vector<int64_t> getLongArrayField(
234 const std::
string& fieldname) const = 0;
244 virtual std::vector<
float> getFloatArrayField(
245 const std::
string& fieldname) const = 0;
255 virtual std::vector<
double> getDoubleArrayField(
256 const std::
string& fieldname) const = 0;
267 virtual std::vector<
char16_t> getCharArrayField(
268 const std::
string& fieldName) const = 0;
278 virtual std::vector<std::
string> getStringArrayField(
279 const std::
string& fieldname) const = 0;
292 const std::
string& fieldname) const = 0;
306 virtual
void getField(const std::
string& fieldName, int8_t*** value,
307 int32_t& arrayLength,
308 int32_t*& elementLength) const = 0;
324 const std::
string& fieldname) const = 0;
337 virtual
bool isIdentityField(const std::
string& fieldname) = 0;
366 virtual int32_t hashcode() const override = 0;
379 virtual std::
string toString() const override = 0;
429 virtual
size_t objectSize() const override = 0;
443 virtual
void toData(
PdxWriter& output) const override = 0;
458 virtual const std::
string& getClassName() const override = 0;
468 virtual PdxFieldTypes getFieldType(const std::
string& fieldname) const = 0;
Contains generic template definitions for Cacheable types and instantiations for built-in types.
internal::CacheableArrayPrimitive< std::shared_ptr< CacheableString >, internal::DSCode::CacheableStringArray > CacheableStringArray
An immutable wrapper for array of strings that can serve as a distributable object for caching.
Implement a date object based on epoch of January 1, 1970 00:00:00 GMT that can serve as a distributa...
Definition CacheableDate.hpp:45
Represents a cacheable key.
Definition CacheableKey.hpp:40
Implements an immutable Vector of Cacheable objects that can serve as a distributable object for cach...
Definition CacheableObjectArray.hpp:49
PdxInstance provides run time access to the fields of a PDX without deserializing the PDX.
Definition PdxInstance.hpp:51
~PdxInstance() noexcept override=default
destructor
A PdxReader will be passed to PdxSerializable.fromData or during deserialization of a PDX.
Definition PdxReader.hpp:58
An interface for objects whose contents can be serialized as PDX types.
Definition PdxSerializable.hpp:41
A PdxWriter will be passed to PdxSerializable.toData when it is serializing the domain class.
Definition PdxWriter.hpp:41
This base class is the superclass of all user objects in the cache that can be serialized.
Definition Serializable.hpp:53
WritablePdxInstance is a PdxInstance that also supports field modification using the setField method.
Definition WritablePdxInstance.hpp:40