// Query.cs
using System;
using System.Collections;
using System.Text; namespace SEI.DL88250.SourceCodes.CSharp.QTL
{
/// <summary>查询类的基类
/// </summary>
public abstract class Query
{
/// <summary>文本内容,复制于系统文本缓冲区
/// </summary>
protected static ArrayList _textContent;
/// <summary>查询的结果,行号
/// </summary>
protected ArrayList _solutionIndex;
/// </summary>
/// <remarks>从系统缓冲区拷贝文本内容</remarks>
public Query()
{
_textContent = QTL.textContentBuffer;
_solutionIndex = new ArrayList();
}
/// </summary>
public abstract void Search();
/// </value>
/// <remarks>返回/设置
/// <see cref="_solutionIndex"/>字段
/// </remarks>
public ArrayList Solution
{
get { return _solutionIndex; }
set { _solutionIndex = (ArrayList)value; }
}
}
}
using System;
using System.Collections;
using System.Text; namespace SEI.DL88250.SourceCodes.CSharp.QTL
{
/// <summary>查询类的基类
/// </summary>
public abstract class Query
{
/// <summary>文本内容,复制于系统文本缓冲区
/// </summary>
protected static ArrayList _textContent;
/// <summary>查询的结果,行号
/// </summary>
protected ArrayList _solutionIndex;
/// <summary>缺省的构造器
/// </summary>
/// <remarks>从系统缓冲区拷贝文本内容</remarks>
public Query()
{
_textContent = QTL.textContentBuffer;
_solutionIndex = new ArrayList();
}
/// <summary>抽象查询方法
/// </summary>
public abstract void Search();
/// <value>属性,返回/设置结果行号集
/// </value>
/// <remarks>返回/设置
/// <see cref="_solutionIndex"/>字段
/// </remarks>
public ArrayList Solution
{
get { return _solutionIndex; }
set { _solutionIndex = (ArrayList)value; }
}
}
}
// UnitaryQuery.cs
using System;
using System.Collections;
using System.Text; namespace SEI.DL88250.SourceCodes.CSharp.QTL
{
/// <summary>
/// 单关键字查询类
/// </summary>
public class UnitaryQuery : Query
{
/// <summary>查询关键字
/// </summary>
protected string _op;
/// <remarks>返回
/// <see cref="_op"/>字段
/// </remarks>
public string Op
{
get { return _op; }
}
/// </summary>
public UnitaryQuery()
{
_op = null;
}
/// </summary>
/// <param name="op">查询关键字串</param>
public UnitaryQuery(string op)
{
_op = op;
Search();
}
/// </summary>
/// <param name="solution">查询结果</param>
/// <remarks>这个特殊的构造器主要是提供给NotQuery类方法使用</remarks>
public UnitaryQuery(ArrayList solution)
{
_solutionIndex = solution;
}
/// <remarks>覆盖了基类的Search()方法</remarks>
public override void Search()
{
for (int i = 1; i < _textContent.Count; i++)
{
if (-1 != ((string)_textContent[i]).IndexOf(_op))
{
_solutionIndex.Add((object)(i));
}
}
}
}
}
using System;
using System.Collections;
using System.Text; namespace SEI.DL88250.SourceCodes.CSharp.QTL
{
/// <summary>
/// 单关键字查询类
/// </summary>
public class UnitaryQuery : Query
{
/// <summary>查询关键字
/// </summary>
protected string _op;
/// <value>返回关键字</value>
/// <remarks>返回
/// <see cref="_op"/>字段
/// </remarks>
public string Op
{
get { return _op; }
}
/// <summary>缺省的构造器,设查询关键字串为空
/// </summary>
public UnitaryQuery()
{
_op = null;
}
/// <summary>带参数的构造器,初始化查询关键字串并开始查询
/// </summary>
/// <param name="op">查询关键字串</param>
public UnitaryQuery(string op)
{
_op = op;
Search();
}
/// <summary>带参数的构造器,直接根据参数构造查询结果
/// </summary>
/// <param name="solution">查询结果</param>
/// <remarks>这个特殊的构造器主要是提供给NotQuery类方法使用</remarks>
public UnitaryQuery(ArrayList solution)
{
_solutionIndex = solution;
}
/// <summary>将包含查询关键字的行记录到结果集合里</summary>
/// <remarks>覆盖了基类的Search()方法</remarks>
public override void Search()
{
for (int i = 1; i < _textContent.Count; i++)
{
if (-1 != ((string)_textContent[i]).IndexOf(_op))
{
_solutionIndex.Add((object)(i));
}
}
}
}
}
// BinaryQuery.cs
using System;
using System.Collections; namespace SEI.DL88250.SourceCodes.CSharp.QTL
{
/// <summary>
/// 二元查询类
/// </summary>
public abstract class BinaryQuery : Query
{
/// <summary>op1的运算结果
/// </summary>
protected ArrayList _resultOfOp1;
/// <summary>op2的运算结果
/// </summary>
protected ArrayList _resultOfOp2;
/// </summary>
public BinaryQuery()
{
_resultOfOp1 = new ArrayList();
_resultOfOp2 = new ArrayList();
}
/// </summary>
/// <param name="q1">运算量1</param>
/// <param name="q2">运算量2</param>
public BinaryQuery(Query q1, Query q2)
{
_resultOfOp1 = q1.Solution;
_resultOfOp2 = q2.Solution;
}
}
}
using System;
using System.Collections; namespace SEI.DL88250.SourceCodes.CSharp.QTL
{
/// <summary>
/// 二元查询类
/// </summary>
public abstract class BinaryQuery : Query
{
/// <summary>op1的运算结果
/// </summary>
protected ArrayList _resultOfOp1;
/// <summary>op2的运算结果
/// </summary>
protected ArrayList _resultOfOp2;
/// <summary>缺省的构造器
/// </summary>
public BinaryQuery()
{
_resultOfOp1 = new ArrayList();
_resultOfOp2 = new ArrayList();
}
/// </summary>
/// <param name="q1">运算量1</param>
/// <param name="q2">运算量2</param>
public BinaryQuery(Query q1, Query q2)
{
_resultOfOp1 = q1.Solution;
_resultOfOp2 = q2.Solution;
}
}
}