// Copyright 2017 PDFium Authors. All rights reserved.
// 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 FXJS_XFA_CJX_SOURCE_H_
#define FXJS_XFA_CJX_SOURCE_H_

#include "fxjs/CJX_Define.h"
#include "fxjs/cjx_node.h"

class CXFA_Source;

class CJX_Source : public CJX_Node {
 public:
  explicit CJX_Source(CXFA_Source* src);
  ~CJX_Source() override;

  JS_METHOD(addNew, CJX_Source);
  JS_METHOD(cancel, CJX_Source);
  JS_METHOD(cancelBatch, CJX_Source);
  JS_METHOD(close, CJX_Source);
  JS_METHOD(deleteItem /*delete*/, CJX_Source);
  JS_METHOD(first, CJX_Source);
  JS_METHOD(hasDataChanged, CJX_Source);
  JS_METHOD(isBOF, CJX_Source);
  JS_METHOD(isEOF, CJX_Source);
  JS_METHOD(last, CJX_Source);
  JS_METHOD(next, CJX_Source);
  JS_METHOD(open, CJX_Source);
  JS_METHOD(previous, CJX_Source);
  JS_METHOD(requery, CJX_Source);
  JS_METHOD(resync, CJX_Source);
  JS_METHOD(update, CJX_Source);
  JS_METHOD(updateBatch, CJX_Source);

 private:
  static const CJX_MethodSpec MethodSpecs[];
};

#endif  // FXJS_XFA_CJX_SOURCE_H_
