print-char-buffer1

nazarijtipusak080/buffer1/print-char-buffer1

Outputs the contents of the buffer to a string. (At the same time, bytes will be character addresses.)
print-char-buffer1
@/print-char-buffer1
Outputs the contents of the buffer to a string. (At the same time, bytes will be character addresses.)
buffer1@/buffer1
lennumber
triggerpulse
print-char-buffer1
buffer1
len
trigger
str
done
ERR
ERRpulse
donepulse
strstring
To use the node in your project you should have the nazarijtipusak080/buffer1 library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.

C++ implementation

struct State {
  // не використовується
};
 char* buff;
 CStringView view;

{{ GENERATED_CODE }}

 

void evaluate(Context ctx) {
  if (!isInputDirty<input_trigger>(ctx)) return;

  // Отримуємо об'єкт буфера
  auto _object = getValue<input_buffer1>(ctx); // буфер
  uint16_t len = static_cast<uint16_t>(getValue<input_len>(ctx));

  // Перевірка, чи існує буфер і чи є правильна довжина
  if (!_object->buffer || len > _object->len) {
    emitValue<output_ERR>(ctx, 1);  // видаємо помилку
    return;
  }

  // Створюємо список символів
  buff = new char[len+1];
  view = CStringView(buff);


  // Заповнюємо список символами з буфера
  for (uint16_t i = 0; i < len; i++) {
    buff[i] =reinterpret_cast <uint8_t *> ( _object->buffer )[ i ];  // копіюємо байти з буфера
  }
    buff[len]='\0';

  // Виводимо результат як список символів
  emitValue<output_str>(ctx, XString(&view));
  emitValue<output_done>(ctx, 1);  // видаємо завершення
   
}