<?xml version="1.0"?>
<!--
###################################################
## Tag Object: creates a tag
###################################################
 -->
<block>
  <name>Tag Object</name>
  <key>variable_tag_object</key>
  <import>import pmt</import>
  <var_make>self.$(id) = $(id) = gr.tag_utils.python_to_tag(($offset, $key, $value, $src))</var_make>
  <make></make>
  <callback>self.set_$(id)(gr.tag_utils.python_to_tag(($offset, $key, $value, $src)))</callback>
  <param>
    <name>Offset</name>
    <key>offset</key>
    <value>0</value>
    <type>int</type>
  </param>
  <param>
    <name>Key</name>
    <key>key</key>
    <value>pmt.intern("key")</value>
    <type>raw</type>
  </param>
  <param>
    <name>Value</name>
    <key>value</key>
    <value>pmt.intern("value")</value>
    <type>raw</type>
  </param>
  <param>
    <name>Source ID</name>
    <key>src</key>
    <value>pmt.intern("src")</value>
    <type>raw</type>
  </param>
  <doc>
    This block creates a tag object. While tags are based on an
    absolute offset, this is based on a relative offset that must be
    appropriately translated by the block using it. For example, this
    is used by the vector_source blocks, which will treat a 0 offset
    in the tag as the first item in the stream when the vector starts
    or repeats.

    The tag objects are created using the python_to_tag Python
    function to make it easy to generate a tag_t in Python. The call
    looks like:

        gr.tag_utils.python_to_tag(($offset, $key, $value, $src))
  </doc>
</block>
