GNU Radio 2.x: gr_message.h Source File

Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

# gr_message.h

Go to the documentation of this file.

    00001 /* -*- c++ -*- */
    00002 /*
    00003  * Copyright 2005 Free Software Foundation, Inc.
    00004  *
    00005  * This file is part of GNU Radio
    00006  *
    00007  * GNU Radio is free software; you can redistribute it and/or modify
    00008  * it under the terms of the GNU General Public License as published by
    00009  * the Free Software Foundation; either version 2, or (at your option)
    00010  * any later version.
    00011  *
    00012  * GNU Radio is distributed in the hope that it will be useful,
    00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00015  * GNU General Public License for more details.
    00016  *
    00017  * You should have received a copy of the GNU General Public License
    00018  * along with GNU Radio; see the file COPYING.  If not, write to
    00019  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    00020  * Boston, MA 02111-1307, USA.
    00021  */
    00022 #ifndef INCLUDED_GR_MESSAGE_H
    00023 #define INCLUDED_GR_MESSAGE_H
    00024
    00025 #include <gr_types.h>
    00026 #include <string>
    00027
    00028 class gr_message;
    00029 typedef boost::shared_ptr<gr_message> gr_message_sptr;
    00030
    00034 gr_message_sptr
    00035 gr_make_message(long type = 0, double arg1 = 0, double arg2 = 0, size_t length = 0);
    00036
    00037 gr_message_sptr
    00038 gr_make_message_from_string(const std::string s, long type = 0, double arg1 = 0, double arg2 = 0);
    00039
    00046 class gr_message {
    00047   gr_message_sptr d_next;       // link field for msg queue
    00048   long            d_type;       // type of the message
    00049   double          d_arg1;       // optional arg1
    00050   double          d_arg2;       // optional arg2
    00051
    00052   unsigned char  *d_buf_start;  // start of allocated buffer
    00053   unsigned char  *d_msg_start;  // where the msg starts
    00054   unsigned char  *d_msg_end;    // one beyond end of msg
    00055   unsigned char  *d_buf_end;    // one beyond end of allocated buffer
    00056
    00057   gr_message (long type, double arg1, double arg2, size_t length);
    00058
    00059   friend gr_message_sptr
    00060     gr_make_message (long type, double arg1, double arg2, size_t length);
    00061
    00062   friend gr_message_sptr
    00063     gr_make_message_from_string (const std::string s, long type, double arg1, double arg2);
    00064
    00065   friend class gr_msg_queue;
    00066
    00067   unsigned char *buf_data() const  { return d_buf_start; }
    00068   size_t buf_len() const           { return d_buf_end - d_buf_start; }
    00069
    00070 public:
    00071   ~gr_message ();
    00072
    00073   long type() const   { return d_type; }
    00074   double arg1() const { return d_arg1; }
    00075   double arg2() const { return d_arg2; }
    00076
    00077   void set_type(long type)   { d_type = type; }
    00078   void set_arg1(double arg1) { d_arg1 = arg1; }
    00079   void set_arg2(double arg2) { d_arg2 = arg2; }
    00080
    00081   unsigned char *msg() const { return d_msg_start; }
    00082   size_t length() const      { return d_msg_end - d_msg_start; }
    00083   std::string to_string() const;
    00084
    00085 };
    00086
    00087 long gr_message_ncurrently_allocated ();
    00088
    00089 #endif /* INCLUDED_GR_MESSAGE_H */