|
@@ -22,7 +22,7 @@
|
|
|
#include "jlib.hpp"
|
|
|
#include "eclhelper.hpp"
|
|
|
#include "eclrtl_imp.hpp"
|
|
|
-#include "rtlfield_imp.hpp"
|
|
|
+#include "rtlfield.hpp"
|
|
|
#include "rtlds_imp.hpp"
|
|
|
#include "nbcd.hpp"
|
|
|
|
|
@@ -36,13 +36,13 @@ static const char * queryXPath(const RtlFieldInfo * field)
|
|
|
return xpath;
|
|
|
return sep+1;
|
|
|
}
|
|
|
- return str(field->name);
|
|
|
+ return field->name;
|
|
|
}
|
|
|
|
|
|
static const char * queryScalarXPath(const RtlFieldInfo * field)
|
|
|
{
|
|
|
if (field->type->hasNonScalarXpath())
|
|
|
- return str(field->name);
|
|
|
+ return field->name;
|
|
|
return queryXPath(field);
|
|
|
}
|
|
|
|
|
@@ -131,7 +131,7 @@ const RtlTypeInfo * RtlTypeInfoBase::queryChildType() const
|
|
|
|
|
|
size32_t RtlBoolTypeInfo::build(ARowBuilder &builder, size32_t offset, const RtlFieldInfo *field, IFieldSource &source) const
|
|
|
{
|
|
|
- builder.ensureCapacity(sizeof(bool)+offset, str(field->name));
|
|
|
+ builder.ensureCapacity(sizeof(bool)+offset, field->name);
|
|
|
bool val = source.getBooleanResult(field);
|
|
|
* (bool *) (builder.getSelf() + offset) = val;
|
|
|
offset += sizeof(bool);
|
|
@@ -161,7 +161,7 @@ double RtlRealTypeInfo::value(const byte * self) const
|
|
|
|
|
|
size32_t RtlRealTypeInfo::build(ARowBuilder &builder, size32_t offset, const RtlFieldInfo *field, IFieldSource &source) const
|
|
|
{
|
|
|
- builder.ensureCapacity(length+offset, str(field->name));
|
|
|
+ builder.ensureCapacity(length+offset, field->name);
|
|
|
double val = source.getRealResult(field);
|
|
|
byte *dest = builder.getSelf() + offset;
|
|
|
if (length == 4)
|
|
@@ -188,7 +188,7 @@ size32_t RtlRealTypeInfo::toXML(const byte * self, const byte * selfrow, const R
|
|
|
|
|
|
size32_t RtlIntTypeInfo::build(ARowBuilder &builder, size32_t offset, const RtlFieldInfo *field, IFieldSource &source) const
|
|
|
{
|
|
|
- builder.ensureCapacity(length+offset, str(field->name));
|
|
|
+ builder.ensureCapacity(length+offset, field->name);
|
|
|
__int64 val = isUnsigned() ? (__int64) source.getUnsignedResult(field) : source.getSignedResult(field);
|
|
|
rtlWriteInt(builder.getSelf() + offset, val, length);
|
|
|
offset += length;
|
|
@@ -217,7 +217,7 @@ size32_t RtlIntTypeInfo::toXML(const byte * self, const byte * selfrow, const Rt
|
|
|
|
|
|
size32_t RtlSwapIntTypeInfo::build(ARowBuilder &builder, size32_t offset, const RtlFieldInfo *field, IFieldSource &source) const
|
|
|
{
|
|
|
- builder.ensureCapacity(length+offset, str(field->name));
|
|
|
+ builder.ensureCapacity(length+offset, field->name);
|
|
|
__int64 val = isUnsigned() ? (__int64) source.getUnsignedResult(field) : source.getSignedResult(field);
|
|
|
// NOTE - we assume that the value returned from the source is NOT already a swapped int - source doesn;t know that we are going to store it swapped
|
|
|
rtlWriteSwapInt(builder.getSelf() + offset, val, length);
|
|
@@ -254,7 +254,7 @@ size32_t RtlPackedIntTypeInfo::build(ARowBuilder &builder, size32_t offset, cons
|
|
|
{
|
|
|
unsigned __int64 value = isUnsigned() ? (__int64) source.getUnsignedResult(field) : source.getSignedResult(field);
|
|
|
size32_t sizeInBytes = rtlGetPackedSize(&value);
|
|
|
- builder.ensureCapacity(sizeInBytes+offset, str(field->name));
|
|
|
+ builder.ensureCapacity(sizeInBytes+offset, field->name);
|
|
|
rtlSetPackedUnsigned(builder.getSelf() + offset, value);
|
|
|
offset += sizeInBytes;
|
|
|
return offset;
|
|
@@ -295,7 +295,7 @@ size32_t RtlStringTypeInfo::build(ARowBuilder &builder, size32_t offset, const R
|
|
|
source.getStringResult(field, size, value);
|
|
|
if (!isFixedSize())
|
|
|
{
|
|
|
- builder.ensureCapacity(offset+size+sizeof(size32_t), str(field->name));
|
|
|
+ builder.ensureCapacity(offset+size+sizeof(size32_t), field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlWriteInt4(dest, size);
|
|
|
// NOTE - it has been the subject of debate whether we should convert the incoming data to EBCDIC, or expect the IFieldSource to have already returned ebcdic
|
|
@@ -309,7 +309,7 @@ size32_t RtlStringTypeInfo::build(ARowBuilder &builder, size32_t offset, const R
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- builder.ensureCapacity(offset+length, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+length, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
if (isEbcdic())
|
|
|
rtlStrToEStr(length, (char *) dest, size, (char *) value);
|
|
@@ -399,7 +399,7 @@ size32_t RtlDataTypeInfo::build(ARowBuilder &builder, size32_t offset, const Rtl
|
|
|
source.getDataResult(field, size, value);
|
|
|
if (!isFixedSize())
|
|
|
{
|
|
|
- builder.ensureCapacity(offset+size+sizeof(size32_t), str(field->name));
|
|
|
+ builder.ensureCapacity(offset+size+sizeof(size32_t), field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlWriteInt4(dest, size);
|
|
|
memcpy(dest+sizeof(size32_t), value, size);
|
|
@@ -407,7 +407,7 @@ size32_t RtlDataTypeInfo::build(ARowBuilder &builder, size32_t offset, const Rtl
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- builder.ensureCapacity(offset+length, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+length, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlDataToData(length, dest, size, value);
|
|
|
offset += length;
|
|
@@ -475,7 +475,7 @@ size32_t RtlVarStringTypeInfo::build(ARowBuilder &builder, size32_t offset, cons
|
|
|
source.getStringResult(field, size, value);
|
|
|
if (!isFixedSize())
|
|
|
{
|
|
|
- builder.ensureCapacity(offset+size+1, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+size+1, field->name);
|
|
|
// See notes re EBCDIC conversion in RtlStringTypeInfo code
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
memcpy(dest, value, size);
|
|
@@ -484,7 +484,7 @@ size32_t RtlVarStringTypeInfo::build(ARowBuilder &builder, size32_t offset, cons
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- builder.ensureCapacity(offset+length, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+length, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlStrToVStr(length, dest, size, value);
|
|
|
offset += length;
|
|
@@ -556,7 +556,7 @@ size32_t RtlQStringTypeInfo::build(ARowBuilder &builder, size32_t offset, const
|
|
|
if (!isFixedSize())
|
|
|
{
|
|
|
size32_t sizeInBytes = rtlQStrSize(size) + sizeof(size32_t);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlWriteInt4(dest, size);
|
|
|
rtlStrToQStr(size, (char *) dest+sizeof(size32_t), size, value);
|
|
@@ -565,7 +565,7 @@ size32_t RtlQStringTypeInfo::build(ARowBuilder &builder, size32_t offset, const
|
|
|
else
|
|
|
{
|
|
|
size32_t sizeInBytes = rtlQStrSize(length);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlStrToQStr(length, (char *) dest, size, value);
|
|
|
offset += sizeInBytes;
|
|
@@ -635,7 +635,7 @@ size32_t RtlDecimalTypeInfo::build(ARowBuilder &builder, size32_t offset, const
|
|
|
Decimal value;
|
|
|
source.getDecimalResult(field, value);
|
|
|
size32_t sizeInBytes = calcSize();
|
|
|
- builder.ensureCapacity(sizeInBytes+offset, str(field->name));
|
|
|
+ builder.ensureCapacity(sizeInBytes+offset, field->name);
|
|
|
if (isUnsigned())
|
|
|
value.getUDecimal(sizeInBytes, getDecimalPrecision(), builder.getSelf()+offset);
|
|
|
else
|
|
@@ -712,7 +712,7 @@ size32_t RtlUnicodeTypeInfo::build(ARowBuilder &builder, size32_t offset, const
|
|
|
if (!isFixedSize())
|
|
|
{
|
|
|
size32_t sizeInBytes = sizeInChars * sizeof(UChar);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes+sizeof(size32_t), str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes+sizeof(size32_t), field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlWriteInt4(dest, sizeInChars); // NOTE - in chars!
|
|
|
memcpy(dest+sizeof(size32_t), value, sizeInBytes);
|
|
@@ -721,7 +721,7 @@ size32_t RtlUnicodeTypeInfo::build(ARowBuilder &builder, size32_t offset, const
|
|
|
else
|
|
|
{
|
|
|
size32_t sizeInBytes = length * sizeof(UChar);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlUnicodeToUnicode(length, (UChar *) dest, sizeInChars, value);
|
|
|
offset += sizeInBytes;
|
|
@@ -790,7 +790,7 @@ size32_t RtlVarUnicodeTypeInfo::build(ARowBuilder &builder, size32_t offset, con
|
|
|
if (!isFixedSize())
|
|
|
{
|
|
|
size32_t sizeInBytes = (sizeInChars+1) * sizeof(UChar);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
UChar *dest = (UChar *) builder.getSelf()+offset;
|
|
|
memcpy(dest, value, sizeInBytes - sizeof(UChar));
|
|
|
dest[sizeInChars] = 0;
|
|
@@ -799,7 +799,7 @@ size32_t RtlVarUnicodeTypeInfo::build(ARowBuilder &builder, size32_t offset, con
|
|
|
else
|
|
|
{
|
|
|
size32_t sizeInBytes = length * sizeof(UChar);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlUnicodeToVUnicode(length, (UChar *) dest, sizeInChars, value);
|
|
|
offset += sizeInBytes;
|
|
@@ -851,7 +851,7 @@ size32_t RtlUtf8TypeInfo::build(ARowBuilder &builder, size32_t offset, const Rtl
|
|
|
source.getUTF8Result(field, sizeInChars, value);
|
|
|
size32_t sizeInBytes = rtlUtf8Size(sizeInChars, value);
|
|
|
assertex(!isFixedSize());
|
|
|
- builder.ensureCapacity(offset+sizeInBytes+sizeof(size32_t), str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes+sizeof(size32_t), field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
rtlWriteInt4(dest, sizeInChars); // NOTE - in chars!
|
|
|
memcpy(dest+sizeof(size32_t), value, sizeInBytes);
|
|
@@ -995,7 +995,7 @@ size32_t RtlSetTypeInfo::build(ARowBuilder &builder, size32_t offset, const RtlF
|
|
|
bool isAll;
|
|
|
source.processBeginSet(field, isAll);
|
|
|
size32_t sizeInBytes = sizeof(bool) + sizeof(size32_t);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
byte *dest = builder.getSelf()+offset;
|
|
|
if (isAll)
|
|
|
{
|
|
@@ -1135,7 +1135,7 @@ size32_t RtlDatasetTypeInfo::build(ARowBuilder &builder, size32_t offset, const
|
|
|
{
|
|
|
// a 32-bit record count, and a pointer to an array of record pointers
|
|
|
size32_t sizeInBytes = sizeof(size32_t) + sizeof(void *);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
size32_t numRows = 0;
|
|
|
Owned<IEngineRowAllocator> childAllocator = builder.queryAllocator()->createChildRowAllocator(child);
|
|
|
byte **childRows = NULL;
|
|
@@ -1155,7 +1155,7 @@ size32_t RtlDatasetTypeInfo::build(ARowBuilder &builder, size32_t offset, const
|
|
|
{
|
|
|
// a 32-bit size, then rows inline
|
|
|
size32_t sizeInBytes = sizeof(size32_t);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
size32_t newOffset = offset + sizeInBytes;
|
|
|
RtlFieldStrInfo dummyField("<nested row>", NULL, child);
|
|
|
while (source.processNextRow(field))
|
|
@@ -1270,7 +1270,7 @@ size32_t RtlDictionaryTypeInfo::build(ARowBuilder &builder, size32_t offset, con
|
|
|
{
|
|
|
// a 32-bit record count, and a pointer to an hash table with record pointers
|
|
|
size32_t sizeInBytes = sizeof(size32_t) + sizeof(void *);
|
|
|
- builder.ensureCapacity(offset+sizeInBytes, str(field->name));
|
|
|
+ builder.ensureCapacity(offset+sizeInBytes, field->name);
|
|
|
Owned<IEngineRowAllocator> childAllocator = builder.queryAllocator()->createChildRowAllocator(child);
|
|
|
RtlLinkedDictionaryBuilder dictBuilder(childAllocator, hashInfo);
|
|
|
RtlFieldStrInfo dummyField("<nested row>", NULL, child);
|
|
@@ -1450,13 +1450,13 @@ size32_t RtlUnimplementedTypeInfo::toXML(const byte * self, const byte * selfrow
|
|
|
//-------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
RtlFieldStrInfo::RtlFieldStrInfo(const char * _name, const char * _xpath, const RtlTypeInfo * _type, const char *_initializer)
|
|
|
-: RtlFieldInfo(rtlCreateFieldNameAtom(_name), _xpath, _type, _initializer)
|
|
|
+: RtlFieldInfo(_name, _xpath, _type, _initializer)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
|
|
|
RtlFieldStrInfo::RtlFieldStrInfo(const char * _name, const char * _xpath, const RtlTypeInfo * _type)
|
|
|
-: RtlFieldInfo(rtlCreateFieldNameAtom(_name), _xpath, _type, NULL)
|
|
|
+: RtlFieldInfo(_name, _xpath, _type, NULL)
|
|
|
{
|
|
|
}
|
|
|
|