64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
/* -*- c++ -*- */
|
|
/*
|
|
* Copyright 2005 Free Software Foundation, Inc.
|
|
*
|
|
* This file is part of GNU Radio
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
#include <gnuradio/message.h>
|
|
#include <cassert>
|
|
#include <cstring>
|
|
|
|
namespace gr {
|
|
namespace op25 {
|
|
|
|
static long s_ncurrently_allocated = 0;
|
|
|
|
message::sptr message::make(long type, double arg1, double arg2, size_t length)
|
|
{
|
|
return message::sptr(new message(type, arg1, arg2, length));
|
|
}
|
|
|
|
message::sptr
|
|
message::make_from_string(const std::string s, long type, double arg1, double arg2)
|
|
{
|
|
message::sptr m = message::make(type, arg1, arg2, s.size());
|
|
memcpy(m->msg(), s.data(), s.size());
|
|
return m;
|
|
}
|
|
|
|
message::message(long type, double arg1, double arg2, size_t length)
|
|
: d_type(type), d_arg1(arg1), d_arg2(arg2), d_buf(length)
|
|
{
|
|
if (length == 0)
|
|
d_msg_start = d_msg_end = nullptr;
|
|
else {
|
|
d_msg_start = d_buf.data();
|
|
d_msg_end = d_msg_start + length;
|
|
}
|
|
s_ncurrently_allocated++;
|
|
}
|
|
|
|
message::~message()
|
|
{
|
|
assert(d_next == 0);
|
|
s_ncurrently_allocated--;
|
|
}
|
|
|
|
std::string message::to_string() const
|
|
{
|
|
return std::string((char*)d_msg_start, length());
|
|
}
|
|
|
|
long message_ncurrently_allocated() { return s_ncurrently_allocated; }
|
|
|
|
} /* namespace op25 */
|
|
} /* namespace gr */
|