Revision 1 (by moose, 2006/03/06 10:00:33) Initial Import
#ifndef __FINDTAG_H__
#define __FINDTAG_H__

		class FindTag
		{
			public:
				FindTag(QString &n = 0) : name(n) { }			
			
				virtual FindTag &or(QString &name = 0) { return add(FindTagOR(name)); }
				virtual FindTag &and(QString &name = 0) { return add(FindTagAND(name)); }

				virtual FindTag &lt(QString &name = 0) { return add(FindTagLT(name)); }
				virtual FindTag &eq(QString &name = 0) { return add(FindTagEQ(name)); }
				virtual FindTag &gt(QString &name = 0) { return add(FindTagGT(name)); }
				virtual FindTag &le(QString &name = 0) { return add(FindTagLE(name)); }
				virtual FindTag &ge(QString &name = 0) { return add(FindTagGE(name)); }
				
				virtual FindTag &z (QString &name = 0) { return add(FindTagZ(name)); }
				virtual FindTag &nz(QString &name = 0) { return add(FindTagNZ(name)); }
				
				virtual FindTag &match(QString &m, QString &name = 0) { return add(FindTagMATCH(m, name)); }
				
			private:
				
			protected:
				
				FindTag &add(FindTag &tag)
				{
					list.append(tag);
					return tag;
				}	
			
				QString name;
				QValueList<FindTag> list;
		}
		

//	FindTag ft("artist");
//	ft.match("ayu").and().
		
		struct FindTag {
			QString name;
			enum {
				OP_LT = 1,
				OP_EQ,
				OP_GT,
				OP_LE,
				OP_GE,
				OP_Z,
				OP_NZ,
			} op;
			QString data;
		};


#endif /* __FINDTAG_H__ */