//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 loyalsoft. All rights reserved.
// Homepage: http://www.game7000.com/
// Feedback: http://www.game7000.com/
//------------------------------------------------------------
using System;
using System.Collections.Generic;
namespace GameFramework.DataTable
{
///
/// 数据表接口。
///
/// 数据表行的类型。
public interface IDataTable : IEnumerable where T : IDataRow
{
///
/// 获取数据表名称。
///
string Name
{
get;
}
///
/// 获取数据表完整名称。
///
string FullName
{
get;
}
///
/// 获取数据表行的类型。
///
Type Type
{
get;
}
///
/// 获取数据表行数。
///
int Count
{
get;
}
///
/// 获取数据表行。
///
/// 数据表行的编号。
/// 数据表行。
T this[int id]
{
get;
}
///
/// 获取编号最小的数据表行。
///
T MinIdDataRow
{
get;
}
///
/// 获取编号最大的数据表行。
///
T MaxIdDataRow
{
get;
}
///
/// 检查是否存在数据表行。
///
/// 数据表行的编号。
/// 是否存在数据表行。
bool HasDataRow(int id);
///
/// 检查是否存在数据表行。
///
/// 要检查的条件。
/// 是否存在数据表行。
bool HasDataRow(Predicate condition);
///
/// 获取数据表行。
///
/// 数据表行的编号。
/// 数据表行。
T GetDataRow(int id);
///
/// 获取符合条件的数据表行。
///
/// 要检查的条件。
/// 符合条件的数据表行。
/// 当存在多个符合条件的数据表行时,仅返回第一个符合条件的数据表行。
T GetDataRow(Predicate condition);
///
/// 获取符合条件的数据表行。
///
/// 要检查的条件。
/// 符合条件的数据表行。
T[] GetDataRows(Predicate condition);
///
/// 获取符合条件的数据表行。
///
/// 要检查的条件。
/// 符合条件的数据表行。
void GetDataRows(Predicate condition, List results);
///
/// 获取排序后的数据表行。
///
/// 要排序的条件。
/// 排序后的数据表行。
T[] GetDataRows(Comparison comparison);
///
/// 获取排序后的数据表行。
///
/// 要排序的条件。
/// 排序后的数据表行。
void GetDataRows(Comparison comparison, List results);
///
/// 获取排序后的符合条件的数据表行。
///
/// 要检查的条件。
/// 要排序的条件。
/// 排序后的符合条件的数据表行。
T[] GetDataRows(Predicate condition, Comparison comparison);
///
/// 获取排序后的符合条件的数据表行。
///
/// 要检查的条件。
/// 要排序的条件。
/// 排序后的符合条件的数据表行。
void GetDataRows(Predicate condition, Comparison comparison, List results);
///
/// 获取所有数据表行。
///
/// 所有数据表行。
T[] GetAllDataRows();
///
/// 获取所有数据表行。
///
/// 所有数据表行。
void GetAllDataRows(List results);
///
/// 增加数据表行。
///
/// 要解析的数据表行字符串。
/// 用户自定义数据。
/// 是否增加数据表行成功。
bool AddDataRow(string dataRowString, object userData);
///
/// 增加数据表行。
///
/// 要解析的数据表行二进制流。
/// 数据表行二进制流的起始位置。
/// 数据表行二进制流的长度。
/// 用户自定义数据。
/// 是否增加数据表行成功。
bool AddDataRow(byte[] dataRowBytes, int startIndex, int length, object userData);
///
/// 移除指定数据表行。
///
/// 要移除数据表行的编号。
/// 是否移除数据表行成功。
bool RemoveDataRow(int id);
///
/// 清空所有数据表行。
///
void RemoveAllDataRows();
}
}