⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 absexpressions.hpp

📁 Absolute Database 5.12 src. Absolute Database lets you forget the Borland Database Engine (BDE). Th
💻 HPP
📖 第 1 页 / 共 3 页
字号:
// 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 + -