DataType ParserTemplateBase::toDataPrefix(const ParserChar* prefixedBuffer, const ParserChar* prefixedBufferEnd, const ParserChar** buffer, const ParserChar* bufferEnd, bool& failed) { const ParserChar* prefixBufferPos = prefixedBuffer; const ParserChar* prefixBufferStartPos = 0; while ( prefixBufferPos != prefixedBufferEnd ) { if (!Utils::isWhiteSpace(*prefixBufferPos ) && !prefixBufferStartPos) prefixBufferStartPos = prefixBufferPos; ++prefixBufferPos; } //if prefixedBuffer contains only white spaces, we can ignore it. if ( !prefixBufferStartPos ) return toData(buffer, bufferEnd, failed); //find first whitespace in buffer const ParserChar* bufferPos = *buffer; while ( !Utils::isWhiteSpace(*bufferPos) ) ++bufferPos; size_t prefixBufferSize = prefixBufferPos - prefixBufferStartPos; size_t bufferSize = bufferPos - *buffer; size_t newBufferSize = prefixBufferSize + bufferSize; ParserChar* newBuffer = (ParserChar*)mStackMemoryManager.newObject((newBufferSize + 1)*sizeof(ParserChar)); memcpy(newBuffer, prefixBufferStartPos, prefixBufferSize*sizeof(ParserChar)); memcpy(newBuffer + prefixBufferSize, *buffer, bufferSize*sizeof(ParserChar)); newBuffer[newBufferSize] = ' '; ParserChar* newBufferPostParse = newBuffer; DataType value = toData( (const ParserChar**)&newBufferPostParse, newBuffer + newBufferSize + 1, failed); *buffer += (newBufferPostParse - newBuffer - prefixBufferSize); mStackMemoryManager.deleteObject(); return value; }
long ValueType<T>::copy(byte* buf, ByteOrder byteOrder) const { long offset = 0; typename ValueList::const_iterator end = value_.end(); for (typename ValueList::const_iterator i = value_.begin(); i != end; ++i) { offset += toData(buf + offset, *i, byteOrder); } return offset; }
USER_OBJECT_ RS_GGOBI(createDisplay)(USER_OBJECT_ stype, USER_OBJECT_ svars, USER_OBJECT_ datasetId, USER_OBJECT_ useWindow) { GGobiData *d; ggobid *gg; displayd *display = NULL; GType type; GGobiExtendedDisplayClass *klass; gboolean use_window = asCLogical(useWindow); d = toData(datasetId); g_return_val_if_fail(GGOBI_IS_DATA(d), NULL_USER_OBJECT); gg = d->gg; type = g_type_from_name(asCString(stype)); klass = GGOBI_EXTENDED_DISPLAY_CLASS(g_type_class_peek(type)); if(!klass) { PROBLEM "Unrecognized display type" ERROR; } if(klass->createWithVars && GET_LENGTH(svars)) { gint nvars, *vars, i; nvars = GET_LENGTH(svars); vars = g_malloc(sizeof(gint)*nvars); for(i = 0; i < nvars; i++) vars[i] = INTEGER_DATA(svars)[i]; display = klass->createWithVars(use_window, false, nvars, vars, d, gg); } else if(klass->create) display = klass->create(use_window, false, NULL, d, gg); if(!display) { PROBLEM "Couldn't create the display" ERROR; } display_add(display, gg); gdk_flush(); return(RS_displayInstance(display)); }
ITopicImpl::ITopicImpl(const std::string &instanceName, spi::ClientContext *context) : proxy::ProxyImpl("hz:impl:topicService", instanceName, context) { partitionId = getPartitionId(toData(instanceName)); }