<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE> S-Lang Run-Time Library Reference: Version 1.4.0: Functions that Manipulate Structures</TITLE>
<LINK HREF="slangfun-5.html" REL=next>
<LINK HREF="slangfun-3.html" REL=previous>
<LINK HREF="slangfun.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="slangfun-5.html">Next</A>
<A HREF="slangfun-3.html">Previous</A>
<A HREF="slangfun.html#toc4">Contents</A>
<HR>
<H2><A NAME="s4">4. Functions that Manipulate Structures</A></H2>

<P>
<H2><A NAME="_push_struct_field_values"></A> <A NAME="ss4.1">4.1 <B>_push_struct_field_values</B></A>
</H2>

<P>
<DL>
<DT><B> Synopsis </B><DD><P>Push the values of a structure's fields onto the stack
<DT><B> Usage </B><DD><P><CODE>Integer_Type num = _push_struct_field_values (Struct_Type s)</CODE>
<DT><B> Description </B><DD><P>The <CODE>_push_struct_field_values</CODE> function pushes the values of
all the fields of a structure onto the stack, returning the
number of items pushed.  The fields are pushed such that the last
field of the structure is pushed first.
<DT><B> See Also </B><DD><P><CODE>get_struct_field_names, get_struct_field</CODE>
</DL>
<P>
<P>
<H2><A NAME="get_struct_field"></A> <A NAME="ss4.2">4.2 <B>get_struct_field</B></A>
</H2>

<P>
<DL>
<DT><B> Synopsis </B><DD><P>Get the value associated with a structure field
<DT><B> Usage </B><DD><P><CODE>x = get_struct_field (Struct_Type s, String field_name)</CODE>
<DT><B> Description </B><DD><P>The <CODE>get_struct_field</CODE> function gets the value of the field
whose name is specified by <CODE>field_name</CODE> of the structure <CODE>s</CODE>.
<DT><B> Example </B><DD><P>The following example illustrates how this function may be used to 
to print the value of a structure.
<BLOCKQUOTE><CODE>
<PRE>
      define print_struct (s)
      {
         variable name;

         foreach (get_struct_field_names (s))
           {
             name = ();
             value = get_struct_field (s, name);
             vmessage ("s.%s = %s\n", name, string(value));
           }
      }
</PRE>
</CODE></BLOCKQUOTE>
<DT><B> See Also </B><DD><P><CODE>set_struct_field, get_struct_field_names, array_info</CODE>
<P>
</DL>
<P>
<P>
<H2><A NAME="get_struct_field_names"></A> <A NAME="ss4.3">4.3 <B>get_struct_field_names</B></A>
</H2>

<P>
<DL>
<DT><B> Synopsis </B><DD><P>Retrieve the field names associated with a structure
<DT><B> Usage </B><DD><P><CODE>String_Type[] = get_struct_field_names (Struct_Type s)</CODE>
<DT><B> Description </B><DD><P>The <CODE>get_struct_field_names</CODE> function returns an array of
strings whose elements specify the names of the fields of the
struct <CODE>s</CODE>.
<DT><B> Example </B><DD><P>The following example illustrates how the
<CODE>get_struct_field_names</CODE> function may be used to print the
value of a structure.
<BLOCKQUOTE><CODE>
<PRE>
      define print_struct (s)
      {
         variable name, value;

         foreach (get_struct_field_names (s))
           {
             name = ();
             value = get_struct_field (name);
             vmessage ("s.%s = %s\n", name, string (value));
           }
      }
</PRE>
</CODE></BLOCKQUOTE>
<DT><B> See Also </B><DD><P><CODE>_push_struct_field_values, get_struct_field</CODE>
</DL>
<P>
<P>
<H2><A NAME="is_struct_type"></A> <A NAME="ss4.4">4.4 <B>is_struct_type</B></A>
</H2>

<P>
<DL>
<DT><B> Synopsis </B><DD><P>Determine whether or not an object is a structure
<DT><B> Usage </B><DD><P><CODE>Integer_Type is_struct_type (X)</CODE>
<DT><B> Description </B><DD><P>The <CODE>is_struct_type</CODE> function returns <CODE>1</CODE> if the the parameter
refers to a structure or a user-defined type.  If the object is
neither, <CODE>0</CODE> will be returned.
<DT><B> See Also </B><DD><P><CODE>typeof, _typeof</CODE>
</DL>
<P>
<P>
<H2><A NAME="set_struct_field"></A> <A NAME="ss4.5">4.5 <B>set_struct_field</B></A>
</H2>

<P>
<DL>
<DT><B> Synopsis </B><DD><P>Set the value associated with a structure field
<DT><B> Usage </B><DD><P><CODE>set_struct_field (s, field_name, field_value)</CODE>
<BLOCKQUOTE><CODE>
<PRE>
   Struct_Type s;
   String_Type field_name;
   Generic_Type field_value;
</PRE>
</CODE></BLOCKQUOTE>
<DT><B> Description </B><DD><P>The <CODE>set_struct_field</CODE> function sets the value of the field
whose name is specified by <CODE>field_name</CODE> of the structure
<CODE>s</CODE> to <CODE>field_value</CODE>.
<DT><B> See Also </B><DD><P><CODE>get_struct_field, get_struct_field_names, set_struct_fields, array_info</CODE>
</DL>
<P>
<P>
<H2><A NAME="set_struct_fields"></A> <A NAME="ss4.6">4.6 <B>set_struct_fields</B></A>
</H2>

<P>
<DL>
<DT><B> Synopsis </B><DD><P>Set the fields of a structure
<DT><B> Usage </B><DD><P><CODE>set_struct_fields (Struct_Type s, ...)</CODE>
<DT><B> Description </B><DD><P>The <CODE>set_struct_fields</CODE> function may be used to set zero or more
fields of a structure.  The fields are set in the order in which
they were created when the structure was defined.
<DT><B> Example </B><DD><P>
<BLOCKQUOTE><CODE>
<PRE>
    variable s = struct { "name", "age", "height" };
    set_struct_fields (s, "Bill", 13, 64);
</PRE>
</CODE></BLOCKQUOTE>
<DT><B> See Also </B><DD><P><CODE>set_struct_field, get_struct_field_names</CODE>
</DL>
<P>
<P>
<P>
<HR>
<A HREF="slangfun-5.html">Next</A>
<A HREF="slangfun-3.html">Previous</A>
<A HREF="slangfun.html#toc4">Contents</A>
</BODY>
</HTML>
