//
//  gensio - A library for abstracting stream I/O
//  Copyright (C) 2022  Corey Minyard <minyard@acm.org>
//
//  SPDX-License-Identifier: LGPL-2.1-only

// This is a C++ wrapper for the gensio library.

#ifndef GENSIOGLIB_CPP_INCLUDE
#define GENSIOGLIB_CPP_INCLUDE

#include <gensio/gensio>

namespace gensios {
#include <gensio/gensio_glib.h>

    class Glib_Os_Funcs: public Os_Funcs {
    public:
	Glib_Os_Funcs(Os_Funcs_Log_Handler *logger = NULL) : Os_Funcs(false)
	{
	    struct gensio_os_funcs *o;

	    int err = gensio_glib_funcs_alloc(&o);
	    if (err)
		throw gensio_error(err);
	    init(o, logger);
	}
    };
}

#endif /* GENSIOGLIB_CPP_INCLUDE */
