<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.1.1">
  <compounddef id="cds__atts_8c" kind="file">
    <compoundname>cds_atts.c</compoundname>
    <includes refid="cds3_8h" local="yes">cds3.h</includes>
    <includes refid="cds__private_8h" local="yes">cds_private.h</includes>
    <incdepgraph>
      <node id="33">
        <label>stdarg.h</label>
      </node>
      <node id="37">
        <label>cds_private.h</label>
        <link refid="cds__private_8h"/>
        <childnode refid="28" relation="include">
        </childnode>
      </node>
      <node id="29">
        <label>stdlib.h</label>
      </node>
      <node id="32">
        <label>limits.h</label>
      </node>
      <node id="35">
        <label>sys/types.h</label>
      </node>
      <node id="30">
        <label>string.h</label>
      </node>
      <node id="28">
        <label>cds3.h</label>
        <link refid="cds3_8h"/>
        <childnode refid="29" relation="include">
        </childnode>
        <childnode refid="30" relation="include">
        </childnode>
        <childnode refid="31" relation="include">
        </childnode>
        <childnode refid="32" relation="include">
        </childnode>
        <childnode refid="33" relation="include">
        </childnode>
        <childnode refid="34" relation="include">
        </childnode>
        <childnode refid="35" relation="include">
        </childnode>
        <childnode refid="36" relation="include">
        </childnode>
      </node>
      <node id="36">
        <label>time.h</label>
      </node>
      <node id="27">
        <label>cds_atts.c</label>
        <link refid="cds_atts.c"/>
        <childnode refid="28" relation="include">
        </childnode>
        <childnode refid="37" relation="include">
        </childnode>
      </node>
      <node id="31">
        <label>messenger.h</label>
      </node>
      <node id="34">
        <label>stdio.h</label>
      </node>
    </incdepgraph>
      <sectiondef kind="func">
      <memberdef kind="function" id="cds__atts_8c_1a3cdda7db44c754d3ccc7ca5b7289d8b2" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int _cds_change_att_value</definition>
        <argsstring>(CDSAtt *att, CDSDataType type, size_t length, void *value)</argsstring>
        <name>_cds_change_att_value</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>PRIVATE: Change the type and value of a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute data type </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute length </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if successful</para></listitem><listitem><para>0 if a memory allocation error occurred </para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="54" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="49" bodyend="89"/>
      </memberdef>
      <memberdef kind="function" id="cds__atts_8c_1a2ae7709824f1492dcab5db8592dc33f4" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* _cds_create_att</definition>
        <argsstring>(void *parent, const char *name, CDSDataType type, size_t length, void *value)</argsstring>
        <name>_cds_create_att</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>PRIVATE: Create a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>Private function used to create an attribute.</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent <ref refid="structCDSGroup" kindref="compound">CDSGroup</ref> or <ref refid="structCDSVar" kindref="compound">CDSVar</ref> </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute name </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute data type </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute length </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the new attribute</para></listitem><listitem><para>NULL if a memory allocation error occurred </para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="112" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="106" bodyend="132"/>
      </memberdef>
      <memberdef kind="function" id="cds__atts_8c_1a29acc168d413fd438032ed9d6799c21b" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* _cds_define_att</definition>
        <argsstring>(void *parent, const char *name, CDSDataType type, size_t length, void *value)</argsstring>
        <name>_cds_define_att</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Private: Define a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent <ref refid="structCDSGroup" kindref="compound">CDSGroup</ref> or <ref refid="structCDSVar" kindref="compound">CDSVar</ref> </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute name </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute data type </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute length </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the attribute</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the parent object is not a group or variable</para></listitem><listitem><para>the parent group or variable is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="159" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="153" bodyend="251"/>
      </memberdef>
      <memberdef kind="function" id="cds__atts_8c_1ada38bf9792c32c54432b2e2e6242e13e" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void _cds_destroy_att</definition>
        <argsstring>(CDSAtt *att)</argsstring>
        <name>_cds_destroy_att</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <briefdescription>
<para>PRIVATE: Destroy a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>Private function used to destroy an attribute.</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="261" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="260" bodyend="270"/>
      </memberdef>
      <memberdef kind="function" id="cds__atts_8c_1a48dce0ad6157129f4e3b40ba4f065dd1" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int _cds_set_att_value</definition>
        <argsstring>(CDSAtt *att, CDSDataType type, size_t length, void *value)</argsstring>
        <name>_cds_set_att_value</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>PRIVATE: Set the value of a CDS attribute. </para>        </briefdescription>
        <detaileddescription>
<para>This function will set the value of an attribute by casting the specified value into the data type of the attribute. The functions <ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member">cds_string_to_array()</ref> and <ref refid="group__CDS__CORE__UTILITIES_1gaece5f6c14e872595100deb6b89af718a" kindref="member">cds_array_to_string()</ref> are used to convert between text (CDS_CHAR) and numeric data types.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- data type of the specified value </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- length of the specified value </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if successful</para></listitem><listitem><para>0 if a memory allocation error occurred </para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="297" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="292" bodyend="371"/>
      </memberdef>
      <memberdef kind="function" id="cds__atts_8c_1ad1ebb0e77a890f1774063cb7b211e28e" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int _cds_set_att_va_list</definition>
        <argsstring>(CDSAtt *att, const char *format, va_list args)</argsstring>
        <name>_cds_set_att_va_list</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>format</declname>
        </param>
        <param>
          <type>va_list</type>
          <declname>args</declname>
        </param>
        <briefdescription>
<para>Set the value of a CDS attribute. </para>        </briefdescription>
        <detaileddescription>
<para>The <ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member">cds_string_to_array()</ref> function will be used to set the attribute value if the data type of the attribute is not CDS_CHAR.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>format</parametername>
</parameternamelist>
<parameterdescription>
<para>- format string (see printf) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>args</parametername>
</parameternamelist>
<parameterdescription>
<para>- arguments for the format string</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if successful</para></listitem><listitem><para>0 if a memory allocation error occurred </para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="394" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="390" bodyend="416"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1gaa0a35d6df39ef86862734f2426c2817f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* cds_change_att</definition>
        <argsstring>(void *parent, int overwrite, const char *name, CDSDataType type, size_t length, void *value)</argsstring>
        <name>cds_change_att</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>int</type>
          <declname>overwrite</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Change an attribute of a CDS group or variable. </para>        </briefdescription>
        <detaileddescription>
<para>This function will define the specified attribute if it does not exist. If the attribute does exist and the overwrite flag is set, the data type and value will be changed.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent <ref refid="structCDSGroup" kindref="compound">CDSGroup</ref> or <ref refid="structCDSVar" kindref="compound">CDSVar</ref> </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>overwrite</parametername>
</parameternamelist>
<parameterdescription>
<para>- overwrite flag (1 = TRUE, 0 = FALSE) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute name </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute data type </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute length </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the attribute</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the parent object is not a group or variable</para></listitem><listitem><para>the parent group or variable is locked, or the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="454" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="447" bodyend="471"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1gabaaa10deca000a04c4bed64fda8d4311" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_change_att_value</definition>
        <argsstring>(CDSAtt *att, CDSDataType type, size_t length, void *value)</argsstring>
        <name>cds_change_att_value</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Change the type and value of a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- new attribute data type </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- new attribute length </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the new attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if successful</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="495" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="490" bodyend="520"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1gacd5e31e16c04ee637d963a4a21f570a7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_change_att_text</definition>
        <argsstring>(CDSAtt *att, const char *format,...)</argsstring>
        <name>cds_change_att_text</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>format</declname>
        </param>
        <param>
          <type>...</type>
        </param>
        <briefdescription>
<para>Change the type and value of a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>This function will change the data type of an attribute to CDS_CHAR and set the new value.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>format</parametername>
</parameternamelist>
<parameterdescription>
<para>- format string (see printf) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>...</parametername>
</parameternamelist>
<parameterdescription>
<para>- arguments for the format string</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if the attribute value was changed</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="544" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="541" bodyend="568"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga6bcafa9cb618daa0182692d4f105fcf1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_change_att_va_list</definition>
        <argsstring>(CDSAtt *att, const char *format, va_list args)</argsstring>
        <name>cds_change_att_va_list</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>format</declname>
        </param>
        <param>
          <type>va_list</type>
          <declname>args</declname>
        </param>
        <briefdescription>
<para>Change the type and value of a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>This function will change the data type of an attribute to CDS_CHAR and set the new value.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>format</parametername>
</parameternamelist>
<parameterdescription>
<para>- format string (see printf) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>args</parametername>
</parameternamelist>
<parameterdescription>
<para>- arguments for the format string</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if the attribute value was changed</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="593" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="589" bodyend="643"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga744947ce3723616196c44a60e4b75f57" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_create_missing_value_att</definition>
        <argsstring>(CDSVar *var, int flags)</argsstring>
        <name>cds_create_missing_value_att</name>
        <param>
          <type><ref refid="structCDSVar" kindref="compound">CDSVar</ref> *</type>
          <declname>var</declname>
        </param>
        <param>
          <type>int</type>
          <declname>flags</declname>
        </param>
        <briefdescription>
<para>Create a missing value attribute if it does not already exist. </para>        </briefdescription>
        <detaileddescription>
<para>This function will check if the variable already has either a missing_value or _FillValue attibute defined. If it does not one will be created.</para><para>The missing value used will be determined by first checking for non-standard missing value attributes defined at either the field or global level (see <ref refid="group__CDS__ATTS_1gae38952ede25c8650f4f9b1985fca652d" kindref="member">cds_is_missing_value_att_name()</ref>). If no known missing value attributes are found the default value for the variables data type will be used.</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>var</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the variable </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>flags</parametername>
</parameternamelist>
<parameterdescription>
<para>- reserved for control flags</para></parameterdescription>
</parameteritem>
</parameterlist>
<parameterlist kind="retval"><parameteritem>
<parameternamelist>
<parametername>1</parametername>
</parameternamelist>
<parameterdescription>
<para>if the missing value attribute already existed or was created. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>0</parametername>
</parameternamelist>
<parameterdescription>
<para>if a fatal error occurred </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="665" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="664" bodyend="713"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1gaf27b41b4756715ec7f4f2bf55d8f04ae" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* cds_define_att</definition>
        <argsstring>(void *parent, const char *name, CDSDataType type, size_t length, void *value)</argsstring>
        <name>cds_define_att</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Define a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>This function will first check if an attribute with the same definition already exists in the specified group or variable. If it does, the existing attribute will be returned.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent <ref refid="structCDSGroup" kindref="compound">CDSGroup</ref> or <ref refid="structCDSVar" kindref="compound">CDSVar</ref> </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute name </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute data type </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute length </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the attribute</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the parent object is not a group or variable</para></listitem><listitem><para>the parent group or variable is locked</para></listitem><listitem><para>a memory allocation error occurred</para></listitem><listitem><para>an attribute with the same name but different definition has already been defined </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="746" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="740" bodyend="782"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga7b36c8316148acb19b4cc7e5ebeecf3e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* cds_define_att_text</definition>
        <argsstring>(void *parent, const char *name, const char *format,...)</argsstring>
        <name>cds_define_att_text</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>format</declname>
        </param>
        <param>
          <type>...</type>
        </param>
        <briefdescription>
<para>Define a CDS Text Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>See <ref refid="group__CDS__ATTS_1gaf27b41b4756715ec7f4f2bf55d8f04ae" kindref="member">cds_define_att()</ref> for details.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent <ref refid="structCDSGroup" kindref="compound">CDSGroup</ref> or <ref refid="structCDSVar" kindref="compound">CDSVar</ref> </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute name </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>format</parametername>
</parameternamelist>
<parameterdescription>
<para>- format string (see printf) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>...</parametername>
</parameternamelist>
<parameterdescription>
<para>- arguments for the format string</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the new attribute</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the parent object is not a group or variable</para></listitem><listitem><para>the parent group or variable is locked</para></listitem><listitem><para>a memory allocation error occurred</para></listitem><listitem><para>an attribute with the same name but a differnt value has already been defined </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="810" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="806" bodyend="819"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga9f04075406c6dff4ba4f49cafd415653" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* cds_define_att_va_list</definition>
        <argsstring>(void *parent, const char *name, const char *format, va_list args)</argsstring>
        <name>cds_define_att_va_list</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>format</declname>
        </param>
        <param>
          <type>va_list</type>
          <declname>args</declname>
        </param>
        <briefdescription>
<para>Define a CDS Text Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>See <ref refid="group__CDS__ATTS_1gaf27b41b4756715ec7f4f2bf55d8f04ae" kindref="member">cds_define_att()</ref> for details.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent <ref refid="structCDSGroup" kindref="compound">CDSGroup</ref> or <ref refid="structCDSVar" kindref="compound">CDSVar</ref> </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute name </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>format</parametername>
</parameternamelist>
<parameterdescription>
<para>- format string (see printf) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>args</parametername>
</parameternamelist>
<parameterdescription>
<para>- arguments for the format string</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the new attribute</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the parent object is not a group or variable</para></listitem><listitem><para>the parent group or variable is locked</para></listitem><listitem><para>a memory allocation error occurred</para></listitem><listitem><para>an attribute with the same name but a differnt value has already been defined </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="848" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="843" bodyend="875"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga28ef4c973ff739f9f82fe699120781d0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_delete_att</definition>
        <argsstring>(CDSAtt *att)</argsstring>
        <name>cds_delete_att</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <briefdescription>
<para>Delete a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if the attribute was deleted</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>the attribute is locked</para></listitem><listitem><para>the parent group or variable is locked </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="892" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="891" bodyend="966"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* cds_get_att</definition>
        <argsstring>(void *parent, const char *name)</argsstring>
        <name>cds_get_att</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <briefdescription>
<para>Get a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>This function will search the specified parent group or variable for an attribute with the specified name.</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent group or variable </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- name of the attribute</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the attribute</para></listitem><listitem><para>NULL if not found </para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="982" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="981" bodyend="998"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga1070518e6574e2bc60a9e13c1d7932e9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void *</type>
        <definition>void* cds_get_att_value</definition>
        <argsstring>(CDSAtt *att, CDSDataType type, size_t *length, void *value)</argsstring>
        <name>cds_get_att_value</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t *</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Get a copy of a CDS attribute value. </para>        </briefdescription>
        <detaileddescription>
<para>This function will get a copy of an attribute value casted into the specified data type. The functions <ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member">cds_string_to_array()</ref> and <ref refid="group__CDS__CORE__UTILITIES_1gaece5f6c14e872595100deb6b89af718a" kindref="member">cds_array_to_string()</ref> are used to convert between text (CDS_CHAR) and numeric data types.</para><para>Memory will be allocated for the returned array if the output array is NULL. In this case the calling process is responsible for freeing the allocated memory.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- data type of the output array </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the length of the output array<itemizedlist>
<listitem><para>input:<itemizedlist>
<listitem><para>length of the output array</para></listitem><listitem><para>ignored if the output array is NULL</para></listitem></itemizedlist>
</para></listitem><listitem><para>output:<itemizedlist>
<listitem><para>number of values written to the output array</para></listitem><listitem><para>0 if the attribute value has zero length</para></listitem><listitem><para>(size_t)-1 if a memory allocation error occurs </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the output array or NULL to dynamically allocate the memory needed.</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the output array</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the attribute value has zero length (length == 0)</para></listitem><listitem><para>a memory allocation error occurs (length == (size_t)-1) </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="1039" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="1034" bodyend="1137"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga2a9f858330971441aa7e9d12690ba9e4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>char *</type>
        <definition>char* cds_get_att_text</definition>
        <argsstring>(CDSAtt *att, size_t *length, char *value)</argsstring>
        <name>cds_get_att_text</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type>size_t *</type>
          <declname>length</declname>
        </param>
        <param>
          <type>char *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Get a copy of a CDS attribute value. </para>        </briefdescription>
        <detaileddescription>
<para>This function will get a copy of an attribute value converted to a text string. If the data type of the attribute is not CDS_CHAR the <ref refid="group__CDS__CORE__UTILITIES_1gaece5f6c14e872595100deb6b89af718a" kindref="member">cds_array_to_string()</ref> function is used to create the output string.</para><para>Memory will be allocated for the returned string if the output string is NULL. In this case the calling process is responsible for freeing the allocated memory.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the length of the output string<itemizedlist>
<listitem><para>input:<itemizedlist>
<listitem><para>length of the output string</para></listitem><listitem><para>ignored if the output string is NULL</para></listitem></itemizedlist>
</para></listitem><listitem><para>output:<itemizedlist>
<listitem><para>number of characters written to the output string</para></listitem><listitem><para>0 if the attribute value has zero length</para></listitem><listitem><para>(size_t)-1 if a memory allocation error occurs </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the output string or NULL to dynamically allocate the memory needed.</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the output string</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the attribute value has zero length (length == 0)</para></listitem><listitem><para>a memory allocation error occurs (length == (size_t)-1) </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="1176" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="1172" bodyend="1178"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga9d0f1e80d02c080628fe857123b3f51b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_rename_att</definition>
        <argsstring>(CDSAtt *att, const char *name)</argsstring>
        <name>cds_rename_att</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <briefdescription>
<para>Rename a CDS Attribute. </para>        </briefdescription>
        <detaileddescription>
<para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the new attribute name</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if the attribute was deleted</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>an attribute with the new name already exists</para></listitem><listitem><para>the attribute is locked</para></listitem><listitem><para>the parent group or variable is locked</para></listitem><listitem><para>a memory allocation error occured </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="1198" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="1197" bodyend="1289"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga406e22638c912d5eb06ec6b2c9a9f31f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
        <definition>CDSAtt* cds_set_att</definition>
        <argsstring>(void *parent, int overwrite, const char *name, CDSDataType type, size_t length, void *value)</argsstring>
        <name>cds_set_att</name>
        <param>
          <type>void *</type>
          <declname>parent</declname>
        </param>
        <param>
          <type>int</type>
          <declname>overwrite</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>name</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Set an attribute of a CDS group or variable. </para>        </briefdescription>
        <detaileddescription>
<para>This function will define the specified attribute if it does not exist. If the attribute does exist and the overwrite flag is set, the value will be set by casting the specified value into the data type of the attribute. The functions <ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member">cds_string_to_array()</ref> and <ref refid="group__CDS__CORE__UTILITIES_1gaece5f6c14e872595100deb6b89af718a" kindref="member">cds_array_to_string()</ref> are used to convert between text (CDS_CHAR) and numeric data types.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>parent</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the parent <ref refid="structCDSGroup" kindref="compound">CDSGroup</ref> or <ref refid="structCDSVar" kindref="compound">CDSVar</ref> </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>overwrite</parametername>
</parameternamelist>
<parameterdescription>
<para>- overwrite flag (1 = TRUE, 0 = FALSE) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute name </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute data type </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- attribute length </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>pointer to the attribute</para></listitem><listitem><para>NULL if:<itemizedlist>
<listitem><para>the parent object is not a group or variable</para></listitem><listitem><para>the parent group or variable is locked, or the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="1324" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="1317" bodyend="1341"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1gae0a5c7acce6c4e1cdc083907649eb3b6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_set_att_value</definition>
        <argsstring>(CDSAtt *att, CDSDataType type, size_t length, void *value)</argsstring>
        <name>cds_set_att_value</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member">CDSDataType</ref></type>
          <declname>type</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>length</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>value</declname>
        </param>
        <briefdescription>
<para>Set the value of a CDS attribute. </para>        </briefdescription>
        <detaileddescription>
<para>This function will set the value of an attribute by casting the specified value into the data type of the attribute. The functions <ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member">cds_string_to_array()</ref> and <ref refid="group__CDS__CORE__UTILITIES_1gaece5f6c14e872595100deb6b89af718a" kindref="member">cds_array_to_string()</ref> are used to convert between text (CDS_CHAR) and numeric data types.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>- data type of the specified value </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>length</parametername>
</parameternamelist>
<parameterdescription>
<para>- length of the specified value </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>value</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute value</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if successful</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="1370" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="1365" bodyend="1382"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1gae1748771a20a4ef9a5e14f15a4cccaa1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_set_att_text</definition>
        <argsstring>(CDSAtt *att, const char *format,...)</argsstring>
        <name>cds_set_att_text</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>format</declname>
        </param>
        <param>
          <type>...</type>
        </param>
        <briefdescription>
<para>Set the value of a CDS attribute. </para>        </briefdescription>
        <detaileddescription>
<para>The <ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member">cds_string_to_array()</ref> function will be used to set the attribute value if the data type of the attribute is not CDS_CHAR.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>format</parametername>
</parameternamelist>
<parameterdescription>
<para>- format string (see printf) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>...</parametername>
</parameternamelist>
<parameterdescription>
<para>- arguments for the format string</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if successful</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="1406" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="1403" bodyend="1441"/>
      </memberdef>
      <memberdef kind="function" id="group__CDS__ATTS_1ga486287231f0e865327057c84f64f1a4b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int cds_set_att_va_list</definition>
        <argsstring>(CDSAtt *att, const char *format, va_list args)</argsstring>
        <name>cds_set_att_va_list</name>
        <param>
          <type><ref refid="structCDSAtt" kindref="compound">CDSAtt</ref> *</type>
          <declname>att</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>format</declname>
        </param>
        <param>
          <type>va_list</type>
          <declname>args</declname>
        </param>
        <briefdescription>
<para>Set the value of a CDS attribute. </para>        </briefdescription>
        <detaileddescription>
<para>The <ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member">cds_string_to_array()</ref> function will be used to set the attribute value if the data type of the attribute is not CDS_CHAR.</para><para>Error messages from this function are sent to the message handler (see <ref refid="group__MESSENGER_1ga37ec694307e2106c11a3d8d20796619a" kindref="member" external="libmsngr.tag">msngr_init_log()</ref> and <ref refid="group__MESSENGER_1gab043cf677c2e64ce2ca2bc829f7e1dbe" kindref="member" external="libmsngr.tag">msngr_init_mail()</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>att</parametername>
</parameternamelist>
<parameterdescription>
<para>- pointer to the attribute </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>format</parametername>
</parameternamelist>
<parameterdescription>
<para>- format string (see printf) </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>args</parametername>
</parameternamelist>
<parameterdescription>
<para>- arguments for the format string</para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><itemizedlist>
<listitem><para>1 if successful</para></listitem><listitem><para>0 if:<itemizedlist>
<listitem><para>the attribute is locked</para></listitem><listitem><para>a memory allocation error occurred </para></listitem></itemizedlist>
</para></listitem></itemizedlist>
</para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" line="1466" bodyfile="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c" bodystart="1462" bodyend="1494"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>CDS Attributes. </para>    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"><highlight class="comment">/*******************************************************************************</highlight></codeline>
<codeline lineno="2"><highlight class="comment">*</highlight></codeline>
<codeline lineno="3"><highlight class="comment">*<sp/><sp/>COPYRIGHT<sp/>(C)<sp/>2010<sp/>Battelle<sp/>Memorial<sp/>Institute.<sp/><sp/>All<sp/>Rights<sp/>Reserved.</highlight></codeline>
<codeline lineno="4"><highlight class="comment">*</highlight></codeline>
<codeline lineno="5"><highlight class="comment">********************************************************************************</highlight></codeline>
<codeline lineno="6"><highlight class="comment">*</highlight></codeline>
<codeline lineno="7"><highlight class="comment">*<sp/><sp/>Author:</highlight></codeline>
<codeline lineno="8"><highlight class="comment">*<sp/><sp/><sp/><sp/><sp/>name:<sp/><sp/>Brian<sp/>Ermold</highlight></codeline>
<codeline lineno="9"><highlight class="comment">*<sp/><sp/><sp/><sp/><sp/>phone:<sp/>(509)<sp/>375-2277</highlight></codeline>
<codeline lineno="10"><highlight class="comment">*<sp/><sp/><sp/><sp/><sp/>email:<sp/>brian.ermold@pnl.gov</highlight></codeline>
<codeline lineno="11"><highlight class="comment">*</highlight></codeline>
<codeline lineno="12"><highlight class="comment">********************************************************************************</highlight></codeline>
<codeline lineno="13"><highlight class="comment">*</highlight></codeline>
<codeline lineno="14"><highlight class="comment">*<sp/><sp/>REPOSITORY<sp/>INFORMATION:</highlight></codeline>
<codeline lineno="15"><highlight class="comment">*<sp/><sp/><sp/><sp/>$Revision:<sp/>60386<sp/>$</highlight></codeline>
<codeline lineno="16"><highlight class="comment">*<sp/><sp/><sp/><sp/>$Author:<sp/>ermold<sp/>$</highlight></codeline>
<codeline lineno="17"><highlight class="comment">*<sp/><sp/><sp/><sp/>$Date:<sp/>2015-02-19<sp/>20:43:41<sp/>+0000<sp/>(Thu,<sp/>19<sp/>Feb<sp/>2015)<sp/>$</highlight></codeline>
<codeline lineno="18"><highlight class="comment">*</highlight></codeline>
<codeline lineno="19"><highlight class="comment">********************************************************************************</highlight></codeline>
<codeline lineno="20"><highlight class="comment">*</highlight></codeline>
<codeline lineno="21"><highlight class="comment">*<sp/><sp/>NOTE:<sp/>DOXYGEN<sp/>is<sp/>used<sp/>to<sp/>generate<sp/>documentation<sp/>for<sp/>this<sp/>file.</highlight></codeline>
<codeline lineno="22"><highlight class="comment">*</highlight></codeline>
<codeline lineno="23"><highlight class="comment">*******************************************************************************/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="24"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="25"><highlight class="comment">/**<sp/>@file<sp/>cds_atts.c</highlight></codeline>
<codeline lineno="26"><highlight class="comment"><sp/>*<sp/><sp/>CDS<sp/>Attributes.</highlight></codeline>
<codeline lineno="27"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="28"><highlight class="normal"></highlight></codeline>
<codeline lineno="29"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="cds3_8h" kindref="compound" tooltip="CDS Library Header File.">cds3.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="cds__private_8h" kindref="compound" tooltip="Private CDS Functions.">cds_private.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="31"><highlight class="normal"></highlight></codeline>
<codeline lineno="32"><highlight class="normal"></highlight><highlight class="comment">/*******************************************************************************</highlight></codeline>
<codeline lineno="33"><highlight class="comment"><sp/>*<sp/><sp/>Private<sp/>Functions</highlight></codeline>
<codeline lineno="34"><highlight class="comment"><sp/>*/</highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="35"><highlight class="comment">/**<sp/>@privatesection<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="36"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="37"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="38"><highlight class="comment"><sp/>*<sp/><sp/>PRIVATE:<sp/>Change<sp/>the<sp/>type<sp/>and<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="39"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="40"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="41"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/>-<sp/>attribute<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="42"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/>-<sp/>attribute<sp/>length</highlight></codeline>
<codeline lineno="43"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="44"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="45"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="46"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>successful</highlight></codeline>
<codeline lineno="47"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="48"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="49"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>_cds_change_att_value(</highlight></codeline>
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="54"><highlight class="normal">{</highlight></codeline>
<codeline lineno="55"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/>*new_value<sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL;</highlight></codeline>
<codeline lineno="56"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/>type_size;</highlight></codeline>
<codeline lineno="57"><highlight class="normal"></highlight></codeline>
<codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Create<sp/>the<sp/>attribute<sp/>value<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="59"><highlight class="normal"></highlight></codeline>
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(length)<sp/>{</highlight></codeline>
<codeline lineno="61"><highlight class="normal"></highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>type_size<sp/>=<sp/><ref refid="group__CDS__DATA__TYPES_1gaf87fcd104a858b83acde7c4646210e00" kindref="member" tooltip="Get the size (in bytes) of a data type.">cds_data_type_size</ref>(type);</highlight></codeline>
<codeline lineno="63"><highlight class="normal"></highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Add<sp/>1<sp/>to<sp/>the<sp/>allocated<sp/>length.<sp/>The<sp/>main<sp/>reason<sp/>for<sp/>this<sp/>is<sp/>to</highlight></codeline>
<codeline lineno="65"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>ensure<sp/>character<sp/>strings<sp/>are<sp/>derminated<sp/>by<sp/>a<sp/>trailing<sp/>\0...</highlight></codeline>
<codeline lineno="66"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="67"><highlight class="normal"></highlight></codeline>
<codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_value<sp/>=<sp/>calloc(length+1,<sp/>type_size);</highlight></codeline>
<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!new_value)<sp/>{</highlight></codeline>
<codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="72"><highlight class="normal"></highlight></codeline>
<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value)<sp/>{</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>memcpy(new_value,<sp/>value,<sp/>length<sp/>*<sp/>type_size);</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="77"><highlight class="normal"></highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Set<sp/>the<sp/>value<sp/>in<sp/>the<sp/>attribute<sp/>structure<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="79"><highlight class="normal"></highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>{</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="83"><highlight class="normal"></highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/><sp/><sp/><sp/><sp/>=<sp/>type;</highlight></codeline>
<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/><sp/><sp/>=<sp/>length;</highlight></codeline>
<codeline lineno="86"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>=<sp/>new_value;</highlight></codeline>
<codeline lineno="87"><highlight class="normal"></highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="89"><highlight class="normal">}</highlight></codeline>
<codeline lineno="90"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="91"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="92"><highlight class="comment"><sp/>*<sp/><sp/>PRIVATE:<sp/>Create<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="93"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="94"><highlight class="comment"><sp/>*<sp/><sp/>Private<sp/>function<sp/>used<sp/>to<sp/>create<sp/>an<sp/>attribute.</highlight></codeline>
<codeline lineno="95"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="96"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>CDSGroup<sp/>or<sp/>CDSVar</highlight></codeline>
<codeline lineno="97"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/>-<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="98"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/>-<sp/>attribute<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="99"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/>-<sp/>attribute<sp/>length</highlight></codeline>
<codeline lineno="100"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="101"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="102"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="103"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>new<sp/>attribute</highlight></codeline>
<codeline lineno="104"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="105"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="106"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*_cds_create_att(</highlight></codeline>
<codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*parent,</highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/>*name,</highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="112"><highlight class="normal">{</highlight></codeline>
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att;</highlight></codeline>
<codeline lineno="114"><highlight class="normal"></highlight></codeline>
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/>att<sp/>=<sp/>(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)calloc(1,<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref>));</highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att)<sp/>{</highlight></codeline>
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="118"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="119"><highlight class="normal"></highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!_cds_init_object_members(att,<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaad314dee010967a5d1ef4f3127a2f3e31" kindref="member" tooltip="CDS Attribute.">CDS_ATT</ref>,<sp/>parent,<sp/>name))<sp/>{</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att);</highlight></codeline>
<codeline lineno="122"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="124"><highlight class="normal"></highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!_cds_change_att_value(att,<sp/>type,<sp/>length,<sp/>value))<sp/>{</highlight></codeline>
<codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>_cds_free_object_members(att);</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att);</highlight></codeline>
<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="130"><highlight class="normal"></highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="132"><highlight class="normal">}</highlight></codeline>
<codeline lineno="133"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="134"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="135"><highlight class="comment"><sp/>*<sp/><sp/>Private:<sp/>Define<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="136"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="137"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="138"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="139"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="140"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>CDSGroup<sp/>or<sp/>CDSVar</highlight></codeline>
<codeline lineno="141"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="142"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="143"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/><sp/><sp/>-<sp/>attribute<sp/>length</highlight></codeline>
<codeline lineno="144"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="145"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="146"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="147"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="148"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="149"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>object<sp/>is<sp/>not<sp/>a<sp/>group<sp/>or<sp/>variable</highlight></codeline>
<codeline lineno="150"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="151"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="152"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="153"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*_cds_define_att(</highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*parent,</highlight></codeline>
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/>*name,</highlight></codeline>
<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="159"><highlight class="normal">{</highlight></codeline>
<codeline lineno="160"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSObject" kindref="compound" tooltip="CDS Object.">CDSObject</ref><sp/>*parent_object<sp/>=<sp/>(<ref refid="structCDSObject" kindref="compound" tooltip="CDS Object.">CDSObject</ref><sp/>*)parent;</highlight></codeline>
<codeline lineno="161"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/><sp/>*group;</highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/><sp/><sp/><sp/>*var;</highlight></codeline>
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/>**atts;</highlight></codeline>
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/>***attsp;</highlight></codeline>
<codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*nattsp;</highlight></codeline>
<codeline lineno="166"><highlight class="normal"></highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Make<sp/>sure<sp/>the<sp/>parent<sp/>is<sp/>a<sp/>group<sp/>or<sp/>variable<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="168"><highlight class="normal"></highlight></codeline>
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent_object-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaae346ad91fb8e19e10a06f9657e759a76" kindref="member" tooltip="CDS Group.">CDS_GROUP</ref>)<sp/>{</highlight></codeline>
<codeline lineno="170"><highlight class="normal"></highlight></codeline>
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>group<sp/><sp/>=<sp/>(<ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/>*)parent;</highlight></codeline>
<codeline lineno="172"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>nattsp<sp/>=<sp/>&amp;(group-&gt;<ref refid="structCDSGroup_1a97f8c11e2d407a31eedc9decc82f0ef8" kindref="member" tooltip="number of attributes">natts</ref>);</highlight></codeline>
<codeline lineno="173"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>attsp<sp/><sp/>=<sp/>&amp;(group-&gt;<ref refid="structCDSGroup_1a836c587076bca85c235aa5c1951e239c" kindref="member" tooltip="array of attribute pointers">atts</ref>);</highlight></codeline>
<codeline lineno="174"><highlight class="normal"></highlight></codeline>
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>group<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="176"><highlight class="normal"></highlight></codeline>
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(group-&gt;<ref refid="structCDSGroup_1a8dd7c7d100b4ada1a2399c88e3560659" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="178"><highlight class="normal"></highlight></codeline>
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="180"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>define<sp/>attribute:<sp/>%s/_atts_/%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>group<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(parent),<sp/>name,<sp/>group-&gt;<ref refid="structCDSGroup_1a8dd7c7d100b4ada1a2399c88e3560659" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="183"><highlight class="normal"></highlight></codeline>
<codeline lineno="184"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="185"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="186"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent_object-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaaafaf8c72959801414d03d415ea42bbf4" kindref="member" tooltip="CDS Variable.">CDS_VAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="188"><highlight class="normal"></highlight></codeline>
<codeline lineno="189"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>var<sp/><sp/><sp/><sp/>=<sp/>(<ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/>*)parent_object;</highlight></codeline>
<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>nattsp<sp/>=<sp/>&amp;(var-&gt;<ref refid="structCDSVar_1add71ac10012429194082adf806222f49" kindref="member" tooltip="number of attributes">natts</ref>);</highlight></codeline>
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>attsp<sp/><sp/>=<sp/>&amp;(var-&gt;<ref refid="structCDSVar_1ad37aeb7e9b933baa2cd6085ec0d1fb9d" kindref="member" tooltip="array of attribute pointers">atts</ref>);</highlight></codeline>
<codeline lineno="192"><highlight class="normal"></highlight></codeline>
<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>variable<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="194"><highlight class="normal"></highlight></codeline>
<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(var-&gt;<ref refid="structCDSVar_1a3b6395c1e86c46417319ff208863accc" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="196"><highlight class="normal"></highlight></codeline>
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>define<sp/>attribute:<sp/>%s/_atts_/%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>variable<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="200"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(parent),<sp/>name,<sp/>var-&gt;<ref refid="structCDSVar_1a3b6395c1e86c46417319ff208863accc" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="201"><highlight class="normal"></highlight></codeline>
<codeline lineno="202"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="203"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="206"><highlight class="normal"></highlight></codeline>
<codeline lineno="207"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>define<sp/>attribute:<sp/>%s/_atts_/%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="209"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>parent<sp/>object<sp/>must<sp/>be<sp/>a<sp/>group<sp/>or<sp/>variable\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="210"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(parent),<sp/>name);</highlight></codeline>
<codeline lineno="211"><highlight class="normal"></highlight></codeline>
<codeline lineno="212"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="213"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="214"><highlight class="normal"></highlight></codeline>
<codeline lineno="215"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Allocate<sp/>space<sp/>for<sp/>a<sp/>new<sp/>attribute<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="216"><highlight class="normal"></highlight></codeline>
<codeline lineno="217"><highlight class="normal"><sp/><sp/><sp/><sp/>atts<sp/>=<sp/>(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>**)realloc(</highlight></codeline>
<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*attsp,<sp/>(*nattsp<sp/>+<sp/>2)<sp/>*<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*));</highlight></codeline>
<codeline lineno="219"><highlight class="normal"></highlight></codeline>
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!atts)<sp/>{</highlight></codeline>
<codeline lineno="221"><highlight class="normal"></highlight></codeline>
<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>define<sp/>attribute:<sp/>%s/_atts_/%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(parent),<sp/>name);</highlight></codeline>
<codeline lineno="226"><highlight class="normal"></highlight></codeline>
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="229"><highlight class="normal"></highlight></codeline>
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/>*attsp<sp/>=<sp/>atts;</highlight></codeline>
<codeline lineno="231"><highlight class="normal"></highlight></codeline>
<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Create<sp/>the<sp/>attribute<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="233"><highlight class="normal"></highlight></codeline>
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/>atts[*nattsp]<sp/>=<sp/>_cds_create_att(</highlight></codeline>
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>parent,<sp/>name,<sp/>type,<sp/>length,<sp/>value);</highlight></codeline>
<codeline lineno="236"><highlight class="normal"></highlight></codeline>
<codeline lineno="237"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!atts[*nattsp])<sp/>{</highlight></codeline>
<codeline lineno="238"><highlight class="normal"></highlight></codeline>
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>define<sp/>attribute:<sp/>%s/_atts_/%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(parent),<sp/>name);</highlight></codeline>
<codeline lineno="243"><highlight class="normal"></highlight></codeline>
<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="246"><highlight class="normal"></highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/>(*nattsp)++;</highlight></codeline>
<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/>atts[*nattsp]<sp/>=<sp/>(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL;</highlight></codeline>
<codeline lineno="249"><highlight class="normal"></highlight></codeline>
<codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(atts[*nattsp<sp/>-<sp/>1]);</highlight></codeline>
<codeline lineno="251"><highlight class="normal">}</highlight></codeline>
<codeline lineno="252"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="253"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="254"><highlight class="comment"><sp/>*<sp/><sp/>PRIVATE:<sp/>Destroy<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="255"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="256"><highlight class="comment"><sp/>*<sp/><sp/>Private<sp/>function<sp/>used<sp/>to<sp/>destroy<sp/>an<sp/>attribute.</highlight></codeline>
<codeline lineno="257"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="258"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="259"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="260"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>_cds_destroy_att(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att)</highlight></codeline>
<codeline lineno="261"><highlight class="normal">{</highlight></codeline>
<codeline lineno="262"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att)<sp/>{</highlight></codeline>
<codeline lineno="263"><highlight class="normal"></highlight></codeline>
<codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="265"><highlight class="normal"></highlight></codeline>
<codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>_cds_free_object_members(att);</highlight></codeline>
<codeline lineno="267"><highlight class="normal"></highlight></codeline>
<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att);</highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="270"><highlight class="normal">}</highlight></codeline>
<codeline lineno="271"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="272"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="273"><highlight class="comment"><sp/>*<sp/><sp/>PRIVATE:<sp/>Set<sp/>the<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>attribute.</highlight></codeline>
<codeline lineno="274"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="275"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>set<sp/>the<sp/>value<sp/>of<sp/>an<sp/>attribute<sp/>by<sp/>casting<sp/>the</highlight></codeline>
<codeline lineno="276"><highlight class="comment"><sp/>*<sp/><sp/>specified<sp/>value<sp/>into<sp/>the<sp/>data<sp/>type<sp/>of<sp/>the<sp/>attribute.<sp/>The<sp/>functions</highlight></codeline>
<codeline lineno="277"><highlight class="comment"><sp/>*<sp/><sp/>cds_string_to_array()<sp/>and<sp/>cds_array_to_string()<sp/>are<sp/>used<sp/>to<sp/>convert</highlight></codeline>
<codeline lineno="278"><highlight class="comment"><sp/>*<sp/><sp/>between<sp/>text<sp/>(CDS_CHAR)<sp/>and<sp/>numeric<sp/>data<sp/>types.</highlight></codeline>
<codeline lineno="279"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="280"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message<sp/>handler</highlight></codeline>
<codeline lineno="281"><highlight class="comment"><sp/>*<sp/><sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="282"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="283"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="284"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/>-<sp/>data<sp/>type<sp/>of<sp/>the<sp/>specified<sp/>value</highlight></codeline>
<codeline lineno="285"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/>-<sp/>length<sp/>of<sp/>the<sp/>specified<sp/>value</highlight></codeline>
<codeline lineno="286"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="287"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="288"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="289"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>successful</highlight></codeline>
<codeline lineno="290"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="291"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="292"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>_cds_set_att_value(</highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="297"><highlight class="normal">{</highlight></codeline>
<codeline lineno="298"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/>*new_value<sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL;</highlight></codeline>
<codeline lineno="299"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>type_size;</highlight></codeline>
<codeline lineno="300"><highlight class="normal"></highlight></codeline>
<codeline lineno="301"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Create<sp/>the<sp/>new<sp/>attribute<sp/>value<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="302"><highlight class="normal"></highlight></codeline>
<codeline lineno="303"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((type<sp/><sp/><sp/>==<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>)<sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="304"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(length<sp/>==<sp/>0<sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="305"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(value<sp/><sp/>!=<sp/>NULL<sp/><sp/><sp/><sp/>))<sp/>{</highlight></codeline>
<codeline lineno="306"><highlight class="normal"></highlight></codeline>
<codeline lineno="307"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length<sp/>=<sp/>strlen(value)<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="308"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="309"><highlight class="normal"></highlight></codeline>
<codeline lineno="310"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value<sp/>&amp;&amp;<sp/>length)<sp/>{</highlight></codeline>
<codeline lineno="311"><highlight class="normal"></highlight></codeline>
<codeline lineno="312"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(type<sp/>==<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="313"><highlight class="normal"></highlight></codeline>
<codeline lineno="314"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/>==<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_value<sp/>=<sp/>calloc(length+1,<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">char</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!new_value)<sp/>{</highlight></codeline>
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length<sp/>=<sp/>(size_t)-1;</highlight></codeline>
<codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="319"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="320"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>memcpy(new_value,<sp/>value,<sp/>length<sp/>*<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">char</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="321"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="322"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="323"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="324"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member" tooltip="Convert a text string to an array of values.">cds_string_to_array</ref>(</highlight></codeline>
<codeline lineno="325"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*)value,<sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref>,<sp/>&amp;length,<sp/>NULL);</highlight></codeline>
<codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="327"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="328"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/>==<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1gaece5f6c14e872595100deb6b89af718a" kindref="member" tooltip="Convert an array of values to a text string.">cds_array_to_string</ref>(type,<sp/>length,<sp/>value,<sp/>&amp;length,<sp/>NULL);</highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(new_value)<sp/>{</highlight></codeline>
<codeline lineno="331"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length<sp/>=<sp/>strlen(new_value)<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="334"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1gaecb1f48c358835631d53c48efd82ecf6" kindref="member" tooltip="Create a copy of an array of data.">cds_copy_array</ref>(</highlight></codeline>
<codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>type,<sp/>length,<sp/>value,<sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref>,<sp/>NULL,</highlight></codeline>
<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0,<sp/>NULL,<sp/>NULL,<sp/>NULL,<sp/>NULL,<sp/>NULL,<sp/>NULL);</highlight></codeline>
<codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!new_value)<sp/>{</highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length<sp/>=<sp/>(size_t)-1;</highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="343"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(length)<sp/>{</highlight></codeline>
<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>type_size<sp/>=<sp/><ref refid="group__CDS__DATA__TYPES_1gaf87fcd104a858b83acde7c4646210e00" kindref="member" tooltip="Get the size (in bytes) of a data type.">cds_data_type_size</ref>(att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref>);</highlight></codeline>
<codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_value<sp/>=<sp/>calloc(length+1,<sp/>type_size);</highlight></codeline>
<codeline lineno="346"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="347"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="348"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>new_value<sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL;</highlight></codeline>
<codeline lineno="349"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length<sp/><sp/><sp/><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="350"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="351"><highlight class="normal"></highlight></codeline>
<codeline lineno="352"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(length<sp/>==<sp/>(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal">)-1)<sp/>{</highlight></codeline>
<codeline lineno="353"><highlight class="normal"></highlight></codeline>
<codeline lineno="354"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="355"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>set<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="356"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,<sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="357"><highlight class="normal"></highlight></codeline>
<codeline lineno="358"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="359"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="360"><highlight class="normal"></highlight></codeline>
<codeline lineno="361"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Set<sp/>the<sp/>value<sp/>in<sp/>the<sp/>attribute<sp/>structure<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="362"><highlight class="normal"></highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>{</highlight></codeline>
<codeline lineno="364"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="365"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="366"><highlight class="normal"></highlight></codeline>
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/><sp/><sp/>=<sp/>length;</highlight></codeline>
<codeline lineno="368"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>=<sp/>new_value;</highlight></codeline>
<codeline lineno="369"><highlight class="normal"></highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="371"><highlight class="normal">}</highlight></codeline>
<codeline lineno="372"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="373"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="374"><highlight class="comment"><sp/>*<sp/><sp/>Set<sp/>the<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>attribute.</highlight></codeline>
<codeline lineno="375"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="376"><highlight class="comment"><sp/>*<sp/><sp/>The<sp/>cds_string_to_array()<sp/>function<sp/>will<sp/>be<sp/>used<sp/>to<sp/>set<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="377"><highlight class="comment"><sp/>*<sp/><sp/>value<sp/>if<sp/>the<sp/>data<sp/>type<sp/>of<sp/>the<sp/>attribute<sp/>is<sp/>not<sp/>CDS_CHAR.</highlight></codeline>
<codeline lineno="378"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="379"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="380"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="381"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="382"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="383"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>format<sp/>-<sp/>format<sp/>string<sp/>(see<sp/>printf)</highlight></codeline>
<codeline lineno="384"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>args<sp/><sp/><sp/>-<sp/>arguments<sp/>for<sp/>the<sp/>format<sp/>string</highlight></codeline>
<codeline lineno="385"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="386"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="387"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>successful</highlight></codeline>
<codeline lineno="388"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="389"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="390"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>_cds_set_att_va_list(</highlight></codeline>
<codeline lineno="391"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="392"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*format,</highlight></codeline>
<codeline lineno="393"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/><sp/><sp/><sp/><sp/>args)</highlight></codeline>
<codeline lineno="394"><highlight class="normal">{</highlight></codeline>
<codeline lineno="395"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/><sp/>*string;</highlight></codeline>
<codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/>length;</highlight></codeline>
<codeline lineno="397"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/>retval;</highlight></codeline>
<codeline lineno="398"><highlight class="normal"></highlight></codeline>
<codeline lineno="399"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">string</highlight><highlight class="normal"><sp/>=<sp/><ref refid="group__MSNGRUtils_1gaa0c8d48f0c3b84e6c2031296fdba1ced" kindref="member" external="libmsngr.tag">msngr_format_va_list</ref>(format,<sp/>args);</highlight></codeline>
<codeline lineno="400"><highlight class="normal"></highlight></codeline>
<codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!</highlight><highlight class="keywordtype">string</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="402"><highlight class="normal"></highlight></codeline>
<codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="404"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>set<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="405"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,<sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="406"><highlight class="normal"></highlight></codeline>
<codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="408"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="409"><highlight class="normal"></highlight></codeline>
<codeline lineno="410"><highlight class="normal"><sp/><sp/><sp/><sp/>length<sp/>=<sp/>strlen(</highlight><highlight class="keywordtype">string</highlight><highlight class="normal">)<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="411"><highlight class="normal"><sp/><sp/><sp/><sp/>retval<sp/>=<sp/>_cds_set_att_value(att,<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>,<sp/>length,<sp/></highlight><highlight class="keywordtype">string</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="412"><highlight class="normal"></highlight></codeline>
<codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/>free(</highlight><highlight class="keywordtype">string</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="414"><highlight class="normal"></highlight></codeline>
<codeline lineno="415"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(retval);</highlight></codeline>
<codeline lineno="416"><highlight class="normal">}</highlight></codeline>
<codeline lineno="417"><highlight class="normal"></highlight></codeline>
<codeline lineno="418"><highlight class="normal"></highlight><highlight class="comment">/*******************************************************************************</highlight></codeline>
<codeline lineno="419"><highlight class="comment"><sp/>*<sp/><sp/>Public<sp/>Functions</highlight></codeline>
<codeline lineno="420"><highlight class="comment"><sp/>*/</highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="421"><highlight class="comment">/**<sp/>@publicsection<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="422"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="423"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="424"><highlight class="comment"><sp/>*<sp/><sp/>Change<sp/>an<sp/>attribute<sp/>of<sp/>a<sp/>CDS<sp/>group<sp/>or<sp/>variable.</highlight></codeline>
<codeline lineno="425"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="426"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>define<sp/>the<sp/>specified<sp/>attribute<sp/>if<sp/>it<sp/>does<sp/>not<sp/>exist.</highlight></codeline>
<codeline lineno="427"><highlight class="comment"><sp/>*<sp/><sp/>If<sp/>the<sp/>attribute<sp/>does<sp/>exist<sp/>and<sp/>the<sp/>overwrite<sp/>flag<sp/>is<sp/>set,<sp/>the<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="428"><highlight class="comment"><sp/>*<sp/><sp/>and<sp/>value<sp/>will<sp/>be<sp/>changed.</highlight></codeline>
<codeline lineno="429"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="430"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message<sp/>handler</highlight></codeline>
<codeline lineno="431"><highlight class="comment"><sp/>*<sp/><sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="432"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="433"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>CDSGroup<sp/>or<sp/>CDSVar</highlight></codeline>
<codeline lineno="434"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>overwrite<sp/>-<sp/>overwrite<sp/>flag<sp/>(1<sp/>=<sp/>TRUE,<sp/>0<sp/>=<sp/>FALSE)</highlight></codeline>
<codeline lineno="435"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="436"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="437"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>length</highlight></codeline>
<codeline lineno="438"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="439"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="440"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="441"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="442"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="443"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>object<sp/>is<sp/>not<sp/>a<sp/>group<sp/>or<sp/>variable</highlight></codeline>
<codeline lineno="444"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked,<sp/>or<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="445"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="446"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="447" refid="group__CDS__ATTS_1gaa0a35d6df39ef86862734f2426c2817f" refkind="member"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*<ref refid="group__CDS__ATTS_1gaa0a35d6df39ef86862734f2426c2817f" kindref="member" tooltip="Change an attribute of a CDS group or variable.">cds_change_att</ref>(</highlight></codeline>
<codeline lineno="448"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*parent,</highlight></codeline>
<codeline lineno="449"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>overwrite,</highlight></codeline>
<codeline lineno="450"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/>*name,</highlight></codeline>
<codeline lineno="451"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="452"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="453"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="454"><highlight class="normal">{</highlight></codeline>
<codeline lineno="455"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att;</highlight></codeline>
<codeline lineno="456"><highlight class="normal"></highlight></codeline>
<codeline lineno="457"><highlight class="normal"><sp/><sp/><sp/><sp/>att<sp/>=<sp/><ref refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" kindref="member" tooltip="Get a CDS Attribute.">cds_get_att</ref>(parent,<sp/>name);</highlight></codeline>
<codeline lineno="458"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att)<sp/>{</highlight></codeline>
<codeline lineno="459"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att<sp/>=<sp/>_cds_define_att(parent,<sp/>name,<sp/>type,<sp/>length,<sp/>value);</highlight></codeline>
<codeline lineno="460"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att)<sp/>{</highlight></codeline>
<codeline lineno="461"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="462"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="463"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="464"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/>||<sp/>!att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>||<sp/>overwrite)<sp/>{</highlight></codeline>
<codeline lineno="465"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!<ref refid="group__CDS__ATTS_1gabaaa10deca000a04c4bed64fda8d4311" kindref="member" tooltip="Change the type and value of a CDS Attribute.">cds_change_att_value</ref>(att,<sp/>type,<sp/>length,<sp/>value))<sp/>{</highlight></codeline>
<codeline lineno="466"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="467"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="468"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="469"><highlight class="normal"></highlight></codeline>
<codeline lineno="470"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="471"><highlight class="normal">}</highlight></codeline>
<codeline lineno="472"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="473"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="474"><highlight class="comment"><sp/>*<sp/><sp/>Change<sp/>the<sp/>type<sp/>and<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="475"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="476"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="477"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="478"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="479"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="480"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/><sp/>-<sp/>new<sp/>attribute<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="481"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/><sp/>-<sp/>new<sp/>attribute<sp/>length</highlight></codeline>
<codeline lineno="482"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>new<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="483"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="484"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="485"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>successful</highlight></codeline>
<codeline lineno="486"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="487"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="488"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="489"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="490" refid="group__CDS__ATTS_1gabaaa10deca000a04c4bed64fda8d4311" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1gabaaa10deca000a04c4bed64fda8d4311" kindref="member" tooltip="Change the type and value of a CDS Attribute.">cds_change_att_value</ref>(</highlight></codeline>
<codeline lineno="491"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="492"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="493"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="494"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="495"><highlight class="normal">{</highlight></codeline>
<codeline lineno="496"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>attribute<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="497"><highlight class="normal"></highlight></codeline>
<codeline lineno="498"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="499"><highlight class="normal"></highlight></codeline>
<codeline lineno="500"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="501"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>change<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="502"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>attribute<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="503"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="504"><highlight class="normal"></highlight></codeline>
<codeline lineno="505"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="506"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="507"><highlight class="normal"></highlight></codeline>
<codeline lineno="508"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Change<sp/>the<sp/>attribute<sp/>value<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="509"><highlight class="normal"></highlight></codeline>
<codeline lineno="510"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!_cds_change_att_value(att,<sp/>type,<sp/>length,<sp/>value))<sp/>{</highlight></codeline>
<codeline lineno="511"><highlight class="normal"></highlight></codeline>
<codeline lineno="512"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="513"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>change<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="514"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,<sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="515"><highlight class="normal"></highlight></codeline>
<codeline lineno="516"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="517"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="518"><highlight class="normal"></highlight></codeline>
<codeline lineno="519"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="520"><highlight class="normal">}</highlight></codeline>
<codeline lineno="521"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="522"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="523"><highlight class="comment"><sp/>*<sp/><sp/>Change<sp/>the<sp/>type<sp/>and<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="524"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="525"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>change<sp/>the<sp/>data<sp/>type<sp/>of<sp/>an<sp/>attribute<sp/>to<sp/>CDS_CHAR</highlight></codeline>
<codeline lineno="526"><highlight class="comment"><sp/>*<sp/><sp/>and<sp/>set<sp/>the<sp/>new<sp/>value.</highlight></codeline>
<codeline lineno="527"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="528"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="529"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="530"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="531"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="532"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>format<sp/><sp/>-<sp/>format<sp/>string<sp/>(see<sp/>printf)</highlight></codeline>
<codeline lineno="533"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>...<sp/><sp/><sp/><sp/><sp/>-<sp/>arguments<sp/>for<sp/>the<sp/>format<sp/>string</highlight></codeline>
<codeline lineno="534"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="535"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="536"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>the<sp/>attribute<sp/>value<sp/>was<sp/>changed</highlight></codeline>
<codeline lineno="537"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="538"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="539"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="540"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="541" refid="group__CDS__ATTS_1gacd5e31e16c04ee637d963a4a21f570a7" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1gacd5e31e16c04ee637d963a4a21f570a7" kindref="member" tooltip="Change the type and value of a CDS Attribute.">cds_change_att_text</ref>(</highlight></codeline>
<codeline lineno="542"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="543"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*format,<sp/>...)</highlight></codeline>
<codeline lineno="544"><highlight class="normal">{</highlight></codeline>
<codeline lineno="545"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/>args;</highlight></codeline>
<codeline lineno="546"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/>retval;</highlight></codeline>
<codeline lineno="547"><highlight class="normal"></highlight></codeline>
<codeline lineno="548"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>a<sp/>format<sp/>string<sp/>was<sp/>specified<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="549"><highlight class="normal"></highlight></codeline>
<codeline lineno="550"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!format)<sp/>{</highlight></codeline>
<codeline lineno="551"><highlight class="normal"></highlight></codeline>
<codeline lineno="552"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="553"><highlight class="normal"></highlight></codeline>
<codeline lineno="554"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/><sp/><sp/><sp/><sp/>=<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>;</highlight></codeline>
<codeline lineno="555"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/><sp/><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="556"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL;</highlight></codeline>
<codeline lineno="557"><highlight class="normal"></highlight></codeline>
<codeline lineno="558"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="559"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="560"><highlight class="normal"></highlight></codeline>
<codeline lineno="561"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Change<sp/>the<sp/>attribute<sp/>value<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="562"><highlight class="normal"></highlight></codeline>
<codeline lineno="563"><highlight class="normal"><sp/><sp/><sp/><sp/>va_start(args,<sp/>format);</highlight></codeline>
<codeline lineno="564"><highlight class="normal"><sp/><sp/><sp/><sp/>retval<sp/>=<sp/><ref refid="group__CDS__ATTS_1ga6bcafa9cb618daa0182692d4f105fcf1" kindref="member" tooltip="Change the type and value of a CDS Attribute.">cds_change_att_va_list</ref>(att,<sp/>format,<sp/>args);</highlight></codeline>
<codeline lineno="565"><highlight class="normal"><sp/><sp/><sp/><sp/>va_end(args);</highlight></codeline>
<codeline lineno="566"><highlight class="normal"></highlight></codeline>
<codeline lineno="567"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(retval);</highlight></codeline>
<codeline lineno="568"><highlight class="normal">}</highlight></codeline>
<codeline lineno="569"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="570"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="571"><highlight class="comment"><sp/>*<sp/><sp/>Change<sp/>the<sp/>type<sp/>and<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="572"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="573"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>change<sp/>the<sp/>data<sp/>type<sp/>of<sp/>an<sp/>attribute<sp/>to<sp/>CDS_CHAR</highlight></codeline>
<codeline lineno="574"><highlight class="comment"><sp/>*<sp/><sp/>and<sp/>set<sp/>the<sp/>new<sp/>value.</highlight></codeline>
<codeline lineno="575"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="576"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="577"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="578"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="579"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="580"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>format<sp/>-<sp/>format<sp/>string<sp/>(see<sp/>printf)</highlight></codeline>
<codeline lineno="581"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>args<sp/><sp/><sp/>-<sp/>arguments<sp/>for<sp/>the<sp/>format<sp/>string</highlight></codeline>
<codeline lineno="582"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="583"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="584"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>the<sp/>attribute<sp/>value<sp/>was<sp/>changed</highlight></codeline>
<codeline lineno="585"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="586"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="587"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="588"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="589" refid="group__CDS__ATTS_1ga6bcafa9cb618daa0182692d4f105fcf1" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1ga6bcafa9cb618daa0182692d4f105fcf1" kindref="member" tooltip="Change the type and value of a CDS Attribute.">cds_change_att_va_list</ref>(</highlight></codeline>
<codeline lineno="590"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="591"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*format,</highlight></codeline>
<codeline lineno="592"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/><sp/><sp/><sp/><sp/>args)</highlight></codeline>
<codeline lineno="593"><highlight class="normal">{</highlight></codeline>
<codeline lineno="594"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*att_text;</highlight></codeline>
<codeline lineno="595"><highlight class="normal"></highlight></codeline>
<codeline lineno="596"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>attribute<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="597"><highlight class="normal"></highlight></codeline>
<codeline lineno="598"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="599"><highlight class="normal"></highlight></codeline>
<codeline lineno="600"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="601"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>change<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="602"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>attribute<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="603"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="604"><highlight class="normal"></highlight></codeline>
<codeline lineno="605"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="606"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="607"><highlight class="normal"></highlight></codeline>
<codeline lineno="608"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>a<sp/>format<sp/>string<sp/>was<sp/>specified<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="609"><highlight class="normal"></highlight></codeline>
<codeline lineno="610"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!format)<sp/>{</highlight></codeline>
<codeline lineno="611"><highlight class="normal"></highlight></codeline>
<codeline lineno="612"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="613"><highlight class="normal"></highlight></codeline>
<codeline lineno="614"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/><sp/><sp/><sp/><sp/>=<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>;</highlight></codeline>
<codeline lineno="615"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/><sp/><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="616"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL;</highlight></codeline>
<codeline lineno="617"><highlight class="normal"></highlight></codeline>
<codeline lineno="618"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="619"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="620"><highlight class="normal"></highlight></codeline>
<codeline lineno="621"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Create<sp/>text<sp/>string<sp/>from<sp/>format<sp/>string<sp/>and<sp/>argument<sp/>list<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="622"><highlight class="normal"></highlight></codeline>
<codeline lineno="623"><highlight class="normal"><sp/><sp/><sp/><sp/>att_text<sp/>=<sp/><ref refid="group__MSNGRUtils_1gaa0c8d48f0c3b84e6c2031296fdba1ced" kindref="member" external="libmsngr.tag">msngr_format_va_list</ref>(format,<sp/>args);</highlight></codeline>
<codeline lineno="624"><highlight class="normal"></highlight></codeline>
<codeline lineno="625"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att_text)<sp/>{</highlight></codeline>
<codeline lineno="626"><highlight class="normal"></highlight></codeline>
<codeline lineno="627"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="628"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>change<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="629"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,<sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="630"><highlight class="normal"></highlight></codeline>
<codeline lineno="631"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="632"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="633"><highlight class="normal"></highlight></codeline>
<codeline lineno="634"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Change<sp/>the<sp/>attribute<sp/>value<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="635"><highlight class="normal"></highlight></codeline>
<codeline lineno="636"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="637"><highlight class="normal"></highlight></codeline>
<codeline lineno="638"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/><sp/><sp/><sp/><sp/>=<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>;</highlight></codeline>
<codeline lineno="639"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/><sp/><sp/>=<sp/>strlen(att_text)<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="640"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1a9d88223a072d7ade9783a72c1d0f9f1e" kindref="member" tooltip="char: ISO/ASCII character">cp</ref><sp/>=<sp/>att_text;</highlight></codeline>
<codeline lineno="641"><highlight class="normal"></highlight></codeline>
<codeline lineno="642"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="643"><highlight class="normal">}</highlight></codeline>
<codeline lineno="644"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="645"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="646"><highlight class="comment"><sp/>*<sp/><sp/>Create<sp/>a<sp/>missing<sp/>value<sp/>attribute<sp/>if<sp/>it<sp/>does<sp/>not<sp/>already<sp/>exist.</highlight></codeline>
<codeline lineno="647"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="648"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>check<sp/>if<sp/>the<sp/>variable<sp/>already<sp/>has<sp/>either<sp/>a</highlight></codeline>
<codeline lineno="649"><highlight class="comment"><sp/>*<sp/><sp/>missing_value<sp/>or<sp/>_FillValue<sp/>attibute<sp/>defined.<sp/><sp/>If<sp/>it<sp/>does<sp/>not</highlight></codeline>
<codeline lineno="650"><highlight class="comment"><sp/>*<sp/><sp/>one<sp/>will<sp/>be<sp/>created.</highlight></codeline>
<codeline lineno="651"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="652"><highlight class="comment"><sp/>*<sp/><sp/>The<sp/>missing<sp/>value<sp/>used<sp/>will<sp/>be<sp/>determined<sp/>by<sp/>first<sp/>checking<sp/>for</highlight></codeline>
<codeline lineno="653"><highlight class="comment"><sp/>*<sp/><sp/>non-standard<sp/>missing<sp/>value<sp/>attributes<sp/>defined<sp/>at<sp/>either<sp/>the<sp/>field</highlight></codeline>
<codeline lineno="654"><highlight class="comment"><sp/>*<sp/><sp/>or<sp/>global<sp/>level<sp/>(see<sp/>cds_is_missing_value_att_name()).<sp/><sp/>If<sp/>no</highlight></codeline>
<codeline lineno="655"><highlight class="comment"><sp/>*<sp/><sp/>known<sp/>missing<sp/>value<sp/>attributes<sp/>are<sp/>found<sp/>the<sp/>default<sp/>value<sp/>for</highlight></codeline>
<codeline lineno="656"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>variables<sp/>data<sp/>type<sp/>will<sp/>be<sp/>used.</highlight></codeline>
<codeline lineno="657"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="658"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/>var<sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>variable</highlight></codeline>
<codeline lineno="659"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/>flags<sp/>-<sp/>reserved<sp/>for<sp/>control<sp/>flags</highlight></codeline>
<codeline lineno="660"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="661"><highlight class="comment"><sp/>*<sp/><sp/>@retval<sp/><sp/>1<sp/><sp/>if<sp/>the<sp/>missing<sp/>value<sp/>attribute<sp/>already<sp/>existed<sp/>or<sp/>was<sp/>created.</highlight></codeline>
<codeline lineno="662"><highlight class="comment"><sp/>*<sp/><sp/>@retval<sp/><sp/>0<sp/><sp/>if<sp/>a<sp/>fatal<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="663"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="664" refid="group__CDS__ATTS_1ga744947ce3723616196c44a60e4b75f57" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1ga744947ce3723616196c44a60e4b75f57" kindref="member" tooltip="Create a missing value attribute if it does not already exist.">cds_create_missing_value_att</ref>(<ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/>*var,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>flags)</highlight></codeline>
<codeline lineno="665"><highlight class="normal">{</highlight></codeline>
<codeline lineno="666"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/>nmissings;</highlight></codeline>
<codeline lineno="667"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*missings;</highlight></codeline>
<codeline lineno="668"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/>free_missings;</highlight></codeline>
<codeline lineno="669"><highlight class="normal"></highlight></codeline>
<codeline lineno="670"><highlight class="normal"><sp/><sp/><sp/><sp/>flags<sp/>=<sp/>flags;</highlight></codeline>
<codeline lineno="671"><highlight class="normal"></highlight></codeline>
<codeline lineno="672"><highlight class="normal"><sp/><sp/><sp/><sp/>free_missings<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="673"><highlight class="normal"></highlight></codeline>
<codeline lineno="674"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" kindref="member" tooltip="Get a CDS Attribute.">cds_get_att</ref>(var,<sp/></highlight><highlight class="stringliteral">&quot;missing_value&quot;</highlight><highlight class="normal">)<sp/>||</highlight></codeline>
<codeline lineno="675"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" kindref="member" tooltip="Get a CDS Attribute.">cds_get_att</ref>(var,<sp/></highlight><highlight class="stringliteral">&quot;_FillValue&quot;</highlight><highlight class="normal">))<sp/>{</highlight></codeline>
<codeline lineno="676"><highlight class="normal"></highlight></codeline>
<codeline lineno="677"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>The<sp/>variable<sp/>already<sp/>has<sp/>a<sp/>standard</highlight></codeline>
<codeline lineno="678"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>missing<sp/>value<sp/>attribute<sp/>defined<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="679"><highlight class="normal"></highlight></codeline>
<codeline lineno="680"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="681"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="682"><highlight class="normal"></highlight></codeline>
<codeline lineno="683"><highlight class="normal"><sp/><sp/><sp/><sp/>nmissings<sp/>=<sp/><ref refid="group__CDS__VAR__DATA_1ga5a80293d87729f6d60ba657070c87c92" kindref="member" tooltip="Get the missing values for a CDS Variable.">cds_get_var_missing_values</ref>(var,<sp/>&amp;missings);</highlight></codeline>
<codeline lineno="684"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(nmissings<sp/>&lt;<sp/>0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="685"><highlight class="normal"></highlight></codeline>
<codeline lineno="686"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(nmissings<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="687"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Use<sp/>the<sp/>default<sp/>fill<sp/>value<sp/>for<sp/>the<sp/>variable<sp/>data<sp/>type<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="688"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>nmissings<sp/>=<sp/>1;</highlight></codeline>
<codeline lineno="689"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>missings<sp/><sp/>=<sp/>_cds_default_fill_value(var-&gt;<ref refid="structCDSVar_1a62c8bde11e5ca278495a8abc4fbc1beb" kindref="member" tooltip="data type">type</ref>);</highlight></codeline>
<codeline lineno="690"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="691"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="692"><highlight class="normal"></highlight></codeline>
<codeline lineno="693"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free_missings<sp/>=<sp/>1;</highlight></codeline>
<codeline lineno="694"><highlight class="normal"></highlight></codeline>
<codeline lineno="695"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Remove<sp/>the<sp/>default<sp/>fill<sp/>value<sp/>from<sp/>the<sp/>missing<sp/>values</highlight></codeline>
<codeline lineno="696"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>array<sp/>if<sp/>more<sp/>than<sp/>1<sp/>missing<sp/>value<sp/>was<sp/>found.<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="697"><highlight class="normal"></highlight></codeline>
<codeline lineno="698"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(var-&gt;<ref refid="structCDSVar_1a2ed643a7badd0c4609945f26c3c7d66c" kindref="member" tooltip="default fill value">default_fill</ref><sp/>&amp;&amp;<sp/>nmissings<sp/>&gt;<sp/>1)<sp/>{</highlight></codeline>
<codeline lineno="699"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>nmissings<sp/>-=<sp/>1;</highlight></codeline>
<codeline lineno="700"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="701"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="702"><highlight class="normal"></highlight></codeline>
<codeline lineno="703"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!<ref refid="group__CDS__ATTS_1gaf27b41b4756715ec7f4f2bf55d8f04ae" kindref="member" tooltip="Define a CDS Attribute.">cds_define_att</ref>(</highlight></codeline>
<codeline lineno="704"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>var,<sp/></highlight><highlight class="stringliteral">&quot;missing_value&quot;</highlight><highlight class="normal">,<sp/>var-&gt;<ref refid="structCDSVar_1a62c8bde11e5ca278495a8abc4fbc1beb" kindref="member" tooltip="data type">type</ref>,<sp/>nmissings,<sp/>missings))<sp/>{</highlight></codeline>
<codeline lineno="705"><highlight class="normal"></highlight></codeline>
<codeline lineno="706"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(free_missings)<sp/>free(missings);</highlight></codeline>
<codeline lineno="707"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="708"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="709"><highlight class="normal"></highlight></codeline>
<codeline lineno="710"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(free_missings)<sp/>free(missings);</highlight></codeline>
<codeline lineno="711"><highlight class="normal"></highlight></codeline>
<codeline lineno="712"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="713"><highlight class="normal">}</highlight></codeline>
<codeline lineno="714"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="715"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="716"><highlight class="comment"><sp/>*<sp/><sp/>Define<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="717"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="718"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>first<sp/>check<sp/>if<sp/>an<sp/>attribute<sp/>with<sp/>the<sp/>same</highlight></codeline>
<codeline lineno="719"><highlight class="comment"><sp/>*<sp/><sp/>definition<sp/>already<sp/>exists<sp/>in<sp/>the<sp/>specified<sp/>group<sp/>or<sp/>variable.</highlight></codeline>
<codeline lineno="720"><highlight class="comment"><sp/>*<sp/><sp/>If<sp/>it<sp/>does,<sp/>the<sp/>existing<sp/>attribute<sp/>will<sp/>be<sp/>returned.</highlight></codeline>
<codeline lineno="721"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="722"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="723"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="724"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="725"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>CDSGroup<sp/>or<sp/>CDSVar</highlight></codeline>
<codeline lineno="726"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="727"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="728"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/><sp/><sp/>-<sp/>attribute<sp/>length</highlight></codeline>
<codeline lineno="729"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="730"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="731"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="732"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="733"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="734"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>object<sp/>is<sp/>not<sp/>a<sp/>group<sp/>or<sp/>variable</highlight></codeline>
<codeline lineno="735"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="736"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="737"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>an<sp/>attribute<sp/>with<sp/>the<sp/>same<sp/>name<sp/>but<sp/>different<sp/>definition</highlight></codeline>
<codeline lineno="738"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>has<sp/>already<sp/>been<sp/>defined</highlight></codeline>
<codeline lineno="739"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="740" refid="group__CDS__ATTS_1gaf27b41b4756715ec7f4f2bf55d8f04ae" refkind="member"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*<ref refid="group__CDS__ATTS_1gaf27b41b4756715ec7f4f2bf55d8f04ae" kindref="member" tooltip="Define a CDS Attribute.">cds_define_att</ref>(</highlight></codeline>
<codeline lineno="741"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*parent,</highlight></codeline>
<codeline lineno="742"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/>*name,</highlight></codeline>
<codeline lineno="743"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="744"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="745"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="746"><highlight class="normal">{</highlight></codeline>
<codeline lineno="747"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att;</highlight></codeline>
<codeline lineno="748"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/>type_size;</highlight></codeline>
<codeline lineno="749"><highlight class="normal"></highlight></codeline>
<codeline lineno="750"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>an<sp/>attribute<sp/>with<sp/>this<sp/>name<sp/>already<sp/>exists<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="751"><highlight class="normal"></highlight></codeline>
<codeline lineno="752"><highlight class="normal"><sp/><sp/><sp/><sp/>att<sp/>=<sp/><ref refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" kindref="member" tooltip="Get a CDS Attribute.">cds_get_att</ref>(parent,<sp/>name);</highlight></codeline>
<codeline lineno="753"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att)<sp/>{</highlight></codeline>
<codeline lineno="754"><highlight class="normal"></highlight></codeline>
<codeline lineno="755"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(type<sp/><sp/><sp/>==<sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/><sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="756"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length<sp/>==<sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref>)<sp/>{</highlight></codeline>
<codeline lineno="757"><highlight class="normal"></highlight></codeline>
<codeline lineno="758"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value<sp/>==<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL<sp/>||<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>==<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL)<sp/>{</highlight></codeline>
<codeline lineno="759"><highlight class="normal"></highlight></codeline>
<codeline lineno="760"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value<sp/>==<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL<sp/>&amp;&amp;<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>==<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL)<sp/>{</highlight></codeline>
<codeline lineno="761"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="762"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="763"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="764"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="765"><highlight class="normal"></highlight></codeline>
<codeline lineno="766"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>type_size<sp/>=<sp/><ref refid="group__CDS__DATA__TYPES_1gaf87fcd104a858b83acde7c4646210e00" kindref="member" tooltip="Get the size (in bytes) of a data type.">cds_data_type_size</ref>(type);</highlight></codeline>
<codeline lineno="767"><highlight class="normal"></highlight></codeline>
<codeline lineno="768"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(memcmp(value,<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>,<sp/>length<sp/>*<sp/>type_size)<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="769"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="770"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="771"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="772"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="773"><highlight class="normal"></highlight></codeline>
<codeline lineno="774"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="775"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>define<sp/>attribute:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="776"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>attribute<sp/>exists\n&quot;</highlight><highlight class="normal">,<sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="777"><highlight class="normal"></highlight></codeline>
<codeline lineno="778"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="779"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="780"><highlight class="normal"></highlight></codeline>
<codeline lineno="781"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(_cds_define_att(parent,<sp/>name,<sp/>type,<sp/>length,<sp/>value));</highlight></codeline>
<codeline lineno="782"><highlight class="normal">}</highlight></codeline>
<codeline lineno="783"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="784"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="785"><highlight class="comment"><sp/>*<sp/><sp/>Define<sp/>a<sp/>CDS<sp/>Text<sp/>Attribute.</highlight></codeline>
<codeline lineno="786"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="787"><highlight class="comment"><sp/>*<sp/><sp/>See<sp/>cds_define_att()<sp/>for<sp/>details.</highlight></codeline>
<codeline lineno="788"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="789"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="790"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="791"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="792"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>CDSGroup<sp/>or<sp/>CDSVar</highlight></codeline>
<codeline lineno="793"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="794"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>format<sp/><sp/><sp/>-<sp/>format<sp/>string<sp/>(see<sp/>printf)</highlight></codeline>
<codeline lineno="795"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>...<sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>arguments<sp/>for<sp/>the<sp/>format<sp/>string</highlight></codeline>
<codeline lineno="796"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="797"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="798"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>new<sp/>attribute</highlight></codeline>
<codeline lineno="799"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="800"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>object<sp/>is<sp/>not<sp/>a<sp/>group<sp/>or<sp/>variable</highlight></codeline>
<codeline lineno="801"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="802"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="803"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>an<sp/>attribute<sp/>with<sp/>the<sp/>same<sp/>name<sp/>but<sp/>a<sp/>differnt<sp/>value</highlight></codeline>
<codeline lineno="804"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>has<sp/>already<sp/>been<sp/>defined</highlight></codeline>
<codeline lineno="805"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="806" refid="group__CDS__ATTS_1ga7b36c8316148acb19b4cc7e5ebeecf3e" refkind="member"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*<ref refid="group__CDS__ATTS_1ga7b36c8316148acb19b4cc7e5ebeecf3e" kindref="member" tooltip="Define a CDS Text Attribute.">cds_define_att_text</ref>(</highlight></codeline>
<codeline lineno="807"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*parent,</highlight></codeline>
<codeline lineno="808"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*name,</highlight></codeline>
<codeline lineno="809"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*format,<sp/>...)</highlight></codeline>
<codeline lineno="810"><highlight class="normal">{</highlight></codeline>
<codeline lineno="811"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/><sp/>args;</highlight></codeline>
<codeline lineno="812"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/>*att;</highlight></codeline>
<codeline lineno="813"><highlight class="normal"></highlight></codeline>
<codeline lineno="814"><highlight class="normal"><sp/><sp/><sp/><sp/>va_start(args,<sp/>format);</highlight></codeline>
<codeline lineno="815"><highlight class="normal"><sp/><sp/><sp/><sp/>att<sp/>=<sp/><ref refid="group__CDS__ATTS_1ga9f04075406c6dff4ba4f49cafd415653" kindref="member" tooltip="Define a CDS Text Attribute.">cds_define_att_va_list</ref>(parent,<sp/>name,<sp/>format,<sp/>args);</highlight></codeline>
<codeline lineno="816"><highlight class="normal"><sp/><sp/><sp/><sp/>va_end(args);</highlight></codeline>
<codeline lineno="817"><highlight class="normal"></highlight></codeline>
<codeline lineno="818"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="819"><highlight class="normal">}</highlight></codeline>
<codeline lineno="820"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="821"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="822"><highlight class="comment"><sp/>*<sp/><sp/>Define<sp/>a<sp/>CDS<sp/>Text<sp/>Attribute.</highlight></codeline>
<codeline lineno="823"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="824"><highlight class="comment"><sp/>*<sp/><sp/>See<sp/>cds_define_att()<sp/>for<sp/>details.</highlight></codeline>
<codeline lineno="825"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="826"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="827"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="828"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="829"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>CDSGroup<sp/>or<sp/>CDSVar</highlight></codeline>
<codeline lineno="830"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="831"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>format<sp/><sp/><sp/>-<sp/>format<sp/>string<sp/>(see<sp/>printf)</highlight></codeline>
<codeline lineno="832"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>args<sp/><sp/><sp/><sp/><sp/>-<sp/>arguments<sp/>for<sp/>the<sp/>format<sp/>string</highlight></codeline>
<codeline lineno="833"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="834"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="835"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>new<sp/>attribute</highlight></codeline>
<codeline lineno="836"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="837"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>object<sp/>is<sp/>not<sp/>a<sp/>group<sp/>or<sp/>variable</highlight></codeline>
<codeline lineno="838"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="839"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="840"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>an<sp/>attribute<sp/>with<sp/>the<sp/>same<sp/>name<sp/>but<sp/>a<sp/>differnt<sp/>value</highlight></codeline>
<codeline lineno="841"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>has<sp/>already<sp/>been<sp/>defined</highlight></codeline>
<codeline lineno="842"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="843" refid="group__CDS__ATTS_1ga9f04075406c6dff4ba4f49cafd415653" refkind="member"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*<ref refid="group__CDS__ATTS_1ga9f04075406c6dff4ba4f49cafd415653" kindref="member" tooltip="Define a CDS Text Attribute.">cds_define_att_va_list</ref>(</highlight></codeline>
<codeline lineno="844"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*parent,</highlight></codeline>
<codeline lineno="845"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*name,</highlight></codeline>
<codeline lineno="846"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*format,</highlight></codeline>
<codeline lineno="847"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/><sp/><sp/><sp/><sp/>args)</highlight></codeline>
<codeline lineno="848"><highlight class="normal">{</highlight></codeline>
<codeline lineno="849"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/><sp/>*att_text;</highlight></codeline>
<codeline lineno="850"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/>att_length;</highlight></codeline>
<codeline lineno="851"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att;</highlight></codeline>
<codeline lineno="852"><highlight class="normal"></highlight></codeline>
<codeline lineno="853"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Create<sp/>text<sp/>string<sp/>from<sp/>format<sp/>string<sp/>and<sp/>argument<sp/>list<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="854"><highlight class="normal"></highlight></codeline>
<codeline lineno="855"><highlight class="normal"><sp/><sp/><sp/><sp/>att_text<sp/>=<sp/><ref refid="group__MSNGRUtils_1gaa0c8d48f0c3b84e6c2031296fdba1ced" kindref="member" external="libmsngr.tag">msngr_format_va_list</ref>(format,<sp/>args);</highlight></codeline>
<codeline lineno="856"><highlight class="normal"></highlight></codeline>
<codeline lineno="857"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att_text)<sp/>{</highlight></codeline>
<codeline lineno="858"><highlight class="normal"></highlight></codeline>
<codeline lineno="859"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="860"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>define<sp/>attribute:<sp/>%s/_atts_/%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="861"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="862"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(parent),<sp/>name);</highlight></codeline>
<codeline lineno="863"><highlight class="normal"></highlight></codeline>
<codeline lineno="864"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att_text);</highlight></codeline>
<codeline lineno="865"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="866"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="867"><highlight class="normal"></highlight></codeline>
<codeline lineno="868"><highlight class="normal"><sp/><sp/><sp/><sp/>att_length<sp/>=<sp/>strlen(att_text)<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="869"><highlight class="normal"></highlight></codeline>
<codeline lineno="870"><highlight class="normal"><sp/><sp/><sp/><sp/>att<sp/>=<sp/><ref refid="group__CDS__ATTS_1gaf27b41b4756715ec7f4f2bf55d8f04ae" kindref="member" tooltip="Define a CDS Attribute.">cds_define_att</ref>(parent,<sp/>name,<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>,<sp/>att_length,<sp/>att_text);</highlight></codeline>
<codeline lineno="871"><highlight class="normal"></highlight></codeline>
<codeline lineno="872"><highlight class="normal"><sp/><sp/><sp/><sp/>free(att_text);</highlight></codeline>
<codeline lineno="873"><highlight class="normal"></highlight></codeline>
<codeline lineno="874"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="875"><highlight class="normal">}</highlight></codeline>
<codeline lineno="876"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="877"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="878"><highlight class="comment"><sp/>*<sp/><sp/>Delete<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="879"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="880"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="881"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="882"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="883"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="884"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="885"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="886"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>the<sp/>attribute<sp/>was<sp/>deleted</highlight></codeline>
<codeline lineno="887"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="888"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="889"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="890"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="891" refid="group__CDS__ATTS_1ga28ef4c973ff739f9f82fe699120781d0" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1ga28ef4c973ff739f9f82fe699120781d0" kindref="member" tooltip="Delete a CDS Attribute.">cds_delete_att</ref>(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att)</highlight></codeline>
<codeline lineno="892"><highlight class="normal">{</highlight></codeline>
<codeline lineno="893"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSObject" kindref="compound" tooltip="CDS Object.">CDSObject</ref><sp/>*parent<sp/>=<sp/>att-&gt;<ref refid="structCDSAtt_1a2726b9dbee1cce1fbc98e289652011e0" kindref="member" tooltip="parent object">parent</ref>;</highlight></codeline>
<codeline lineno="894"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/><sp/>*group;</highlight></codeline>
<codeline lineno="895"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/><sp/><sp/><sp/>*var;</highlight></codeline>
<codeline lineno="896"><highlight class="normal"></highlight></codeline>
<codeline lineno="897"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>attribute<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="898"><highlight class="normal"></highlight></codeline>
<codeline lineno="899"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="900"><highlight class="normal"></highlight></codeline>
<codeline lineno="901"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="902"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>delete<sp/>attribute:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="903"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>attribute<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="904"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="905"><highlight class="normal"></highlight></codeline>
<codeline lineno="906"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="907"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="908"><highlight class="normal"></highlight></codeline>
<codeline lineno="909"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>parent<sp/>is<sp/>a<sp/>group<sp/>or<sp/>variable<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="910"><highlight class="normal"></highlight></codeline>
<codeline lineno="911"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaae346ad91fb8e19e10a06f9657e759a76" kindref="member" tooltip="CDS Group.">CDS_GROUP</ref>)<sp/>{</highlight></codeline>
<codeline lineno="912"><highlight class="normal"></highlight></codeline>
<codeline lineno="913"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>group<sp/>=<sp/>(<ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/>*)att-&gt;<ref refid="structCDSAtt_1a2726b9dbee1cce1fbc98e289652011e0" kindref="member" tooltip="parent object">parent</ref>;</highlight></codeline>
<codeline lineno="914"><highlight class="normal"></highlight></codeline>
<codeline lineno="915"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>group<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="916"><highlight class="normal"></highlight></codeline>
<codeline lineno="917"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(group-&gt;<ref refid="structCDSGroup_1a8dd7c7d100b4ada1a2399c88e3560659" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="918"><highlight class="normal"></highlight></codeline>
<codeline lineno="919"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="920"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>delete<sp/>attribute:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="921"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>group<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="922"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>group-&gt;<ref refid="structCDSGroup_1a8dd7c7d100b4ada1a2399c88e3560659" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="923"><highlight class="normal"></highlight></codeline>
<codeline lineno="924"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="925"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="926"><highlight class="normal"></highlight></codeline>
<codeline lineno="927"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Remove<sp/>this<sp/>attribute<sp/>from<sp/>the<sp/>parent<sp/>object<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="928"><highlight class="normal"></highlight></codeline>
<codeline lineno="929"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>_cds_remove_object((</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>**)group-&gt;<ref refid="structCDSGroup_1a836c587076bca85c235aa5c1951e239c" kindref="member" tooltip="array of attribute pointers">atts</ref>,<sp/>&amp;(group-&gt;<ref refid="structCDSGroup_1a97f8c11e2d407a31eedc9decc82f0ef8" kindref="member" tooltip="number of attributes">natts</ref>),<sp/>att);</highlight></codeline>
<codeline lineno="930"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="931"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaaafaf8c72959801414d03d415ea42bbf4" kindref="member" tooltip="CDS Variable.">CDS_VAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="932"><highlight class="normal"></highlight></codeline>
<codeline lineno="933"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>var<sp/>=<sp/>(<ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/>*)att-&gt;<ref refid="structCDSAtt_1a2726b9dbee1cce1fbc98e289652011e0" kindref="member" tooltip="parent object">parent</ref>;</highlight></codeline>
<codeline lineno="934"><highlight class="normal"></highlight></codeline>
<codeline lineno="935"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>variable<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="936"><highlight class="normal"></highlight></codeline>
<codeline lineno="937"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(var-&gt;<ref refid="structCDSVar_1a3b6395c1e86c46417319ff208863accc" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="938"><highlight class="normal"></highlight></codeline>
<codeline lineno="939"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="940"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>delete<sp/>attribute:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="941"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>variable<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="942"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>var-&gt;<ref refid="structCDSVar_1a3b6395c1e86c46417319ff208863accc" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="943"><highlight class="normal"></highlight></codeline>
<codeline lineno="944"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="945"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="946"><highlight class="normal"></highlight></codeline>
<codeline lineno="947"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Remove<sp/>this<sp/>attribute<sp/>from<sp/>the<sp/>parent<sp/>object<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="948"><highlight class="normal"></highlight></codeline>
<codeline lineno="949"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>_cds_remove_object((</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>**)var-&gt;<ref refid="structCDSVar_1ad37aeb7e9b933baa2cd6085ec0d1fb9d" kindref="member" tooltip="array of attribute pointers">atts</ref>,<sp/>&amp;(var-&gt;<ref refid="structCDSVar_1add71ac10012429194082adf806222f49" kindref="member" tooltip="number of attributes">natts</ref>),<sp/>att);</highlight></codeline>
<codeline lineno="950"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="951"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="952"><highlight class="normal"></highlight></codeline>
<codeline lineno="953"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="954"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>delete<sp/>attribute:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="955"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>parent<sp/>object<sp/>must<sp/>be<sp/>a<sp/>group<sp/>or<sp/>variable\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="956"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="957"><highlight class="normal"></highlight></codeline>
<codeline lineno="958"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="959"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="960"><highlight class="normal"></highlight></codeline>
<codeline lineno="961"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Destroy<sp/>the<sp/>attribute<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="962"><highlight class="normal"></highlight></codeline>
<codeline lineno="963"><highlight class="normal"><sp/><sp/><sp/><sp/>_cds_destroy_att(att);</highlight></codeline>
<codeline lineno="964"><highlight class="normal"></highlight></codeline>
<codeline lineno="965"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="966"><highlight class="normal">}</highlight></codeline>
<codeline lineno="967"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="968"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="969"><highlight class="comment"><sp/>*<sp/><sp/>Get<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="970"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="971"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>search<sp/>the<sp/>specified<sp/>parent<sp/>group</highlight></codeline>
<codeline lineno="972"><highlight class="comment"><sp/>*<sp/><sp/>or<sp/>variable<sp/>for<sp/>an<sp/>attribute<sp/>with<sp/>the<sp/>specified<sp/>name.</highlight></codeline>
<codeline lineno="973"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="974"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable</highlight></codeline>
<codeline lineno="975"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/>-<sp/>name<sp/>of<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="976"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="977"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="978"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="979"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if<sp/>not<sp/>found</highlight></codeline>
<codeline lineno="980"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="981" refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" refkind="member"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*<ref refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" kindref="member" tooltip="Get a CDS Attribute.">cds_get_att</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*parent,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*name)</highlight></codeline>
<codeline lineno="982"><highlight class="normal">{</highlight></codeline>
<codeline lineno="983"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSObject" kindref="compound" tooltip="CDS Object.">CDSObject</ref><sp/>*parent_object<sp/>=<sp/>(<ref refid="structCDSObject" kindref="compound" tooltip="CDS Object.">CDSObject</ref><sp/>*)parent;</highlight></codeline>
<codeline lineno="984"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/>*att<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL;</highlight></codeline>
<codeline lineno="985"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/><sp/>*group;</highlight></codeline>
<codeline lineno="986"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/><sp/><sp/><sp/>*var;</highlight></codeline>
<codeline lineno="987"><highlight class="normal"></highlight></codeline>
<codeline lineno="988"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent_object-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaae346ad91fb8e19e10a06f9657e759a76" kindref="member" tooltip="CDS Group.">CDS_GROUP</ref>)<sp/>{</highlight></codeline>
<codeline lineno="989"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>group<sp/>=<sp/>(<ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/>*)parent;</highlight></codeline>
<codeline lineno="990"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att<sp/><sp/><sp/>=<sp/>_cds_get_object((</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>**)group-&gt;<ref refid="structCDSGroup_1a836c587076bca85c235aa5c1951e239c" kindref="member" tooltip="array of attribute pointers">atts</ref>,<sp/>group-&gt;<ref refid="structCDSGroup_1a97f8c11e2d407a31eedc9decc82f0ef8" kindref="member" tooltip="number of attributes">natts</ref>,<sp/>name);</highlight></codeline>
<codeline lineno="991"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="992"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent_object-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaaafaf8c72959801414d03d415ea42bbf4" kindref="member" tooltip="CDS Variable.">CDS_VAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="993"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>var<sp/>=<sp/>(<ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/>*)parent;</highlight></codeline>
<codeline lineno="994"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att<sp/>=<sp/>_cds_get_object((</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>**)var-&gt;<ref refid="structCDSVar_1ad37aeb7e9b933baa2cd6085ec0d1fb9d" kindref="member" tooltip="array of attribute pointers">atts</ref>,<sp/>var-&gt;<ref refid="structCDSVar_1add71ac10012429194082adf806222f49" kindref="member" tooltip="number of attributes">natts</ref>,<sp/>name);</highlight></codeline>
<codeline lineno="995"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="996"><highlight class="normal"></highlight></codeline>
<codeline lineno="997"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="998"><highlight class="normal">}</highlight></codeline>
<codeline lineno="999"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="1000"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="1001"><highlight class="comment"><sp/>*<sp/><sp/>Get<sp/>a<sp/>copy<sp/>of<sp/>a<sp/>CDS<sp/>attribute<sp/>value.</highlight></codeline>
<codeline lineno="1002"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1003"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>get<sp/>a<sp/>copy<sp/>of<sp/>an<sp/>attribute<sp/>value<sp/>casted<sp/>into</highlight></codeline>
<codeline lineno="1004"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>specified<sp/>data<sp/>type.<sp/>The<sp/>functions<sp/>cds_string_to_array()<sp/>and</highlight></codeline>
<codeline lineno="1005"><highlight class="comment"><sp/>*<sp/><sp/>cds_array_to_string()<sp/>are<sp/>used<sp/>to<sp/>convert<sp/>between<sp/>text<sp/>(CDS_CHAR)</highlight></codeline>
<codeline lineno="1006"><highlight class="comment"><sp/>*<sp/><sp/>and<sp/>numeric<sp/>data<sp/>types.</highlight></codeline>
<codeline lineno="1007"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1008"><highlight class="comment"><sp/>*<sp/><sp/>Memory<sp/>will<sp/>be<sp/>allocated<sp/>for<sp/>the<sp/>returned<sp/>array<sp/>if<sp/>the<sp/>output<sp/>array</highlight></codeline>
<codeline lineno="1009"><highlight class="comment"><sp/>*<sp/><sp/>is<sp/>NULL.<sp/>In<sp/>this<sp/>case<sp/>the<sp/>calling<sp/>process<sp/>is<sp/>responsible<sp/>for<sp/>freeing</highlight></codeline>
<codeline lineno="1010"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>allocated<sp/>memory.</highlight></codeline>
<codeline lineno="1011"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1012"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message<sp/>handler</highlight></codeline>
<codeline lineno="1013"><highlight class="comment"><sp/>*<sp/><sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="1014"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1015"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1016"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/>-<sp/>data<sp/>type<sp/>of<sp/>the<sp/>output<sp/>array</highlight></codeline>
<codeline lineno="1017"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>length<sp/>of<sp/>the<sp/>output<sp/>array</highlight></codeline>
<codeline lineno="1018"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>input:</highlight></codeline>
<codeline lineno="1019"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>length<sp/>of<sp/>the<sp/>output<sp/>array</highlight></codeline>
<codeline lineno="1020"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>ignored<sp/>if<sp/>the<sp/>output<sp/>array<sp/>is<sp/>NULL</highlight></codeline>
<codeline lineno="1021"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>output:</highlight></codeline>
<codeline lineno="1022"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>number<sp/>of<sp/>values<sp/>written<sp/>to<sp/>the<sp/>output<sp/>array</highlight></codeline>
<codeline lineno="1023"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>0<sp/>if<sp/>the<sp/>attribute<sp/>value<sp/>has<sp/>zero<sp/>length</highlight></codeline>
<codeline lineno="1024"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>(size_t)-1<sp/>if<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurs</highlight></codeline>
<codeline lineno="1025"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>output<sp/>array</highlight></codeline>
<codeline lineno="1026"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>or<sp/>NULL<sp/>to<sp/>dynamically<sp/>allocate<sp/>the<sp/>memory<sp/>needed.</highlight></codeline>
<codeline lineno="1027"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1028"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="1029"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>output<sp/>array</highlight></codeline>
<codeline lineno="1030"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="1031"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>value<sp/>has<sp/>zero<sp/>length<sp/>(length<sp/>==<sp/>0)</highlight></codeline>
<codeline lineno="1032"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurs<sp/>(length<sp/>==<sp/>(size_t)-1)</highlight></codeline>
<codeline lineno="1033"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1034" refid="group__CDS__ATTS_1ga1070518e6574e2bc60a9e13c1d7932e9" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="group__CDS__ATTS_1ga1070518e6574e2bc60a9e13c1d7932e9" kindref="member" tooltip="Get a copy of a CDS attribute value.">cds_get_att_value</ref>(</highlight></codeline>
<codeline lineno="1035"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="1036"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/><sp/>type,</highlight></codeline>
<codeline lineno="1037"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*length,</highlight></codeline>
<codeline lineno="1038"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="1039"><highlight class="normal">{</highlight></codeline>
<codeline lineno="1040"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/>out_length;</highlight></codeline>
<codeline lineno="1041"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/>*out_min;</highlight></codeline>
<codeline lineno="1042"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/>*out_max;</highlight></codeline>
<codeline lineno="1043"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/>*out_fill;</highlight></codeline>
<codeline lineno="1044"><highlight class="normal"></highlight></codeline>
<codeline lineno="1045"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>attribute<sp/>has<sp/>a<sp/>value<sp/>defined<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1046"><highlight class="normal"></highlight></codeline>
<codeline lineno="1047"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/>||<sp/>!att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1048"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(length)<sp/>*length<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="1049"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL);</highlight></codeline>
<codeline lineno="1050"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1051"><highlight class="normal"></highlight></codeline>
<codeline lineno="1052"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Get<sp/>attribute<sp/>value<sp/>casted<sp/>to<sp/>the<sp/>requested<sp/>data<sp/>type<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1053"><highlight class="normal"></highlight></codeline>
<codeline lineno="1054"><highlight class="normal"><sp/><sp/><sp/><sp/>out_length<sp/>=<sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref>;</highlight></codeline>
<codeline lineno="1055"><highlight class="normal"></highlight></codeline>
<codeline lineno="1056"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value<sp/>&amp;&amp;<sp/>length<sp/>&amp;&amp;<sp/>*length<sp/>&gt;<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="1057"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(out_length<sp/>&gt;<sp/>*length)<sp/>{</highlight></codeline>
<codeline lineno="1058"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out_length<sp/>=<sp/>*length;</highlight></codeline>
<codeline lineno="1059"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1060"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1061"><highlight class="normal"></highlight></codeline>
<codeline lineno="1062"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(type<sp/>==<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1063"><highlight class="normal"></highlight></codeline>
<codeline lineno="1064"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/>==<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1065"><highlight class="normal"></highlight></codeline>
<codeline lineno="1066"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!value)<sp/>{</highlight></codeline>
<codeline lineno="1067"><highlight class="normal"></highlight></codeline>
<codeline lineno="1068"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>=<sp/>calloc(out_length<sp/>+<sp/>1,<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">char</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="1069"><highlight class="normal"></highlight></codeline>
<codeline lineno="1070"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!value)<sp/>{</highlight></codeline>
<codeline lineno="1071"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out_length<sp/>=<sp/>(size_t)-1;</highlight></codeline>
<codeline lineno="1072"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1073"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1074"><highlight class="normal"></highlight></codeline>
<codeline lineno="1075"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value)<sp/>{</highlight></codeline>
<codeline lineno="1076"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>memcpy(value,<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>,<sp/>out_length<sp/>*<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">char</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="1077"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1078"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1079"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="1080"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)<ref refid="group__CDS__CORE__UTILITIES_1gaece5f6c14e872595100deb6b89af718a" kindref="member" tooltip="Convert an array of values to a text string.">cds_array_to_string</ref>(</highlight></codeline>
<codeline lineno="1081"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref>,<sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref>,<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>,<sp/>&amp;out_length,<sp/>value);</highlight></codeline>
<codeline lineno="1082"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1083"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1084"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref><sp/>==<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1085"><highlight class="normal"></highlight></codeline>
<codeline lineno="1086"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="group__CDS__ATTS_1gae38952ede25c8650f4f9b1985fca652d" kindref="member" tooltip="Check if an attribute name is one of the known variations of &amp;quot;missing_value&amp;quot;.">cds_is_missing_value_att_name</ref>(att-&gt;<ref refid="structCDSAtt_1a5df5fb385eb3817ac7f81dcc01d34a9b" kindref="member" tooltip="object name">name</ref>))<sp/>{</highlight></codeline>
<codeline lineno="1087"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1gacfd4713529fdc6bdf9062ebdd0d05956" kindref="member" tooltip="Convert a text string to an array of values.">cds_string_to_array_use_fill</ref>(</highlight></codeline>
<codeline lineno="1088"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1a9d88223a072d7ade9783a72c1d0f9f1e" kindref="member" tooltip="char: ISO/ASCII character">cp</ref>,<sp/>type,<sp/>&amp;out_length,<sp/>value);</highlight></codeline>
<codeline lineno="1089"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1090"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="1091"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1ga615d7908bc96cd6ab8066a3079c92153" kindref="member" tooltip="Convert a text string to an array of values.">cds_string_to_array</ref>(</highlight></codeline>
<codeline lineno="1092"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1a9d88223a072d7ade9783a72c1d0f9f1e" kindref="member" tooltip="char: ISO/ASCII character">cp</ref>,<sp/>type,<sp/>&amp;out_length,<sp/>value);</highlight></codeline>
<codeline lineno="1093"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1094"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1095"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="1096"><highlight class="normal"></highlight></codeline>
<codeline lineno="1097"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(type<sp/>&lt;<sp/>att-&gt;type)<sp/>{</highlight></codeline>
<codeline lineno="1098"><highlight class="normal"></highlight></codeline>
<codeline lineno="1099"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out_fill<sp/>=<sp/>_cds_default_fill_value(type);</highlight></codeline>
<codeline lineno="1100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out_min<sp/><sp/>=<sp/>_cds_data_type_min(type);</highlight></codeline>
<codeline lineno="1101"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out_max<sp/><sp/>=<sp/>_cds_data_type_max(type);</highlight></codeline>
<codeline lineno="1102"><highlight class="normal"></highlight></codeline>
<codeline lineno="1103"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="group__CDS__ATTS_1gae38952ede25c8650f4f9b1985fca652d" kindref="member" tooltip="Check if an attribute name is one of the known variations of &amp;quot;missing_value&amp;quot;.">cds_is_missing_value_att_name</ref>(att-&gt;<ref refid="structCDSAtt_1a5df5fb385eb3817ac7f81dcc01d34a9b" kindref="member" tooltip="object name">name</ref>))<sp/>{</highlight></codeline>
<codeline lineno="1104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1gaecb1f48c358835631d53c48efd82ecf6" kindref="member" tooltip="Create a copy of an array of data.">cds_copy_array</ref>(</highlight></codeline>
<codeline lineno="1105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref>,<sp/>out_length,<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>,<sp/>type,<sp/>value,</highlight></codeline>
<codeline lineno="1106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0,<sp/>NULL,<sp/>NULL,<sp/>out_min,<sp/>out_fill,<sp/>out_max,<sp/>out_fill);</highlight></codeline>
<codeline lineno="1107"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="1109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1gaecb1f48c358835631d53c48efd82ecf6" kindref="member" tooltip="Create a copy of an array of data.">cds_copy_array</ref>(</highlight></codeline>
<codeline lineno="1110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref>,<sp/>out_length,<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>,<sp/>type,<sp/>value,</highlight></codeline>
<codeline lineno="1111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0,<sp/>NULL,<sp/>NULL,<sp/>out_min,<sp/>out_min,<sp/>out_max,<sp/>out_max);</highlight></codeline>
<codeline lineno="1112"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1113"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1114"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="1115"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value<sp/>=<sp/><ref refid="group__CDS__CORE__UTILITIES_1gaecb1f48c358835631d53c48efd82ecf6" kindref="member" tooltip="Create a copy of an array of data.">cds_copy_array</ref>(</highlight></codeline>
<codeline lineno="1116"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5f6e0c56a1e7e35767539e69727940d6" kindref="member" tooltip="attribute data type">type</ref>,<sp/>out_length,<sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>,<sp/>type,<sp/>value,</highlight></codeline>
<codeline lineno="1117"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0,<sp/>NULL,<sp/>NULL,<sp/>NULL,<sp/>NULL,<sp/>NULL,<sp/>NULL);</highlight></codeline>
<codeline lineno="1118"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1119"><highlight class="normal"></highlight></codeline>
<codeline lineno="1120"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!value)<sp/>{</highlight></codeline>
<codeline lineno="1121"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>out_length<sp/>=<sp/>(size_t)-1;</highlight></codeline>
<codeline lineno="1122"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1123"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1124"><highlight class="normal"></highlight></codeline>
<codeline lineno="1125"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(length)<sp/>*length<sp/>=<sp/>out_length;</highlight></codeline>
<codeline lineno="1126"><highlight class="normal"></highlight></codeline>
<codeline lineno="1127"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(out_length<sp/>==<sp/>(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal">)-1)<sp/>{</highlight></codeline>
<codeline lineno="1128"><highlight class="normal"></highlight></codeline>
<codeline lineno="1129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>get<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,<sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="1132"><highlight class="normal"></highlight></codeline>
<codeline lineno="1133"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL);</highlight></codeline>
<codeline lineno="1134"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1135"><highlight class="normal"></highlight></codeline>
<codeline lineno="1136"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(value);</highlight></codeline>
<codeline lineno="1137"><highlight class="normal">}</highlight></codeline>
<codeline lineno="1138"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="1139"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="1140"><highlight class="comment"><sp/>*<sp/><sp/>Get<sp/>a<sp/>copy<sp/>of<sp/>a<sp/>CDS<sp/>attribute<sp/>value.</highlight></codeline>
<codeline lineno="1141"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1142"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>get<sp/>a<sp/>copy<sp/>of<sp/>an<sp/>attribute<sp/>value<sp/>converted</highlight></codeline>
<codeline lineno="1143"><highlight class="comment"><sp/>*<sp/><sp/>to<sp/>a<sp/>text<sp/>string.<sp/>If<sp/>the<sp/>data<sp/>type<sp/>of<sp/>the<sp/>attribute<sp/>is<sp/>not</highlight></codeline>
<codeline lineno="1144"><highlight class="comment"><sp/>*<sp/><sp/>CDS_CHAR<sp/>the<sp/>cds_array_to_string()<sp/>function<sp/>is<sp/>used<sp/>to<sp/>create</highlight></codeline>
<codeline lineno="1145"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>output<sp/>string.</highlight></codeline>
<codeline lineno="1146"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1147"><highlight class="comment"><sp/>*<sp/><sp/>Memory<sp/>will<sp/>be<sp/>allocated<sp/>for<sp/>the<sp/>returned<sp/>string<sp/>if<sp/>the<sp/>output<sp/>string</highlight></codeline>
<codeline lineno="1148"><highlight class="comment"><sp/>*<sp/><sp/>is<sp/>NULL.<sp/>In<sp/>this<sp/>case<sp/>the<sp/>calling<sp/>process<sp/>is<sp/>responsible<sp/>for<sp/>freeing</highlight></codeline>
<codeline lineno="1149"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>allocated<sp/>memory.</highlight></codeline>
<codeline lineno="1150"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1151"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message<sp/>handler</highlight></codeline>
<codeline lineno="1152"><highlight class="comment"><sp/>*<sp/><sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="1153"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1154"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1155"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>length<sp/>of<sp/>the<sp/>output<sp/>string</highlight></codeline>
<codeline lineno="1156"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>input:</highlight></codeline>
<codeline lineno="1157"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>length<sp/>of<sp/>the<sp/>output<sp/>string</highlight></codeline>
<codeline lineno="1158"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>ignored<sp/>if<sp/>the<sp/>output<sp/>string<sp/>is<sp/>NULL</highlight></codeline>
<codeline lineno="1159"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>output:</highlight></codeline>
<codeline lineno="1160"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>number<sp/>of<sp/>characters<sp/>written<sp/>to<sp/>the<sp/>output<sp/>string</highlight></codeline>
<codeline lineno="1161"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>0<sp/>if<sp/>the<sp/>attribute<sp/>value<sp/>has<sp/>zero<sp/>length</highlight></codeline>
<codeline lineno="1162"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>(size_t)-1<sp/>if<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurs</highlight></codeline>
<codeline lineno="1163"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>output<sp/>string</highlight></codeline>
<codeline lineno="1164"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>or<sp/>NULL<sp/>to<sp/>dynamically<sp/>allocate<sp/>the<sp/>memory<sp/>needed.</highlight></codeline>
<codeline lineno="1165"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1166"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="1167"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>output<sp/>string</highlight></codeline>
<codeline lineno="1168"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="1169"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>value<sp/>has<sp/>zero<sp/>length<sp/>(length<sp/>==<sp/>0)</highlight></codeline>
<codeline lineno="1170"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurs<sp/>(length<sp/>==<sp/>(size_t)-1)</highlight></codeline>
<codeline lineno="1171"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1172" refid="group__CDS__ATTS_1ga2a9f858330971441aa7e9d12690ba9e4" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*<ref refid="group__CDS__ATTS_1ga2a9f858330971441aa7e9d12690ba9e4" kindref="member" tooltip="Get a copy of a CDS attribute value.">cds_get_att_text</ref>(</highlight></codeline>
<codeline lineno="1173"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att,</highlight></codeline>
<codeline lineno="1174"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>*length,</highlight></codeline>
<codeline lineno="1175"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="1176"><highlight class="normal">{</highlight></codeline>
<codeline lineno="1177"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((</highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*)<ref refid="group__CDS__ATTS_1ga1070518e6574e2bc60a9e13c1d7932e9" kindref="member" tooltip="Get a copy of a CDS attribute value.">cds_get_att_value</ref>(att,<sp/><ref refid="group__CDS__DATA__TYPES_1ggaf9b792da04e0b823868cf48a01503f0ba965c2d26bf80e13cf899fdb0ad4323fa" kindref="member" tooltip="ISO/ASCII character.">CDS_CHAR</ref>,<sp/>length,<sp/>value));</highlight></codeline>
<codeline lineno="1178"><highlight class="normal">}</highlight></codeline>
<codeline lineno="1179"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="1180"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="1181"><highlight class="comment"><sp/>*<sp/><sp/>Rename<sp/>a<sp/>CDS<sp/>Attribute.</highlight></codeline>
<codeline lineno="1182"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1183"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="1184"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="1185"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1186"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1187"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>new<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="1188"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1189"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="1190"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>the<sp/>attribute<sp/>was<sp/>deleted</highlight></codeline>
<codeline lineno="1191"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="1192"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>an<sp/>attribute<sp/>with<sp/>the<sp/>new<sp/>name<sp/>already<sp/>exists</highlight></codeline>
<codeline lineno="1193"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="1194"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="1195"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occured</highlight></codeline>
<codeline lineno="1196"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1197" refid="group__CDS__ATTS_1ga9d0f1e80d02c080628fe857123b3f51b" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1ga9d0f1e80d02c080628fe857123b3f51b" kindref="member" tooltip="Rename a CDS Attribute.">cds_rename_att</ref>(<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*name)</highlight></codeline>
<codeline lineno="1198"><highlight class="normal">{</highlight></codeline>
<codeline lineno="1199"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSObject" kindref="compound" tooltip="CDS Object.">CDSObject</ref><sp/>*parent<sp/>=<sp/>att-&gt;<ref refid="structCDSAtt_1a2726b9dbee1cce1fbc98e289652011e0" kindref="member" tooltip="parent object">parent</ref>;</highlight></codeline>
<codeline lineno="1200"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/><sp/>*group;</highlight></codeline>
<codeline lineno="1201"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/><sp/><sp/><sp/>*var;</highlight></codeline>
<codeline lineno="1202"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>*new_name;</highlight></codeline>
<codeline lineno="1203"><highlight class="normal"></highlight></codeline>
<codeline lineno="1204"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>an<sp/>attribute<sp/>with<sp/>the<sp/>new<sp/>name<sp/>already<sp/>exists<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1205"><highlight class="normal"></highlight></codeline>
<codeline lineno="1206"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" kindref="member" tooltip="Get a CDS Attribute.">cds_get_att</ref>(parent,<sp/>name))<sp/>{</highlight></codeline>
<codeline lineno="1207"><highlight class="normal"></highlight></codeline>
<codeline lineno="1208"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1209"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>rename<sp/>attribute:<sp/>%s<sp/>to<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1210"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>attribute<sp/>exists\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1211"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>name);</highlight></codeline>
<codeline lineno="1212"><highlight class="normal"></highlight></codeline>
<codeline lineno="1213"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1214"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1215"><highlight class="normal"></highlight></codeline>
<codeline lineno="1216"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>attribute<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1217"><highlight class="normal"></highlight></codeline>
<codeline lineno="1218"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1219"><highlight class="normal"></highlight></codeline>
<codeline lineno="1220"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>rename<sp/>attribute:<sp/>%s<sp/>to<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1222"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>attribute<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1223"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>name,<sp/>att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="1224"><highlight class="normal"></highlight></codeline>
<codeline lineno="1225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1226"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1227"><highlight class="normal"></highlight></codeline>
<codeline lineno="1228"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>parent<sp/>is<sp/>a<sp/>group<sp/>or<sp/>variable<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1229"><highlight class="normal"></highlight></codeline>
<codeline lineno="1230"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaae346ad91fb8e19e10a06f9657e759a76" kindref="member" tooltip="CDS Group.">CDS_GROUP</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1231"><highlight class="normal"></highlight></codeline>
<codeline lineno="1232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>group<sp/>=<sp/>(<ref refid="structCDSGroup" kindref="compound" tooltip="CDS Group.">CDSGroup</ref><sp/>*)att-&gt;<ref refid="structCDSAtt_1a2726b9dbee1cce1fbc98e289652011e0" kindref="member" tooltip="parent object">parent</ref>;</highlight></codeline>
<codeline lineno="1233"><highlight class="normal"></highlight></codeline>
<codeline lineno="1234"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>group<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1235"><highlight class="normal"></highlight></codeline>
<codeline lineno="1236"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(group-&gt;<ref refid="structCDSGroup_1a8dd7c7d100b4ada1a2399c88e3560659" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1237"><highlight class="normal"></highlight></codeline>
<codeline lineno="1238"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>rename<sp/>attribute:<sp/>%s<sp/>to<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>group<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>name,<sp/>group-&gt;<ref refid="structCDSGroup_1a8dd7c7d100b4ada1a2399c88e3560659" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="1242"><highlight class="normal"></highlight></codeline>
<codeline lineno="1243"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1245"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1246"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(parent-&gt;<ref refid="structCDSObject_1ac8c688aceb424246bf8c418d69acf272" kindref="member" tooltip="object type">obj_type</ref><sp/>==<sp/><ref refid="group__CDSObject_1gga79150003e74aaf418ddf7db96851cedaaafaf8c72959801414d03d415ea42bbf4" kindref="member" tooltip="CDS Variable.">CDS_VAR</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1247"><highlight class="normal"></highlight></codeline>
<codeline lineno="1248"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>var<sp/>=<sp/>(<ref refid="structCDSVar" kindref="compound" tooltip="CDS Variable.">CDSVar</ref><sp/>*)att-&gt;<ref refid="structCDSAtt_1a2726b9dbee1cce1fbc98e289652011e0" kindref="member" tooltip="parent object">parent</ref>;</highlight></codeline>
<codeline lineno="1249"><highlight class="normal"></highlight></codeline>
<codeline lineno="1250"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>variable<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1251"><highlight class="normal"></highlight></codeline>
<codeline lineno="1252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(var-&gt;<ref refid="structCDSVar_1a3b6395c1e86c46417319ff208863accc" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1253"><highlight class="normal"></highlight></codeline>
<codeline lineno="1254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>rename<sp/>attribute:<sp/>%s<sp/>to<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1256"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>variable<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1257"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>name,<sp/>var-&gt;<ref refid="structCDSVar_1a3b6395c1e86c46417319ff208863accc" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="1258"><highlight class="normal"></highlight></codeline>
<codeline lineno="1259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1260"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1261"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1262"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="1263"><highlight class="normal"></highlight></codeline>
<codeline lineno="1264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1265"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>rename<sp/>attribute:<sp/>%s<sp/>to<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>parent<sp/>object<sp/>must<sp/>be<sp/>a<sp/>group<sp/>or<sp/>variable\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1267"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>name);</highlight></codeline>
<codeline lineno="1268"><highlight class="normal"></highlight></codeline>
<codeline lineno="1269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1270"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1271"><highlight class="normal"></highlight></codeline>
<codeline lineno="1272"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Rename<sp/>the<sp/>attribute<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1273"><highlight class="normal"></highlight></codeline>
<codeline lineno="1274"><highlight class="normal"><sp/><sp/><sp/><sp/>new_name<sp/>=<sp/>strdup(name);</highlight></codeline>
<codeline lineno="1275"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!new_name)<sp/>{</highlight></codeline>
<codeline lineno="1276"><highlight class="normal"></highlight></codeline>
<codeline lineno="1277"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>rename<sp/>attribute:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>memory<sp/>allocation<sp/>error\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att));</highlight></codeline>
<codeline lineno="1281"><highlight class="normal"></highlight></codeline>
<codeline lineno="1282"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1283"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1284"><highlight class="normal"></highlight></codeline>
<codeline lineno="1285"><highlight class="normal"><sp/><sp/><sp/><sp/>free(att-&gt;<ref refid="structCDSAtt_1a5df5fb385eb3817ac7f81dcc01d34a9b" kindref="member" tooltip="object name">name</ref>);</highlight></codeline>
<codeline lineno="1286"><highlight class="normal"><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a5df5fb385eb3817ac7f81dcc01d34a9b" kindref="member" tooltip="object name">name</ref><sp/>=<sp/>new_name;</highlight></codeline>
<codeline lineno="1287"><highlight class="normal"></highlight></codeline>
<codeline lineno="1288"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="1289"><highlight class="normal">}</highlight></codeline>
<codeline lineno="1290"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="1291"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="1292"><highlight class="comment"><sp/>*<sp/><sp/>Set<sp/>an<sp/>attribute<sp/>of<sp/>a<sp/>CDS<sp/>group<sp/>or<sp/>variable.</highlight></codeline>
<codeline lineno="1293"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1294"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>define<sp/>the<sp/>specified<sp/>attribute<sp/>if<sp/>it<sp/>does<sp/>not<sp/>exist.</highlight></codeline>
<codeline lineno="1295"><highlight class="comment"><sp/>*<sp/><sp/>If<sp/>the<sp/>attribute<sp/>does<sp/>exist<sp/>and<sp/>the<sp/>overwrite<sp/>flag<sp/>is<sp/>set,<sp/>the<sp/>value<sp/>will</highlight></codeline>
<codeline lineno="1296"><highlight class="comment"><sp/>*<sp/><sp/>be<sp/>set<sp/>by<sp/>casting<sp/>the<sp/>specified<sp/>value<sp/>into<sp/>the<sp/>data<sp/>type<sp/>of<sp/>the<sp/>attribute.</highlight></codeline>
<codeline lineno="1297"><highlight class="comment"><sp/>*<sp/><sp/>The<sp/>functions<sp/>cds_string_to_array()<sp/>and<sp/>cds_array_to_string()<sp/>are<sp/>used<sp/>to</highlight></codeline>
<codeline lineno="1298"><highlight class="comment"><sp/>*<sp/><sp/>convert<sp/>between<sp/>text<sp/>(CDS_CHAR)<sp/>and<sp/>numeric<sp/>data<sp/>types.</highlight></codeline>
<codeline lineno="1299"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1300"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message<sp/>handler</highlight></codeline>
<codeline lineno="1301"><highlight class="comment"><sp/>*<sp/><sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="1302"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1303"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>parent<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>parent<sp/>CDSGroup<sp/>or<sp/>CDSVar</highlight></codeline>
<codeline lineno="1304"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>overwrite<sp/>-<sp/>overwrite<sp/>flag<sp/>(1<sp/>=<sp/>TRUE,<sp/>0<sp/>=<sp/>FALSE)</highlight></codeline>
<codeline lineno="1305"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>name<sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>name</highlight></codeline>
<codeline lineno="1306"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>data<sp/>type</highlight></codeline>
<codeline lineno="1307"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/><sp/><sp/><sp/>-<sp/>attribute<sp/>length</highlight></codeline>
<codeline lineno="1308"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="1309"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1310"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="1311"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1312"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>NULL<sp/>if:</highlight></codeline>
<codeline lineno="1313"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>object<sp/>is<sp/>not<sp/>a<sp/>group<sp/>or<sp/>variable</highlight></codeline>
<codeline lineno="1314"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>parent<sp/>group<sp/>or<sp/>variable<sp/>is<sp/>locked,<sp/>or<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="1315"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="1316"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1317" refid="group__CDS__ATTS_1ga406e22638c912d5eb06ec6b2c9a9f31f" refkind="member"><highlight class="normal"><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*<ref refid="group__CDS__ATTS_1ga406e22638c912d5eb06ec6b2c9a9f31f" kindref="member" tooltip="Set an attribute of a CDS group or variable.">cds_set_att</ref>(</highlight></codeline>
<codeline lineno="1318"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*parent,</highlight></codeline>
<codeline lineno="1319"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>overwrite,</highlight></codeline>
<codeline lineno="1320"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/><sp/>*name,</highlight></codeline>
<codeline lineno="1321"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="1322"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="1323"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="1324"><highlight class="normal">{</highlight></codeline>
<codeline lineno="1325"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*att;</highlight></codeline>
<codeline lineno="1326"><highlight class="normal"></highlight></codeline>
<codeline lineno="1327"><highlight class="normal"><sp/><sp/><sp/><sp/>att<sp/>=<sp/><ref refid="group__CDS__ATTS_1gac852834efa99bfa716556450d08aaade" kindref="member" tooltip="Get a CDS Attribute.">cds_get_att</ref>(parent,<sp/>name);</highlight></codeline>
<codeline lineno="1328"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att)<sp/>{</highlight></codeline>
<codeline lineno="1329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att<sp/>=<sp/>_cds_define_att(parent,<sp/>name,<sp/>type,<sp/>length,<sp/>value);</highlight></codeline>
<codeline lineno="1330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att)<sp/>{</highlight></codeline>
<codeline lineno="1331"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="1332"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1333"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1334"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/>||<sp/>!att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>||<sp/>overwrite)<sp/>{</highlight></codeline>
<codeline lineno="1335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!<ref refid="group__CDS__ATTS_1gae0a5c7acce6c4e1cdc083907649eb3b6" kindref="member" tooltip="Set the value of a CDS attribute.">cds_set_att_value</ref>(att,<sp/>type,<sp/>length,<sp/>value))<sp/>{</highlight></codeline>
<codeline lineno="1336"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">((<ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/>*)NULL);</highlight></codeline>
<codeline lineno="1337"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1338"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1339"><highlight class="normal"></highlight></codeline>
<codeline lineno="1340"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(att);</highlight></codeline>
<codeline lineno="1341"><highlight class="normal">}</highlight></codeline>
<codeline lineno="1342"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="1343"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="1344"><highlight class="comment"><sp/>*<sp/><sp/>Set<sp/>the<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>attribute.</highlight></codeline>
<codeline lineno="1345"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1346"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>function<sp/>will<sp/>set<sp/>the<sp/>value<sp/>of<sp/>an<sp/>attribute<sp/>by<sp/>casting<sp/>the</highlight></codeline>
<codeline lineno="1347"><highlight class="comment"><sp/>*<sp/><sp/>specified<sp/>value<sp/>into<sp/>the<sp/>data<sp/>type<sp/>of<sp/>the<sp/>attribute.<sp/>The<sp/>functions</highlight></codeline>
<codeline lineno="1348"><highlight class="comment"><sp/>*<sp/><sp/>cds_string_to_array()<sp/>and<sp/>cds_array_to_string()<sp/>are<sp/>used<sp/>to<sp/>convert</highlight></codeline>
<codeline lineno="1349"><highlight class="comment"><sp/>*<sp/><sp/>between<sp/>text<sp/>(CDS_CHAR)<sp/>and<sp/>numeric<sp/>data<sp/>types.</highlight></codeline>
<codeline lineno="1350"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1351"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="1352"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="1353"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1354"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1355"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>type<sp/><sp/><sp/>-<sp/>data<sp/>type<sp/>of<sp/>the<sp/>specified<sp/>value</highlight></codeline>
<codeline lineno="1356"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>length<sp/>-<sp/>length<sp/>of<sp/>the<sp/>specified<sp/>value</highlight></codeline>
<codeline lineno="1357"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>value<sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute<sp/>value</highlight></codeline>
<codeline lineno="1358"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1359"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="1360"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>successful</highlight></codeline>
<codeline lineno="1361"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="1362"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="1363"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="1364"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1365" refid="group__CDS__ATTS_1gae0a5c7acce6c4e1cdc083907649eb3b6" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1gae0a5c7acce6c4e1cdc083907649eb3b6" kindref="member" tooltip="Set the value of a CDS attribute.">cds_set_att_value</ref>(</highlight></codeline>
<codeline lineno="1366"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="1367"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__CDS__DATA__TYPES_1gaf9b792da04e0b823868cf48a01503f0b" kindref="member" tooltip="CDS Data Types.">CDSDataType</ref><sp/><sp/>type,</highlight></codeline>
<codeline lineno="1368"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>length,</highlight></codeline>
<codeline lineno="1369"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*value)</highlight></codeline>
<codeline lineno="1370"><highlight class="normal">{</highlight></codeline>
<codeline lineno="1371"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1372"><highlight class="normal"></highlight></codeline>
<codeline lineno="1373"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1374"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>set<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1375"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>attribute<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1376"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="1377"><highlight class="normal"></highlight></codeline>
<codeline lineno="1378"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1379"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1380"><highlight class="normal"></highlight></codeline>
<codeline lineno="1381"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(_cds_set_att_value(att,<sp/>type,<sp/>length,<sp/>value));</highlight></codeline>
<codeline lineno="1382"><highlight class="normal">}</highlight></codeline>
<codeline lineno="1383"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="1384"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="1385"><highlight class="comment"><sp/>*<sp/><sp/>Set<sp/>the<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>attribute.</highlight></codeline>
<codeline lineno="1386"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1387"><highlight class="comment"><sp/>*<sp/><sp/>The<sp/>cds_string_to_array()<sp/>function<sp/>will<sp/>be<sp/>used<sp/>to<sp/>set<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1388"><highlight class="comment"><sp/>*<sp/><sp/>value<sp/>if<sp/>the<sp/>data<sp/>type<sp/>of<sp/>the<sp/>attribute<sp/>is<sp/>not<sp/>CDS_CHAR.</highlight></codeline>
<codeline lineno="1389"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1390"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="1391"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="1392"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1393"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1394"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>format<sp/>-<sp/>format<sp/>string<sp/>(see<sp/>printf)</highlight></codeline>
<codeline lineno="1395"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>...<sp/><sp/><sp/><sp/>-<sp/>arguments<sp/>for<sp/>the<sp/>format<sp/>string</highlight></codeline>
<codeline lineno="1396"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1397"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="1398"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>successful</highlight></codeline>
<codeline lineno="1399"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="1400"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="1401"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="1402"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1403" refid="group__CDS__ATTS_1gae1748771a20a4ef9a5e14f15a4cccaa1" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1gae1748771a20a4ef9a5e14f15a4cccaa1" kindref="member" tooltip="Set the value of a CDS attribute.">cds_set_att_text</ref>(</highlight></codeline>
<codeline lineno="1404"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="1405"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*format,<sp/>...)</highlight></codeline>
<codeline lineno="1406"><highlight class="normal">{</highlight></codeline>
<codeline lineno="1407"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/>args;</highlight></codeline>
<codeline lineno="1408"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/>retval;</highlight></codeline>
<codeline lineno="1409"><highlight class="normal"></highlight></codeline>
<codeline lineno="1410"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>attribute<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1411"><highlight class="normal"></highlight></codeline>
<codeline lineno="1412"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1413"><highlight class="normal"></highlight></codeline>
<codeline lineno="1414"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1415"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>change<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1416"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>attribute<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1417"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="1418"><highlight class="normal"></highlight></codeline>
<codeline lineno="1419"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1420"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1421"><highlight class="normal"></highlight></codeline>
<codeline lineno="1422"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>a<sp/>format<sp/>string<sp/>was<sp/>specified<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1423"><highlight class="normal"></highlight></codeline>
<codeline lineno="1424"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!format)<sp/>{</highlight></codeline>
<codeline lineno="1425"><highlight class="normal"></highlight></codeline>
<codeline lineno="1426"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1427"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="1428"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1429"><highlight class="normal"></highlight></codeline>
<codeline lineno="1430"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/><sp/><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="1431"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL;</highlight></codeline>
<codeline lineno="1432"><highlight class="normal"></highlight></codeline>
<codeline lineno="1433"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="1434"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1435"><highlight class="normal"></highlight></codeline>
<codeline lineno="1436"><highlight class="normal"><sp/><sp/><sp/><sp/>va_start(args,<sp/>format);</highlight></codeline>
<codeline lineno="1437"><highlight class="normal"><sp/><sp/><sp/><sp/>retval<sp/>=<sp/>_cds_set_att_va_list(att,<sp/>format,<sp/>args);</highlight></codeline>
<codeline lineno="1438"><highlight class="normal"><sp/><sp/><sp/><sp/>va_end(args);</highlight></codeline>
<codeline lineno="1439"><highlight class="normal"></highlight></codeline>
<codeline lineno="1440"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(retval);</highlight></codeline>
<codeline lineno="1441"><highlight class="normal">}</highlight></codeline>
<codeline lineno="1442"><highlight class="normal"></highlight><highlight class="comment"></highlight></codeline>
<codeline lineno="1443"><highlight class="comment">/**</highlight></codeline>
<codeline lineno="1444"><highlight class="comment"><sp/>*<sp/><sp/>Set<sp/>the<sp/>value<sp/>of<sp/>a<sp/>CDS<sp/>attribute.</highlight></codeline>
<codeline lineno="1445"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1446"><highlight class="comment"><sp/>*<sp/><sp/>The<sp/>cds_string_to_array()<sp/>function<sp/>will<sp/>be<sp/>used<sp/>to<sp/>set<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1447"><highlight class="comment"><sp/>*<sp/><sp/>value<sp/>if<sp/>the<sp/>data<sp/>type<sp/>of<sp/>the<sp/>attribute<sp/>is<sp/>not<sp/>CDS_CHAR.</highlight></codeline>
<codeline lineno="1448"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1449"><highlight class="comment"><sp/>*<sp/><sp/>Error<sp/>messages<sp/>from<sp/>this<sp/>function<sp/>are<sp/>sent<sp/>to<sp/>the<sp/>message</highlight></codeline>
<codeline lineno="1450"><highlight class="comment"><sp/>*<sp/><sp/>handler<sp/>(see<sp/>msngr_init_log()<sp/>and<sp/>msngr_init_mail()).</highlight></codeline>
<codeline lineno="1451"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1452"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>att<sp/><sp/><sp/><sp/>-<sp/>pointer<sp/>to<sp/>the<sp/>attribute</highlight></codeline>
<codeline lineno="1453"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>format<sp/>-<sp/>format<sp/>string<sp/>(see<sp/>printf)</highlight></codeline>
<codeline lineno="1454"><highlight class="comment"><sp/>*<sp/><sp/>@param<sp/><sp/>args<sp/><sp/><sp/>-<sp/>arguments<sp/>for<sp/>the<sp/>format<sp/>string</highlight></codeline>
<codeline lineno="1455"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="1456"><highlight class="comment"><sp/>*<sp/><sp/>@return</highlight></codeline>
<codeline lineno="1457"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>1<sp/>if<sp/>successful</highlight></codeline>
<codeline lineno="1458"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-<sp/>0<sp/>if:</highlight></codeline>
<codeline lineno="1459"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>the<sp/>attribute<sp/>is<sp/>locked</highlight></codeline>
<codeline lineno="1460"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>a<sp/>memory<sp/>allocation<sp/>error<sp/>occurred</highlight></codeline>
<codeline lineno="1461"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1462" refid="group__CDS__ATTS_1ga486287231f0e865327057c84f64f1a4b" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="group__CDS__ATTS_1ga486287231f0e865327057c84f64f1a4b" kindref="member" tooltip="Set the value of a CDS attribute.">cds_set_att_va_list</ref>(</highlight></codeline>
<codeline lineno="1463"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structCDSAtt" kindref="compound" tooltip="CDS Attribute.">CDSAtt</ref><sp/><sp/><sp/><sp/><sp/>*att,</highlight></codeline>
<codeline lineno="1464"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*format,</highlight></codeline>
<codeline lineno="1465"><highlight class="normal"><sp/><sp/><sp/><sp/>va_list<sp/><sp/><sp/><sp/><sp/>args)</highlight></codeline>
<codeline lineno="1466"><highlight class="normal">{</highlight></codeline>
<codeline lineno="1467"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>the<sp/>attribute<sp/>is<sp/>locked<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1468"><highlight class="normal"></highlight></codeline>
<codeline lineno="1469"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1470"><highlight class="normal"></highlight></codeline>
<codeline lineno="1471"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__MESSENGER_1ga3daef1e04a92bab649cd28129f18d42a" kindref="member" external="libmsngr.tag">ERROR</ref>(<sp/><ref refid="cds3_8h_1a95b6c6209cd7b162cb9ddffed477478c" kindref="member" tooltip="CDS library name.">CDS_LIB_NAME</ref>,</highlight></codeline>
<codeline lineno="1472"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;Could<sp/>not<sp/>change<sp/>attribute<sp/>value<sp/>for:<sp/>%s\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1473"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">&quot;<sp/>-&gt;<sp/>the<sp/>attribute<sp/>definition<sp/>lock<sp/>is<sp/>set<sp/>to:<sp/>%d\n&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="1474"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__CDSObject_1gad6d5f86f7c842c2e9fc594fe3cfed2bb" kindref="member" tooltip="Get the path of a CDS Object.">cds_get_object_path</ref>(att),<sp/>att-&gt;<ref refid="structCDSAtt_1a3dc1875e32cb675db8171eda4e96e518" kindref="member" tooltip="definition lock">def_lock</ref>);</highlight></codeline>
<codeline lineno="1475"><highlight class="normal"></highlight></codeline>
<codeline lineno="1476"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(0);</highlight></codeline>
<codeline lineno="1477"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1478"><highlight class="normal"></highlight></codeline>
<codeline lineno="1479"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Check<sp/>if<sp/>a<sp/>format<sp/>string<sp/>was<sp/>specified<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="1480"><highlight class="normal"></highlight></codeline>
<codeline lineno="1481"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!format)<sp/>{</highlight></codeline>
<codeline lineno="1482"><highlight class="normal"></highlight></codeline>
<codeline lineno="1483"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>)<sp/>{</highlight></codeline>
<codeline lineno="1484"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>free(att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref>);</highlight></codeline>
<codeline lineno="1485"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1486"><highlight class="normal"></highlight></codeline>
<codeline lineno="1487"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1a481da8dd3abe7fe4853e4b9d62b8ea73" kindref="member" tooltip="length of the attribute value">length</ref><sp/><sp/><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="1488"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>att-&gt;<ref refid="structCDSAtt_1ae573a395ceb26ece8102475e2b340c36" kindref="member" tooltip="attribute value">value</ref>.<ref refid="unionCDSData_1aae584b2623f802851a39e5f970535d08" kindref="member" tooltip="void: void pointer">vp</ref><sp/>=<sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*)NULL;</highlight></codeline>
<codeline lineno="1489"><highlight class="normal"></highlight></codeline>
<codeline lineno="1490"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(1);</highlight></codeline>
<codeline lineno="1491"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="1492"><highlight class="normal"></highlight></codeline>
<codeline lineno="1493"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal">(_cds_set_att_va_list(att,<sp/>format,<sp/>args));</highlight></codeline>
<codeline lineno="1494"><highlight class="normal">}</highlight></codeline>
    </programlisting>
    <location file="/home/ermold/dev/Linux-x86_64-el6/afl/src/libcds3/cds_atts.c"/>
  </compounddef>
</doxygen>
