📄 absexpressions.hpp
字号:
// Borland C++ Builder
// Copyright (c) 1995, 2005 by Borland Software Corporation
// All rights reserved
// (DO NOT EDIT: machine generated header) 'Absexpressions.pas' rev: 10.00
#ifndef AbsexpressionsHPP
#define AbsexpressionsHPP
#pragma delphiheader begin
#pragma option push
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp> // Pascal unit
#include <Sysinit.hpp> // Pascal unit
#include <Classes.hpp> // Pascal unit
#include <Sysutils.hpp> // Pascal unit
#include <Db.hpp> // Pascal unit
#include <Variants.hpp> // Pascal unit
#include <Dateutils.hpp> // Pascal unit
#include <Absbase.hpp> // Pascal unit
#include <Absvariant.hpp> // Pascal unit
#include <Abslexer.hpp> // Pascal unit
#include <Absexcept.hpp> // Pascal unit
#include <Absconst.hpp> // Pascal unit
#include <Abstypes.hpp> // Pascal unit
#include <Absconverts.hpp> // Pascal unit
#include <Absrelationalalgebra.hpp> // Pascal unit
#include <Absdateformat.hpp> // Pascal unit
//-- user supplied -----------------------------------------------------------
namespace Absexpressions
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TABSExprNodeType { entField, entConst, entOperator, entSet, entNull };
#pragma option pop
#pragma option push -b-
enum TSign { sgnUndefined, sgnPlus, sgnMinus };
#pragma option pop
#pragma option push -b-
enum TABSQuantifier { qUNDEFINED, qALL, qANY };
#pragma option pop
class PASCALIMPLEMENTATION TABSExprNode;typedef DynamicArray<TABSExprNode* > TABSExprNodeArray;
class DELPHICLASS TABSExpression;
class DELPHICLASS TABSExprNode;
class PASCALIMPLEMENTATION TABSExprNode : public System::TObject
{
typedef System::TObject inherited;
private:
Classes::TList* Children;
Abstypes::TABSDataOperator Operator;
Absvariant::TABSVariant* Value;
bool FCaseInsensitive;
bool FPartialKey;
virtual void __fastcall PatchWideStrings(void);
public:
__fastcall TABSExprNode(bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNode(Abstypes::TABSDataOperator Op, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNode(Abstypes::TABSDataOperator Op, TABSExprNode* Node, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNode(Abstypes::TABSDataOperator Op, TABSExprNode* Node1, TABSExprNode* Node2, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall TABSExprNode(Abstypes::TABSDataOperator Op, TABSExprNode* Node1, TABSExprNode* Node2, TABSExprNode* Node3, bool CaseInsensitive, bool PartialKey)/* overload */;
__fastcall virtual ~TABSExprNode(void);
virtual Absvariant::TABSVariant* __fastcall GetDataValue(void) = 0 ;
virtual void __fastcall ResetSubqueryFieldValues(void);
virtual Absvariant::TABSVariant* __fastcall GetSubqueryFieldValue(int FieldNo);
virtual bool __fastcall IsAggregated(void);
virtual bool __fastcall IsAggregatedCountAll(void);
virtual void __fastcall Init(void);
virtual void __fastcall Accumulate(void);
virtual void __fastcall SetCountAll(int RecordCount);
virtual void __fastcall AssignAO(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor);
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 int __fastcall GetPrecision(void);
virtual bool __fastcall CanBeAssigned(Absrelationalalgebra::TABSAO* AO, Absrelationalalgebra::TABSAO* ParentQueryAO, Absbase::TABSCursor* ParentCursor, bool ForHavingClause = false);
bool __fastcall CanUseNodeAsField(TABSExprNode* Node);
bool __fastcall CanUseNodeAsConst(TABSExprNode* Node);
virtual bool __fastcall CanUseIndex(int IndexColumnNo, Abstypes::TABSSearchCondition ConditionSearchOperator, Absbase::TABSIndexDef* IndexDef, int SessionID = 0xffffffff);
private:
void __fastcall FillScanCondition(Absvariant::TABSVariant* Value, Absbase::TABSCursor* Cursor, int IndexColumnNo, int FieldNo, Absbase::TABSIndexDef* IndexDef, TABSExpression* Expression, Abstypes::TABSScanSearchCondition* ScanCondition);
public:
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);
virtual void __fastcall ReplacePseudonyms(Absrelationalalgebra::TABSSelectListItem * SelectList, const int SelectList_Size);
virtual bool __fastcall CanBeUsedInGroupBy(AnsiString GroupByFields);
};
class PASCALIMPLEMENTATION TABSExpression : public System::TObject
{
typedef System::TObject inherited;
private:
Abslexer::TABSLexer* LLex;
Abslexer::TToken Token;
Absbase::TABSCursor* LCursor;
Db::TDataSet* LDataset;
TABSExprNode* FRootExprNode;
bool FCaseInsensitive;
bool FPartialKey;
bool F3ValueLogic;
bool FInMemory;
AnsiString FDatabaseName;
bool __fastcall GetCurrentToken(void);
bool __fastcall GetNextToken(void)/* overload */;
bool __fastcall GetNextToken(Abslexer::TTokenTypes PermittedTypes, bool RaiseExceptions = false)/* overload */;
void __fastcall SaveState(int &SavedTokenNo);
void __fastcall RestoreState(int SavedTokenNo);
Abstypes::TABSDataOperator __fastcall ParseCompOp(void);
TABSQuantifier __fastcall ParseQuantifier(void);
TABSExprNode* __fastcall ParseRowValueConstructorElement(void);
TABSExprNode* __fastcall ParseRowSubquery(bool MustHaveOneRow, bool MustHaveOneField = true);
TABSExprNode* __fastcall ParseRowValueConstructor(void);
TABSExprNode* __fastcall ParseQuantifiedComparisonPredicate(void);
TABSExprNode* __fastcall ParseComparisonPredicate(void);
TABSExprNode* __fastcall ParseLikePredicate(void);
TABSExprNode* __fastcall ParseNullPredicate(void);
TABSExprNode* __fastcall ParseBetweenPredicate(void);
TABSExprNode* __fastcall ParseInPredicate(void);
TABSExprNode* __fastcall ParseExistsPredicate(void);
TABSExprNode* __fastcall ParseTrueFalseConst(void);
TABSExprNode* __fastcall ParseNullConst(void);
TABSExprNode* __fastcall ParsePredicate(void);
TABSExprNode* __fastcall ParseBooleanPrimary(void);
TABSExprNode* __fastcall ParseBooleanTest(void);
TABSExprNode* __fastcall ParseBooleanFactor(void);
TABSExprNode* __fastcall ParseBooleanTerm(void);
TABSExprNode* __fastcall ParseSearchCondition(void);
TABSExprNode* __fastcall ParseValueExpression(void);
TABSExprNode* __fastcall ParseNumericValueExpression(void);
TABSExprNode* __fastcall ParseTerm(void);
TABSExprNode* __fastcall ParseFactor(void);
TSign __fastcall ParseSign(void);
TABSExprNode* __fastcall ParseNumericPrimary(void);
TABSExprNode* __fastcall ParseValueExpressionPrimary(void);
TABSExprNode* __fastcall ParseUnsignedValueSpecification(void);
TABSExprNode* __fastcall ParseUnsignedLiteral(void);
TABSExprNode* __fastcall ParseUnsignedNumericLiteral(void);
TABSExprNode* __fastcall ParseColumnReference(void);
TABSExprNode* __fastcall ParseSetFunctionSpecification(void);
TABSExprNode* __fastcall ParseGeneralSetFunction(void);
TABSExprNode* __fastcall ParseCastSpecification(void);
TABSExprNode* __fastcall ParseCastOperand(void);
TABSExprNode* __fastcall ParseNumericValueFunction(void);
TABSExprNode* __fastcall ParsePositionExpression(void);
TABSExprNode* __fastcall ParseExtractExpression(void);
TABSExprNode* __fastcall ParseLengthExpression(void);
TABSExprNode* __fastcall ParseLastAutoIncExpression(void);
TABSExprNode* __fastcall ParseRowNumExpression(void);
TABSExprNode* __fastcall ParseSingleArgMathExpression(Absconst::TReservedWord rw, Abstypes::TABSDataOperator op, AnsiString OpText);
TABSExprNode* __fastcall ParseABSExpression(void);
TABSExprNode* __fastcall ParseACOSExpression(void);
TABSExprNode* __fastcall ParseASINExpression(void);
TABSExprNode* __fastcall ParseATANExpression(void);
TABSExprNode* __fastcall ParseCEILExpression(void);
TABSExprNode* __fastcall ParseCOSExpression(void);
TABSExprNode* __fastcall ParseEXPExpression(void);
TABSExprNode* __fastcall ParseFLOORExpression(void);
TABSExprNode* __fastcall ParseLOGExpression(void);
TABSExprNode* __fastcall ParsePOWERExpression(void);
TABSExprNode* __fastcall ParseRANDExpression(void);
TABSExprNode* __fastcall ParseROUNDExpression(void);
TABSExprNode* __fastcall ParseSIGNExpression(void);
TABSExprNode* __fastcall ParseSINExpression(void);
TABSExprNode* __fastcall ParseSQRExpression(void);
TABSExprNode* __fastcall ParseSQRTExpression(void);
TABSExprNode* __fastcall ParseMathExpression(void);
TABSExprNode* __fastcall ParseStringValueExpression(void);
TABSExprNode* __fastcall ParseCharacterValueExpression(void);
TABSExprNode* __fastcall ParseConcatination(void);
TABSExprNode* __fastcall ParseCharacterFactor(void);
TABSExprNode* __fastcall ParseCharacterPrimary(void);
TABSExprNode* __fastcall ParseGeneralLiteral(void);
TABSExprNode* __fastcall ParseCharacterStringLiteral(void);
TABSExprNode* __fastcall ParseDateTimeLiteral(void);
TABSExprNode* __fastcall ParseDateLiteral(void);
TABSExprNode* __fastcall ParseDateString(void);
TABSExprNode* __fastcall ParseTimeLiteral(void);
TABSExprNode* __fastcall ParseTimeString(void);
TABSExprNode* __fastcall ParseTimeStampLiteral(void);
TABSExprNode* __fastcall ParseTimeStampString(void);
TABSExprNode* __fastcall ParseStringValueFunction(void);
TABSExprNode* __fastcall ParseCharacterValueFunction(void);
TABSExprNode* __fastcall ParseDatetimeValueExpression(void);
TABSExprNode* __fastcall ParseSysdateFunction(void);
TABSExprNode* __fastcall ParseCurrentTimeFunction(void);
TABSExprNode* __fastcall ParseCurrentDateFunction(void);
TABSExprNode* __fastcall ParseToDateFunction(void);
TABSExprNode* __fastcall ParseIntervalValueExpression(void);
TABSExprNode* __fastcall ParseCaseExpression(void);
TABSExprNode* __fastcall ParseCaseAbbreviation(void);
TABSExprNode* __fastcall ParseCoalesce(void);
TABSExprNode* __fastcall ParseCaseSpecification(void);
TABSExprNode* __fastcall ParseSimpleCase(void);
TABSExprNode* __fastcall ParseSearchedCase(void);
TABSExprNode* __fastcall ParseBlobExpression(void);
TABSExprNode* __fastcall ParseMimeToBinFunction(void);
void __fastcall Clear(void);
public:
__fastcall TABSExpression(void)/* overload */;
__fastcall TABSExpression(TABSExprNode* RootNode)/* overload */;
__fastcall virtual ~TABSExpression(void);
void __fastcall ParseForLocate(Absbase::TABSCursor* Cursor, AnsiString FieldNames, const Variant &KeyValues, bool CaseInsensitive = true, bool PartialKey = false);
void __fastcall ParseForFilter(Absbase::TABSCursor* Cursor, AnsiString Filter, bool CaseInsensitive = true, bool PartialKey = false);
void __fastcall ParseForIsAnyRecordMatchCondition(Absbase::TABSCursor* Cursor, const AnsiString FieldName, const Abstypes::TABSDataOperator Operator, const Absvariant::TABSVariant* Value);
void __fastcall ParseForBooleanExpression(Db::TDataSet* Dataset, Abslexer::TABSLexer* Lexer);
void __fastcall ParseForValueExpression(Db::TDataSet* Dataset, Abslexer::TABSLexer* Lexer);
bool __fastcall ParseForDefaultValueExpression(AnsiString DefaultValue);
void __fastcall ParseForRowSubqueryExpression(Db::TDataSet* Dataset, Abslexer::TABSLexer* Lexer);
Absvariant::TABSVariant* __fastcall GetValue(bool TrueFalseNullLogic = true);
bool __fastcall GetResult(void);
void __fastcall ResetSubqueryFieldValues(void);
Absvariant::TABSVariant* __fastcall GetSubqueryFieldValue(int FieldNo);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -