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__
1.3.2