/* -------------------------- gnuMultiFunc class --------------------------

   This class handles all operations related to the storage and retrieval of 
   multiple functions and their options. These should be called from
   gnuInterface. This class allows you to implement the storage in any way
   you choose. 

   This file is part of Xgfe: X Windows GUI front end to Gnuplot
   Copyright (C) 1998 David Ishee

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

   ------------------------------------------------------------------------*/

#include <string>
#include "gnuPlotFunction.h"
#include <qdict.h> // Qt's dictionary data structure

class gnuMultiFunc
{
public:
  gnuMultiFunc();
  // Constructor function

  void insertMultiFuncNew(string function);
  /* Incoming arguments:
       string: function to insert
     Outgoing arguments:
       none
     Description:
       Inserts a new function into list */

  void removeMultiFunc(string function);
  /* Incoming arguments:
       string: function to remove
     Outgoing arguments:
       none
     Description:
       Removes a function from list */

  void setMultiFuncStyleOption(string function, string style);
  /* Incoming arguments:
       function: function to operate on
       style: plotting style to use
     Outgoing arguments:
       none
     Description:
       Sets the plotting style for the specified function */

  string getMultiFuncStyleOption(string function);
  /* Incoming arguments:
       function: function to operate on
     Outgoing arguments:
       string: plotting style
     Description:
       Gets the plotting style for the specified function */

  string getMultiFuncFirstFunction();
  /* Incoming arguments:
       none
     Outgoing arguments:
       string: First function in list
               Returns END if list is empty
     Description:
       Gets the first function in the list */

  string getMultiFuncNextFunction();
  /* Incoming arguments:
       none
     Outgoing arguments:
       string: Next function in list
               Returns END if the end of the list is reached
     Description:
       Gets the next function in the list */

  string getMultiFuncFirstPlotCmd();
  /* Incoming arguments:
       none
     Outgoing arguments:
       string: First function's plotting command in list
               Returns END if list is empty
     Description:
       Gets the first function's plotting command in the list */

  string getMultiFuncNextPlotCmd();
  /* Incoming arguments:
       none
     Outgoing arguments:
       string: Next function's plotting command in list
               Returns END if the end of the list is reached
     Description:
       Gets the next function's plotting command in the list */  

  void setLegendTitle(string function, string title);
  /* Incoming arguments:
       function: function to operate on
       title: title for legend
     Outgoing arguments:
       none
     Description:
       Sets title to be used in legend */

  string getLegendTitle(string function);
  /* Incoming arguments:
       function: function to operate on
     Outgoing arguments:
       string: title for current function
     Description:
       Gets title to be used in legend for the current function */

private:
  QDict<gnuPlotFunction>* funcList;
  QDictIterator<gnuPlotFunction>* funcListIterator;
  gnuPlotFunction* tempFunc;
};


syntax highlighted by Code2HTML, v. 0.9.1