===========================================================================

The varargs qualifier is used with functions to allow them to take in a
variable number of arguments. If you define a function with varargs, it can
accept from no args to the maximum amount given in the function's declaration.

------< Sample of a varargs function >------

varargs mixed query_my_skills(string skill_name,int skill_level) {

        if(!skill_name) return my_skills;
        if(!my_skills[skill_name]) return 0;
        if(!skill_level) return my_skills[skill_name];
        return (skill_level > my_skills[skill_name] ) ? 1 : 0; }

1) First think that happens here is that we assume a global mapping called
   my_skills is holding the information about the skills.

2) The query_my_skills() function is used for various tests upon this mapping.

3) What the varargs qualifier does for us is allows the function alot of
   flexability. It lets it does a whole series of tests based upon what info
   we have supplied it.

4) If we give no name for the skill and no level, then the whole mapping is
   returned.

5) If we give the function a name, it will check to see if the name exists in
   the mapping. If it does not, a 0 is returned.

6) Now that we know the named skill is on the mapping, the function checks
   to see if the second argument was passed into the function. If it wasn't,
   the value stored on the mapping for the named skill is returned.

7) If both the skill's name and a possible level was passed, then a comparison
   is done and a 1 or 0 returned via the ?: operator.

===========================================================================

As you can see, the varargs qualifier allows us great flexability in our
function definitions. It allows us to do several different things within
a single function based on what info we send it.

Ironman
