chromium/third_party/pdfium/xfa/fxfa/formcalc/cxfa_fmexpression.h

// Copyright 2014 The PDFium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef XFA_FXFA_FORMCALC_CXFA_FMEXPRESSION_H_
#define XFA_FXFA_FORMCALC_CXFA_FMEXPRESSION_H_

#include <optional>
#include <vector>

#include "core/fxcrt/widestring.h"
#include "core/fxcrt/widetext_buffer.h"
#include "fxjs/gc/heap.h"
#include "v8/include/cppgc/garbage-collected.h"
#include "v8/include/cppgc/member.h"
#include "xfa/fxfa/formcalc/cxfa_fmlexer.h"

class CXFA_FMExpression : public cppgc::GarbageCollected<CXFA_FMExpression> {};

class CXFA_FMSimpleExpression : public CXFA_FMExpression {};

class CXFA_FMChainableExpression : public CXFA_FMSimpleExpression {};

class CXFA_FMNullExpression final : public CXFA_FMSimpleExpression {};

class CXFA_FMNumberExpression final : public CXFA_FMSimpleExpression {};

class CXFA_FMStringExpression final : public CXFA_FMSimpleExpression {};

class CXFA_FMIdentifierExpression final : public CXFA_FMSimpleExpression {};

class CXFA_FMAssignExpression final : public CXFA_FMChainableExpression {};

class CXFA_FMBinExpression : public CXFA_FMChainableExpression {};

class CXFA_FMLogicalOrExpression final : public CXFA_FMBinExpression {};

class CXFA_FMLogicalAndExpression final : public CXFA_FMBinExpression {};

class CXFA_FMEqualExpression final : public CXFA_FMBinExpression {};

class CXFA_FMNotEqualExpression final : public CXFA_FMBinExpression {};

class CXFA_FMGtExpression final : public CXFA_FMBinExpression {};

class CXFA_FMGeExpression final : public CXFA_FMBinExpression {};

class CXFA_FMLtExpression final : public CXFA_FMBinExpression {};

class CXFA_FMLeExpression final : public CXFA_FMBinExpression {};

class CXFA_FMPlusExpression final : public CXFA_FMBinExpression {};

class CXFA_FMMinusExpression final : public CXFA_FMBinExpression {};

class CXFA_FMMulExpression final : public CXFA_FMBinExpression {};

class CXFA_FMDivExpression final : public CXFA_FMBinExpression {};

class CXFA_FMUnaryExpression : public CXFA_FMSimpleExpression {};

class CXFA_FMPosExpression final : public CXFA_FMUnaryExpression {};

class CXFA_FMNegExpression final : public CXFA_FMUnaryExpression {};

class CXFA_FMNotExpression final : public CXFA_FMUnaryExpression {};

class CXFA_FMCallExpression final : public CXFA_FMSimpleExpression {};

class CXFA_FMDotAccessorExpression final : public CXFA_FMChainableExpression {};

class CXFA_FMIndexExpression final : public CXFA_FMSimpleExpression {};

class CXFA_FMDotDotAccessorExpression final
    : public CXFA_FMChainableExpression {};

class CXFA_FMMethodCallExpression final : public CXFA_FMChainableExpression {};

class CXFA_FMFunctionDefinition final : public CXFA_FMExpression {};

class CXFA_FMVarExpression final : public CXFA_FMExpression {};

class CXFA_FMExpExpression final : public CXFA_FMExpression {};

class CXFA_FMBlockExpression final : public CXFA_FMExpression {};

class CXFA_FMDoExpression final : public CXFA_FMExpression {};

class CXFA_FMIfExpression final : public CXFA_FMExpression {};

class CXFA_FMWhileExpression final : public CXFA_FMExpression {};

class CXFA_FMBreakExpression final : public CXFA_FMExpression {};

class CXFA_FMContinueExpression final : public CXFA_FMExpression {};

class CXFA_FMForExpression final : public CXFA_FMExpression {};

class CXFA_FMForeachExpression final : public CXFA_FMExpression {};

class CXFA_FMAST : public cppgc::GarbageCollected<CXFA_FMAST> {};

bool CXFA_IsTooBig(const WideTextBuffer& js);

#endif  // XFA_FXFA_FORMCALC_CXFA_FMEXPRESSION_H_