Main Page | Namespace List | Class Hierarchy | Compound List | File List | Compound Members | File Members | Related Pages

cmdtreenode.h

Go to the documentation of this file.
00001 /****************************************************************************
00002 
00003  File:    cmdtreenode.h
00004  Created: by Aidan Lane, November 24, 2003
00005  Updated: by Aidan Lane, February 14, 2004
00006  
00007  This file is part of Glitch
00008  Copyright (C) 2003-2004  Monash University, Clayton Campus, Australia
00009  Created by Aidan Lane, under the supervision of Jon McCormack.
00010  
00011  This program was developed to aid the students studying the CSE3313
00012  Computer Graphics course at Monash University.
00013  
00014  This software may contain portions that are copyright (C) 1993,
00015  Silicon Graphics, Inc. All Rights Reserved.
00016  
00017  Glitch is free software; you can redistribute it and/or modify
00018  it under the terms of the GNU General Public License as published by
00019  the Free Software Foundation, version 2.
00020  
00021  Glitch is distributed in the hope that it will be useful,
00022  but WITHOUT ANY WARRANTY; without even the implied warranty of
00023  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00024  GNU General Public License for more details.
00025  
00026  You should have received a copy of the GNU General Public License
00027  along with this program; if not, write to the Free Software
00028  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00029 
00030 *****************************************************************************/
00031 
00032 #ifndef __CMDTREENODE_H__
00033 #define __CMDTREENODE_H__
00034 
00035 
00036 #include <qptrlist.h>
00037 #include <qstringlist.h>
00038 #include <qstring.h>
00039 
00040 #include "cmdparam.h"
00041 #include "superptrlist.h"
00042 
00043 
00054 // For a sub-tree: set myFuncPtr and myParams to NULL and initialize subTree
00055 // For a command leaf: set subTree to NULL and initialize myFuncPtr and myParams
00056 // Note: NULL can be specified for myParams to have no myParams => ()
00057 class CmdTreeNode {
00058 
00059 public:
00060     CmdTreeNode( const QString& name, QPtrList<CmdTreeNode>* subTree = NULL,
00061         void (*funcPtr) (const QStringList&) = NULL,
00062         SuperPtrList<CmdParam>* params = NULL );
00063     ~CmdTreeNode();
00064 
00065     // getters
00066     const QString& name() const { return myName; }
00067     QPtrList<CmdTreeNode>* subTree() { return mySubTree; }
00068     void ( *funcPtr() ) (const QStringList&) { return myFuncPtr; }
00069     QPtrList<CmdParam>* params() { return myParams; }
00070 
00071     // setters
00072     void setName( QString name ) { myName = name; } 
00073     void setSubTree( QPtrList<CmdTreeNode>* subTree ) { mySubTree = subTree; }
00074     void setFuncPtr( void (*funcPtr) (const QStringList&) ) { myFuncPtr = funcPtr; }
00075     void setParams( QPtrList<CmdParam>* params ) { myParams = params; }
00076 
00077     // other
00078     void exec( const QStringList& paramValues ) const { myFuncPtr(paramValues); }
00079     QString toString() const;   // get the prototype string
00080     
00081     // searching
00082     static CmdTreeNode* findNode( QPtrList<CmdTreeNode>* tree, QString name );
00083 
00084 protected:
00085     QString myName;
00086     QPtrList<CmdTreeNode>* mySubTree;
00087     void (*myFuncPtr) (const QStringList&);
00088     QPtrList<CmdParam>* myParams;
00089 };
00090 
00091 
00092 #endif  // __CMDTREENODE_H__

Generated on Fri Feb 27 12:01:39 2004 for Glitch by doxygen 1.3.2