calloc method

Implementation

Pointer<SdlMessageBoxData> calloc() {
  final pointer = ffi.calloc<SdlMessageBoxData>();
  pointer.ref.flags = flags;
  pointer.ref.window = window;
  if (title.isNotEmpty) {
    pointer.ref.title = title.toNativeUtf8();
  }
  if (message.isNotEmpty) {
    pointer.ref.message = message.toNativeUtf8();
  }
  if (buttons.isNotEmpty) {
    final buttonsPointer = ffi.calloc<SdlMessageBoxButtonData>(
      buttons.length,
    );
    for (var i = 0; i < buttons.length; i++) {
      final buttonPointer = buttonsPointer + i;
      buttonPointer.ref.flags = buttons[i].flags;
      buttonPointer.ref.buttonId = buttons[i].buttonId;
      if (buttons[i].text.isNotEmpty) {
        buttonPointer.ref.text = buttons[i].text.toNativeUtf8();
      }
    }
    pointer.ref.buttons = buttonsPointer;
    pointer.ref.numbuttons = buttons.length;
  }
  if (colorScheme != null) {
    pointer.ref.colorScheme = colorScheme!.calloc();
  }
  return pointer;
}