MySQL 9.3.0
Source Code Documentation
polyglot_javascript.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024, 2025, Oracle and/or its affiliates.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License, version 2.0,
6 * as published by the Free Software Foundation.
7 *
8 * This program is designed to work with certain software (including
9 * but not limited to OpenSSL) that is licensed under separate terms,
10 * as designated in a particular file or component or in included license
11 * documentation. The authors of MySQL hereby grant you an additional
12 * permission to link the program and your derivative works with the
13 * separately licensed software that they have either included with
14 * the program or referenced in the documentation.
15 *
16 * This program is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
19 * the GNU General Public License, version 2.0, for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software Foundation, Inc.,
23 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 */
25
26#ifndef MYSQLSHDK_SCRIPTING_POLYGLOT_LANGUAGES_POLYGLOT_JAVASCRIPT_H_
27#define MYSQLSHDK_SCRIPTING_POLYGLOT_LANGUAGES_POLYGLOT_JAVASCRIPT_H_
28
29#include <list>
30#include <memory>
31#include <stack>
32#include <string>
33#include <vector>
34
36
39
40namespace shcore {
41namespace polyglot {
42
44 public:
46
47 ~Java_script_interface() override = default;
48
49 const char *get_language_id() const override { return "js"; }
50
51 void initialize(const std::shared_ptr<IFile_system> &fs = {}) override;
52
53 void finalize() override;
54
55 poly_value undefined() const override;
56 bool is_undefined(poly_value value) const override;
57 poly_value array_buffer(const std::string &data) const override;
58 bool is_object(poly_value object,
59 std::string *class_name = nullptr) const override;
60 const std::vector<std::string> &keywords() const override;
61
62 private:
63 poly_value create_exception_object(
64 const std::string &error, poly_value exception_object) const override;
65
67};
68
69} // namespace polyglot
70} // namespace shcore
71
72#endif // MYSQLSHDK_SCRIPTING_POLYGLOT_LANGUAGES_POLYGLOT_JAVASCRIPT_H_
Definition: polyglot_javascript.h:43
poly_value array_buffer(const std::string &data) const override
Return the guest language interpretation of a binary string.
Definition: polyglot_javascript.cc:61
const std::vector< std::string > & keywords() const override
Retrieves the list of keywords in the guest language.
Definition: polyglot_javascript.cc:75
bool is_undefined(poly_value value) const override
Returns true if the provided value is undefined in the guest language.
Definition: polyglot_javascript.cc:49
poly_value undefined() const override
Return the a guest language interpretation of the Undefined C++ value.
Definition: polyglot_javascript.cc:45
bool is_object(poly_value object, std::string *class_name=nullptr) const override
Return true if the guest language identifies the value as an object.
Definition: polyglot_javascript.cc:70
void initialize(const std::shared_ptr< IFile_system > &fs={}) override
Definition: polyglot_javascript.cc:87
poly_value create_exception_object(const std::string &error, poly_value exception_object) const override
Definition: polyglot_javascript.cc:102
Store m_undefined
Definition: polyglot_javascript.h:66
void finalize() override
Definition: polyglot_javascript.cc:97
const char * get_language_id() const override
Definition: polyglot_javascript.h:49
The polyglot library may support several languages (guest languages), and provides out of the box C++...
Definition: polyglot_language.h:116
Polyglot_language(Polyglot_common_context *common_context, const std::string &debug_port="")
Definition: polyglot_language.cc:105
Helper class to handle polyglot values made permanent.
Definition: polyglot_store.h:47
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
Definition: file_system_exceptions.h:34