00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __OP_ParmIterator_h__
00021 #define __OP_ParmIterator_h__
00022
00023 #include "OP_API.h"
00024 #include <UT/UT_String.h>
00025
00026 class PRM_Parm;
00027 class OP_Parameters;
00028
00029 enum OP_ParmIteratorMask
00030 {
00031 OP_PIM_NONE = 0x00,
00032 OP_PIM_ORDINAL = 0x01,
00033 OP_PIM_STRING = 0x02,
00034 OP_PIM_ANIMATED = 0x04,
00035 OP_PIM_CHANNELS = 0x08,
00036 OP_PIM_AUTOSCOPED = 0x10,
00037 OP_PIM_ALL = 0xff
00038 };
00039
00040 inline OP_ParmIteratorMask
00041 operator|(OP_ParmIteratorMask a, OP_ParmIteratorMask b)
00042 {
00043 return (OP_ParmIteratorMask)((unsigned int)a | (unsigned int)b);
00044 }
00045
00046
00047 class OP_API OP_ParmIterator
00048 {
00049 public:
00050 OP_ParmIterator(OP_Parameters &node,
00051 OP_ParmIteratorMask mask = OP_PIM_ALL);
00052 ~OP_ParmIterator();
00053
00054
00055
00056 bool atEnd() const { return myAtEnd; }
00057
00058
00059
00060
00061
00062
00063
00064 bool getNextChannel(UT_String &channame, UT_String *chanalias=NULL);
00065
00066
00067
00068 bool getNextParm(PRM_Parm * &parm, int &vi);
00069
00070 protected:
00071
00072 void scrollToNext(bool first_time);
00073
00074
00075
00076 bool passesMask(PRM_Parm *parm, int subindex);
00077
00078 private:
00079 OP_Parameters &myNode;
00080 OP_ParmIteratorMask myMask;
00081 bool myAtEnd;
00082 int myCurrentParmIndex;
00083 int myCurrentParmSubIndex;
00084 UT_String myCurrentToken;
00085 UT_String myCurrentAlias;
00086 };
00087
00088 #endif