📄 absexpressions.hpp
字号:
bool __fastcall IsAggregated(void);
bool __fastcall IsAggregatedCountAll(void);
void __fastcall Init(void);
void __fastcall Accumulate(void);
void __fastcall SetCountAll(int RecordCount);
void __fastcall AssignAO(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor);
void __fastcall AssignCursor(Absbase::TABSCursor* Cursor, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor);
void __fastcall AssignCursorBuffer(char * Buffer, bool ApplyToParentQueryFields);
Abstypes::TABSAdvancedFieldType __fastcall GetDataType(void);
int __fastcall GetDataSize(void);
int __fastcall GetPrecision(void);
bool __fastcall IsEmpty(void);
bool __fastcall IsField(void);
bool __fastcall IsFieldsExpression(void);
void __fastcall MoveAndNodesToRoot(void);
void __fastcall GetFieldInfo(AnsiString &TableName, AnsiString &FieldName);
void __fastcall ApplyFilterParts(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor, bool AllowRecurse = true, bool ForHavingClause = false);
void __fastcall ReplacePseudonyms(Absrelationalalgebra::TABSSelectListItem * SelectList, const int SelectList_Size);
int __fastcall ExtractJoinConditions(Absrelationalalgebra::TABSAO* AO1, Absrelationalalgebra::TABSAO* AO2, Absrelationalalgebra::TABSFields* FieldList1, Absrelationalalgebra::TABSFields* FieldList2);
void __fastcall TryCreateIndexScanConditionsFromNode(TABSExprNode* Node, Absbase::TABSIndexDefs* IndexDefs, Abstypes::TABSScanSearchConditionArray* ScanConditions, int SessionID);
void __fastcall RemoveExtractedNodes(Abstypes::TABSScanSearchConditionArray* ScanConditions, int ScanConditionNo, int ScanEndConditionNo);
void __fastcall CreateIndexScanConditions(Absbase::TABSIndexDefs* IndexDefs, Abstypes::TABSScanSearchConditionArray* ScanConditions, int SessionID);
bool __fastcall ExtendMultiFieldIndexConditionFromNode(TABSExprNode* Node, Abstypes::TABSScanSearchCondition* ScanCondition, Absbase::TABSIndexDef* IndexDef);
bool __fastcall ExtendMultiFieldIndexCondition(Abstypes::TABSScanSearchCondition* ScanCondition, Absbase::TABSIndexDef* IndexDef);
void __fastcall AddNode(TABSExprNode* Node);
void __fastcall AddAndMoveNodesFromExpression(TABSExpression* Expr);
bool __fastcall CanBeUsedInGroupBy(AnsiString GroupByFields);
__property bool InMemory = {read=FInMemory, write=FInMemory, nodefault};
};
class DELPHICLASS TABSExprNodeConst;
class PASCALIMPLEMENTATION TABSExprNodeConst : public TABSExprNode
{
typedef TABSExprNode inherited;
public:
virtual Absvariant::TABSVariant* __fastcall GetDataValue(void);
virtual Abstypes::TABSAdvancedFieldType __fastcall GetDataType(void);
virtual int __fastcall GetDataSize(void);
bool __fastcall IsLikePatternEqualToPartialComparePattern(void);
void __fastcall TruncateForPartialCompare(void);
virtual bool __fastcall CanBeAssigned(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor, bool ForHavingClause = false);
bool __fastcall IsUpperCase(void);
bool __fastcall IsLowerCase(void);
public:
#pragma option push -w-inl
/* TABSExprNode.Create */ inline __fastcall TABSExprNodeConst(bool CaseInsensitive, bool PartialKey)/* overload */ : TABSExprNode(CaseInsensitive, PartialKey) { }
#pragma option pop
#pragma option push -w-inl
/* TABSExprNode.Destroy */ inline __fastcall virtual ~TABSExprNodeConst(void) { }
#pragma option pop
};
class DELPHICLASS TABSExprNodeField;
class PASCALIMPLEMENTATION TABSExprNodeField : public TABSExprNode
{
typedef TABSExprNode inherited;
private:
Absbase::TABSCursor* LCursor;
Absrelationalalgebra::TABSAO* LAO;
char *LRecordBuffer;
AnsiString FTableName;
AnsiString FFieldName;
AnsiString FFieldNameInAO;
int FFieldNo;
int FFieldOffsetInBuffer;
Abstypes::TABSAdvancedFieldType FFieldType;
Abstypes::TABSBaseFieldType FBaseFieldType;
int FFieldSize;
int FFieldPrecision;
bool FGetFromParent;
bool FScanOnlyVisibleFieldsInAO;
public:
__fastcall TABSExprNodeField(Absbase::TABSCursor* Cursor, AnsiString FieldName, AnsiString TableName)/* overload */;
virtual Absvariant::TABSVariant* __fastcall GetDataValue(void);
bool __fastcall TryAssignAO(Absrelationalalgebra::TABSAO* AOToAssign);
virtual void __fastcall AssignAO(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor);
bool __fastcall FindFieldInCursor(Absbase::TABSCursor* Cursor, int &FieldNo);
virtual void __fastcall AssignCursor(Absbase::TABSCursor* Cursor, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor);
virtual void __fastcall AssignCursorBuffer(char * Buffer, bool ApplyToParentQueryFields);
virtual Abstypes::TABSAdvancedFieldType __fastcall GetDataType(void);
virtual int __fastcall GetDataSize(void);
virtual bool __fastcall CanBeAssigned(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor, bool ForHavingClause = false);
void __fastcall FillItem(Absrelationalalgebra::TABSSelectListItem &Item);
virtual void __fastcall ReplacePseudonyms(Absrelationalalgebra::TABSSelectListItem * SelectList, const int SelectList_Size);
virtual bool __fastcall CanBeUsedInGroupBy(AnsiString GroupByFields);
__property AnsiString TableName = {read=FTableName};
__property AnsiString FieldName = {read=FFieldName};
__property int FieldNo = {read=FFieldNo, nodefault};
__property int FieldSize = {read=FFieldSize, nodefault};
__property Abstypes::TABSBaseFieldType BaseFieldType = {read=FBaseFieldType, nodefault};
public:
#pragma option push -w-inl
/* TABSExprNode.Destroy */ inline __fastcall virtual ~TABSExprNodeField(void) { }
#pragma option pop
};
class DELPHICLASS TABSExprNodeComparison;
class PASCALIMPLEMENTATION TABSExprNodeComparison : public TABSExprNode
{
typedef TABSExprNode inherited;
private:
bool F3ValueLogic;
TABSQuantifier FQuantifier;
virtual void __fastcall PatchWideStrings(void);
Absvariant::TABSVariant* __fastcall GetDataValueByCompare(void);
Absvariant::TABSVariant* __fastcall GetDataValueByQuantifiedCompare(void);
public:
__fastcall TABSExprNodeComparison(Abstypes::TABSDataOperator Op, TABSExprNode* Node1, TABSExprNode* Node2, bool TrueFalseNullLogic, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNodeComparison(Abstypes::TABSDataOperator Op, TABSQuantifier Quantifier, TABSExprNode* Node1, TABSExprNode* Node2, bool TrueFalseNullLogic, bool CaseInsensitive, bool PartialKey)/* overload */;
virtual Absvariant::TABSVariant* __fastcall GetDataValue(void);
void __fastcall GetFieldAndConstNodes(TABSExprNodeField* &FieldNode, TABSExprNodeConst* &ConstNode);
virtual bool __fastcall CanUseIndex(int IndexColumnNo, Abstypes::TABSSearchCondition ConditionSearchOperator, Absbase::TABSIndexDef* IndexDef, int SessionID = 0xffffffff);
virtual void __fastcall AddAsIndexScanCondition(Abstypes::TABSScanSearchConditionArray* ScanConditions, Absbase::TABSIndexDef* IndexDef, TABSExpression* Expression);
virtual void __fastcall ExtendIndexScanCondition(Abstypes::TABSScanSearchCondition* ScanCondition, Absbase::TABSIndexDef* IndexDef, TABSExpression* Expression);
virtual bool __fastcall IsJoinCondition(Absrelationalalgebra::TABSAO* AO1, Absrelationalalgebra::TABSAO* AO2);
public:
#pragma option push -w-inl
/* TABSExprNode.Destroy */ inline __fastcall virtual ~TABSExprNodeComparison(void) { }
#pragma option pop
};
class DELPHICLASS TABSExprNodeBoolean;
class PASCALIMPLEMENTATION TABSExprNodeBoolean : public TABSExprNode
{
typedef TABSExprNode inherited;
private:
Absvariant::TABSVariant* TempVal;
AnsiString EscapeStr;
void __fastcall Like(void);
void __fastcall bInSubquery(void);
void __fastcall bIn(void);
void __fastcall Between(void);
void __fastcall Exists(void);
public:
__fastcall TABSExprNodeBoolean(bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNodeBoolean(Abstypes::TABSDataOperator Op, bool CaseInsensitive, bool PartialKey, AnsiString aEscapeStr)/* overload */;
__fastcall TABSExprNodeBoolean(Abstypes::TABSDataOperator Op, TABSExprNode* Node, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNodeBoolean(Abstypes::TABSDataOperator Op, TABSExprNode* Node1, TABSExprNode* Node2, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNodeBoolean(Abstypes::TABSDataOperator Op, TABSExprNode* Node1, TABSExprNode* Node2, TABSExprNode* Node3, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall virtual ~TABSExprNodeBoolean(void);
virtual Absvariant::TABSVariant* __fastcall GetDataValue(void);
virtual bool __fastcall CanUseIndex(int ColumnNo, Abstypes::TABSSearchCondition ConditionSearchOperator, Absbase::TABSIndexDef* IndexDef, int SessionID = 0xffffffff);
virtual void __fastcall AddAsIndexScanCondition(Abstypes::TABSScanSearchConditionArray* ScanConditions, Absbase::TABSIndexDef* IndexDef, TABSExpression* Expression);
virtual void __fastcall ExtendIndexScanCondition(Abstypes::TABSScanSearchCondition* ScanCondition, Absbase::TABSIndexDef* IndexDef, TABSExpression* Expression);
};
class DELPHICLASS TABSExprNodeArithmetic;
class PASCALIMPLEMENTATION TABSExprNodeArithmetic : public TABSExprNode
{
typedef TABSExprNode inherited;
protected:
void __fastcall SubData(void);
void __fastcall AddData(void);
void __fastcall MulData(void);
void __fastcall DivData(void);
void __fastcall GetABSValue(void);
void __fastcall GetACOSValue(void);
void __fastcall GetASINValue(void);
void __fastcall GetATANValue(void);
void __fastcall GetCEILValue(void);
void __fastcall GetCOSValue(void);
void __fastcall GetEXPValue(void);
void __fastcall GetFLOORValue(void);
void __fastcall GetLOGValue(void);
void __fastcall GetPOWERValue(void);
void __fastcall GetRANDValue(void);
void __fastcall GetROUNDValue(void);
void __fastcall GetSIGNValue(void);
void __fastcall GetSINValue(void);
void __fastcall GetSQRValue(void);
void __fastcall GetSQRTValue(void);
public:
virtual Absvariant::TABSVariant* __fastcall GetDataValue(void);
virtual Abstypes::TABSAdvancedFieldType __fastcall GetDataType(void);
public:
#pragma option push -w-inl
/* TABSExprNode.Create */ inline __fastcall TABSExprNodeArithmetic(bool CaseInsensitive, bool PartialKey)/* overload */ : TABSExprNode(CaseInsensitive, PartialKey) { }
#pragma option pop
#pragma option push -w-inl
/* TABSExprNode.Destroy */ inline __fastcall virtual ~TABSExprNodeArithmetic(void) { }
#pragma option pop
};
class DELPHICLASS TABSExprNodeAggregated;
class PASCALIMPLEMENTATION TABSExprNodeAggregated : public TABSExprNode
{
typedef TABSExprNode inherited;
private:
int count;
bool distinct;
Absvariant::TABSVariant* AvgSum;
public:
__fastcall TABSExprNodeAggregated(Abstypes::TABSDataOperator Op)/* overload */;
__fastcall TABSExprNodeAggregated(Abstypes::TABSDataOperator Op, bool distinct, TABSExprNode* Node)/* overload */;
__fastcall virtual ~TABSExprNodeAggregated(void);
virtual Absvariant::TABSVariant* __fastcall GetDataValue(void);
virtual Abstypes::TABSAdvancedFieldType __fastcall GetDataType(void);
virtual int __fastcall GetDataSize(void);
virtual bool __fastcall IsAggregated(void);
virtual bool __fastcall IsAggregatedCountAll(void);
virtual bool __fastcall CanBeAssigned(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor, bool ForHavingClause = false);
virtual void __fastcall Init(void);
virtual void __fastcall Accumulate(void);
virtual void __fastcall SetCountAll(int RecordCount);
virtual bool __fastcall CanBeUsedInGroupBy(AnsiString GroupByFields);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -