/* SPDX-License-Identifier: GPL-2.0 */
/*
 * C++ stream style string builder used in KUnit for building messages.
 *
 * Copyright (C) 2019, Google LLC.
 * Author: Brendan Higgins <brendanhiggins@google.com>
 */

#ifndef _KUNIT_STRING_STREAM_H
#define _KUNIT_STRING_STREAM_H

#include <linux/types.h>
#include <linux/spinlock.h>
#include <linux/kref.h>
#include <stdarg.h>

struct string_stream_fragment {
	struct list_head node;
	char *fragment;
};

struct string_stream {
	size_t length;
	struct list_head fragments;
	/* length and fragments are protected by this lock */
	spinlock_t lock;
};

struct kunit;

struct string_stream *alloc_string_stream(struct kunit *test);

void string_stream_get(struct string_stream *stream);

int string_stream_put(struct string_stream *stream);

int string_stream_add(struct string_stream *stream, const char *fmt, ...);

int string_stream_vadd(struct string_stream *stream,
		       const char *fmt,
		       va_list args);

char *string_stream_get_string(struct string_stream *stream);

void string_stream_clear(struct string_stream *stream);

bool string_stream_is_empty(struct string_stream *stream);

#endif /* _KUNIT_STRING_STREAM_H */
