Libraries/jerryscript/src/include/Jerryscript/Types.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * Types.h
8  *
9  * @author: Dec 2021 - Mikee47 <mike@sillyhouse.net>
10  *
11  */
12 
13 #pragma once
14 
15 #include <include/jerryscript.h>
16 #include ".typemaps.h"
17 #include <WString.h>
18 #include <WVector.h>
19 
20 namespace Jerryscript
21 {
22 enum class Type {
23 #define XX(jt, t) t = jt,
24  JERRY_VALUE_TYPE_MAP(XX)
25 #undef XX
26 };
27 
28 enum class ErrorType {
29 #define XX(jt, t) t = jt,
30  JERRY_ERROR_TYPE_MAP(XX)
31 #undef XX
32 };
33 
34 enum class ObjectType {
35 #define XX(jt, t) t = jt,
36  JERRY_OBJECT_TYPE_MAP(XX)
37 #undef XX
38 };
39 
40 enum class FunctionType {
41 #define XX(jt, t) t = jt,
42  JERRY_FUNCTION_TYPE_MAP(XX)
43 #undef XX
44 };
45 
46 enum class Feature {
47 #define XX(jt, t) t = jt,
48  JERRY_FEATURE_MAP(XX)
49 #undef XX
50 };
51 
52 // ECMA values used where simple assignment or check is all that is required
53 #define JERRY_ECMA_MAP(XX) \
54  XX(VALUE_EMPTY, 0x08) \
55  XX(VALUE_FALSE, 0x28) \
56  XX(VALUE_TRUE, 0x38) \
57  XX(VALUE_UNDEFINED, 0x48) \
58  XX(VALUE_NULL, 0x58) \
59  XX(VALUE_TYPE_MASK, 0x07) \
60  XX(TYPE_ERROR, 0x07) \
61  XX(TYPE_OBJECT, 0x03)
62 
63 enum class Ecma {
64 #define XX(name, value) name = value,
66 #undef XX
67 };
68 
76 struct OwnedValue {
77  jerry_value_t value;
78 };
79 
85 struct CopyValue {
86  jerry_value_t value;
87 };
88 
94 struct StringValue {
95  jerry_value_t value;
96 };
97 
103 struct Undefined {
105  {
106  }
107 
108  const jerry_value_t value = jerry_value_t(Ecma::VALUE_UNDEFINED);
109 };
110 
116 struct Null {
118  {
119  }
120 
121  const jerry_value_t value = jerry_value_t(Ecma::VALUE_NULL);
122 };
123 
124 class Object;
125 class Array;
126 class Callable;
127 
152 class Value
153 {
154 public:
156 
161  {
162  }
163 
167  Value(const OwnedValue& value) : value(value.value)
168  {
169  }
170 
174  Value(const CopyValue& value) : value(jerry_acquire_value(value.value))
175  {
176  }
177 
181  Value(const StringValue& value) : value(jerry_value_to_string(value.value))
182  {
183  }
184 
185  Value(const Undefined& value) : value(value.value)
186  {
187  }
188 
189  Value(const Null& value) : value(value.value)
190  {
191  }
192 
196  Value(const Value& value) : Value(CopyValue{value.value})
197  {
198  }
199 
203  Value(Value&& value)
204  {
205  reset();
206  std::swap(this->value, value.value);
207  }
208 
217  Value(int value);
218 
222  Value(unsigned value);
223 
227  Value(double value) : value(jerry_create_number(value))
228  {
229  }
230 
234  Value(bool value) : value(jerry_create_boolean(value))
235  {
236  }
237 
241  Value(const String& s) : value(jerry_create_string_sz(reinterpret_cast<const jerry_char_t*>(s.c_str()), s.length()))
242  {
243  }
244 
248  Value(const char* s) : value(jerry_create_string(reinterpret_cast<const jerry_char_t*>(s)))
249  {
250  }
251 
255  Value(const FSTR::String& s) : Value(String(s))
256  {
257  }
261  {
262  reset();
263  }
264 
268  Value& operator=(const Value& value)
269  {
270  *this = CopyValue{value.value};
271  return *this;
272  }
273 
278  {
279  if(this != &value) {
280  reset();
281  std::swap(this->value, value.value);
282  }
283  return *this;
284  }
285 
289  Value& reset(jerry_value_t value = jerry_value_t(Ecma::VALUE_EMPTY))
290  {
291  if(!isEmpty()) {
292  jerry_release_value(this->value);
293  }
294  this->value = value;
295  return *this;
296  }
297 
306  const jerry_value_t& get() const
307  {
308  return value;
309  }
310 
314  jerry_value_t& get()
315  {
316  return value;
317  }
323  jerry_value_t release()
324  {
325  auto res = value;
326  value = jerry_value_t(Ecma::VALUE_EMPTY);
327  return res;
328  }
329 
338  bool isCallable() const
339  {
340  return jerry_value_is_function(value);
341  }
342 
346  bool isArray() const
347  {
348  return jerry_value_is_array(value);
349  }
350 
355  bool isError() const
356  {
357  return ecmaType() == Ecma::TYPE_ERROR;
358  }
359 
364  bool isEmpty() const
365  {
366  return Ecma(value) == Ecma::VALUE_EMPTY;
367  }
368 
372  bool isDefined() const
373  {
374  return Ecma(value) != Ecma::VALUE_UNDEFINED;
375  }
376 
380  bool isBoolean() const
381  {
382  return jerry_value_is_boolean(value);
383  }
384 
388  bool isFalse() const
389  {
390  return Ecma(value) == Ecma::VALUE_FALSE;
391  }
392 
396  bool isTrue() const
397  {
398  return Ecma(value) == Ecma::VALUE_TRUE;
399  }
400 
404  bool isNull() const
405  {
406  return Ecma(value) == Ecma::VALUE_NULL;
407  }
408 
412  bool isString() const
413  {
414  return jerry_value_is_string(value);
415  }
416 
420  bool isObject() const
421  {
422  return ecmaType() == Ecma::TYPE_OBJECT;
423  }
424 
428  bool isNumber() const
429  {
430  return jerry_value_is_number(value);
431  }
437  Type type() const
438  {
439  return Type(jerry_value_get_type(value));
440  }
441 
445  Object toObject() const;
446 
450  Value toString() const
451  {
452  return StringValue{value};
453  }
454 
462  size_t readString(unsigned offset, char* buffer, size_t length) const;
463 
470  String subString(unsigned offset, size_t length) const;
471 
475  operator String() const;
476 
480  struct As {
481  const Value& v;
482 
483  operator bool() const
484  {
485  return v.isTrue();
486  }
487 
488  operator int() const
489  {
490  return jerry_value_as_int32(v.get());
491  }
492 
493  operator unsigned() const
494  {
495  return jerry_value_as_uint32(v.get());
496  }
497 
498  operator float() const
499  {
500  return jerry_get_number_value(v.get());
501  }
502 
503  operator double() const
504  {
505  return jerry_get_number_value(v.get());
506  }
507 
508  operator String() const
509  {
510  return String(v);
511  }
512  };
513 
521  template <typename T> T as() const
522  {
523  return T(As{*this});
524  }
525 
526 private:
527  Ecma ecmaType() const
528  {
529  return Ecma(value & unsigned(Ecma::VALUE_TYPE_MASK));
530  }
531 
532  jerry_value_t value{jerry_value_t(Ecma::VALUE_EMPTY)};
533 };
534 
538 class ExternalFunction : public Value
539 {
540 public:
541  ExternalFunction(jerry_external_handler_t handler) : Value(OwnedValue{jerry_create_external_function(handler)})
542  {
543  }
544 };
545 
549 class Object : public Value
550 {
551 public:
553 
557  struct NamedItem {
558  public:
559  const String& name() const
560  {
561  return mName;
562  }
563 
564  operator Value() const
565  {
566  return mObject.getProperty(mName);
567  }
568 
569  operator String() const
570  {
571  return operator Value();
572  }
573 
574  NamedItem& operator=(const Value& value)
575  {
576  mObject.setProperty(mName, value);
577  return *this;
578  }
579 
580  private:
581  friend class Object;
582 
583  NamedItem(Object& object, const String& name) : mObject(object), mName(name)
584  {
585  }
586 
587  Object& mObject;
588  String mName;
589  };
590 
591  using Value::Value;
592 
596  Object() : Value(OwnedValue{jerry_create_object()})
597  {
598  }
599 
600  Object(const Value& value) : Value(value)
601  {
602  }
603 
604  Object(Value&& value) : Value(std::move(value))
605  {
606  }
607 
617  {
618  return NamedItem(*this, name);
619  }
620 
624  const Value operator[](const String& name) const
625  {
626  return getProperty(name);
627  }
628 
635  Value setProperty(const Value& name, const Value& value)
636  {
637  return OwnedValue{jerry_set_property(get(), name.get(), value.get())};
638  }
639 
645  Value getProperty(const Value& name) const
646  {
647  return OwnedValue{jerry_get_property(get(), name.get())};
648  }
649 
655  bool hasProperty(const Value& name) const
656  {
657  return jerry_has_property(get(), name.get());
658  }
659 
665  bool removeProperty(const Value& name)
666  {
667  return jerry_delete_property(get(), name.get());
668  }
674  Array keys() const;
675 
682  Value runFunction(const String& name, Value& arg);
683 
689  Value runFunction(const String& name, std::initializer_list<Value> args = {});
690 
697  bool registerFunction(const String& name, jerry_external_handler_t handler)
698  {
699  auto res = setProperty(name, ExternalFunction(handler));
700  return !res.isError();
701  }
702 
708  bool unregisterFunction(const String& name)
709  {
710  return removeProperty(name);
711  }
712 
718 };
719 
723 class Error : public Value
724 {
725 public:
726  using Value::Value;
727 
736  Error(ErrorType type) : Value(OwnedValue{jerry_create_error_sz(jerry_error_t(type), nullptr, 0)})
737  {
738  }
739 
744  : Value(OwnedValue{jerry_create_error_sz(
745  jerry_error_t(type), reinterpret_cast<const jerry_char_t*>(message.c_str()), message.length())})
746  {
747  }
753  Error(const Value& value) : Value(value)
754  {
755  }
756 
760  Error(Value&& value) : Value(std::move(value))
761  {
762  }
763 
768  {
769  return ErrorType(jerry_get_error_type(get()));
770  }
771 
775  Value message() const;
776 
788  operator String() const;
789 };
790 
794 class ArgumentError : public Error
795 {
796 public:
797  ArgumentError(const String& functionName) : Error(ErrorType::Type, functionName + F(": Invalid arguments"))
798  {
799  }
800 };
801 
805 class Array : public Object
806 {
807 public:
808  class Iterator;
809 
813  struct IndexedItem {
814  public:
815  unsigned index() const
816  {
817  return mIndex;
818  }
819 
820  operator Value() const
821  {
822  return mArray.getProperty(mIndex);
823  }
824 
825  operator String() const
826  {
827  return operator Value();
828  }
829 
830  IndexedItem& operator=(const Value& value)
831  {
832  mArray.setProperty(mIndex, value);
833  return *this;
834  }
835 
836  bool operator==(const IndexedItem& rhs) const
837  {
838  return &mArray == &rhs.mArray && mIndex == rhs.mIndex;
839  }
840 
841  private:
842  friend class Array;
843  friend class Iterator;
844 
845  IndexedItem(Array& array, unsigned index) : mArray(array), mIndex(index)
846  {
847  }
848 
849  Array& mArray;
850  unsigned mIndex;
851  };
852 
853  class Iterator
854  {
855  public:
856  using iterator_category = std::random_access_iterator_tag;
858  using difference_type = std::ptrdiff_t;
861 
862  Iterator(const Iterator&) = default;
863 
864  Iterator(Array& array, unsigned index) : item(array, index)
865  {
866  }
867 
869  {
870  ++item.mIndex;
871  return *this;
872  }
873 
875  {
876  Iterator tmp(*this);
877  ++item.mIndex;
878  return tmp;
879  }
880 
881  Iterator operator+=(size_t distance)
882  {
883  Iterator tmp(*this);
884  item.mIndex += distance;
885  return tmp;
886  }
887 
888  bool operator==(const Iterator& rhs) const
889  {
890  return item == rhs.item;
891  }
892 
893  bool operator!=(const Iterator& rhs) const
894  {
895  return !operator==(rhs);
896  }
897 
899  {
900  return item;
901  }
902 
903  private:
904  IndexedItem item;
905  };
906 
907  using Object::Object;
908 
912  Array(size_t size) : Object(OwnedValue{jerry_create_array(size)})
913  {
914  }
915 
919  size_t count() const
920  {
921  return jerry_get_array_length(get());
922  }
923 
931  {
932  return Iterator(*this, 0);
933  }
934 
937  {
938  return Iterator(*this, count());
939  }
950  IndexedItem operator[](unsigned index)
951  {
952  return IndexedItem(*this, index);
953  }
954 
958  const Value operator[](unsigned index) const
959  {
960  return getProperty(index);
961  }
962 
968  Value getProperty(unsigned index) const
969  {
970  return OwnedValue{jerry_get_property_by_index(get(), index)};
971  }
972 
979  Value setProperty(unsigned index, const Value& value)
980  {
981  return OwnedValue{jerry_set_property_by_index(get(), index, value.get())};
982  }
984 };
985 
989 class Callable : public Object
990 {
991 public:
993 
994  using Object::Object;
995 
999  Value call(const Object& thisValue, const Value& arg);
1000 
1006  Value call(const Object& thisValue, std::initializer_list<Value> args = {});
1007 
1012  {
1013  return FunctionType(jerry_function_get_type(get()));
1014  }
1015 };
1016 
1020 inline Object global()
1021 {
1022  return OwnedValue{jerry_get_global_object()};
1023 }
1024 
1025 } // namespace Jerryscript
1026 
String toString(Jerryscript::Type type)
#define JERRY_ECMA_MAP(XX)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:53
#define F(string_literal)
Wrap a string literal stored in flash and access it using a String object.
Definition: WString.h:113
describes a counted string stored in flash memory
Definition: String.hpp:174
Provides consistent error message when checking external function arguments.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:795
ArgumentError(const String &functionName)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:797
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:854
Iterator operator++(int)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:874
Iterator operator+=(size_t distance)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:881
std::ptrdiff_t difference_type
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:858
Iterator(Array &array, unsigned index)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:864
IndexedItem operator*()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:898
bool operator!=(const Iterator &rhs) const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:893
std::random_access_iterator_tag iterator_category
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:856
Iterator & operator++()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:868
Iterator(const Iterator &)=default
bool operator==(const Iterator &rhs) const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:888
Array objects have properties accessed by index.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:806
Value setProperty(unsigned index, const Value &value)
Set a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:979
const Value operator[](unsigned index) const
const operator[] returns value directly
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:958
IndexedItem operator[](unsigned index)
operator[] uses IndexedItem proxy object so value can be assigned or read
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:950
Array(size_t size)
Create a new, fixed-size array with the given number of elements.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:912
Value getProperty(unsigned index) const
Get a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:968
Iterator end()
end
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:936
Iterator begin()
begin
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:930
size_t count() const
Get number of elements in the array.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:919
Callable object represent functions.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:990
Value call(const Object &thisValue, const Value &arg)
Call with one argument.
FunctionType functionType() const
Get specific type of callable object.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:1011
Value call(const Object &thisValue, std::initializer_list< Value > args={})
Call with zero or multiple arguments.
Error object class.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:724
ErrorType errorType() const
Get type of error.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:767
Value message() const
Get error message, if any.
Error(ErrorType type, const String &message)
Error with type and message.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:743
Error(Value &&value)
Move constructor.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:760
Error(ErrorType type)
Error with type only.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:736
Error(const Value &value)
Copy constructor.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:753
Object representing an external function implementation.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:539
ExternalFunction(jerry_external_handler_t handler)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:541
Objects support named properties.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:550
Value setProperty(const Value &name, const Value &value)
Set a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:635
bool hasProperty(const Value &name) const
Determine if a property exists.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:655
bool unregisterFunction(const String &name)
Unregister an external function.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:708
bool removeProperty(const Value &name)
Remove a property.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:665
Callable getFunction(const String &name)
Retrieve the given property as a function.
bool registerFunction(const String &name, jerry_external_handler_t handler)
Register an external function so it may be called from javascript.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:697
Value getProperty(const Value &name) const
Get a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:645
Value runFunction(const String &name, Value &arg)
Call a specified JavaScript function with exactly one argument.
Object()
Default constructor creates a new, empty object.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:596
NamedItem operator[](const String &name)
operator[] uses NamedItem proxy object so value can be assigned or read
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:616
Value runFunction(const String &name, std::initializer_list< Value > args={})
Call a specified JavaScript function with zero or more arguments.
Array keys() const
Get list of property names.
Value()
Construct An empty (unused) value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:160
Object(Value &&value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:604
const Value operator[](const String &name) const
const operator[] returns Value directly
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:624
Object(const Value &value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:600
Represents a Jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:153
Value & operator=(const Value &value)
Assignment copy operator.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:268
~Value()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:260
bool isNumber() const
Does this value contain a Number?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:428
const jerry_value_t & get() const
const get()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:306
Value(unsigned value)
Unsigned integer.
Value(const OwnedValue &value)
Construct a Value and take ownership of the given native value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:167
bool isEmpty() const
An empty Value contains nothing, i.e. no javascript type has been assigned. This gets interpreted as ...
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:364
Value(const String &s)
Wiring String.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:241
Value(const Null &value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:189
Value(int value)
Integer.
jerry_value_t release()
Get raw/native value and release ownership.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:323
bool isObject() const
Is this an Object type? If so, can cast to Object class.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:420
T as() const
Get value of object with specific type. e.g. value.as<int>().
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:521
bool isDefined() const
Contains a javascript value, but contents undefined.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:372
jerry_value_t & get()
get()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:314
Value(const StringValue &value)
Construct a string Value from the given native value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:181
Type type() const
Get value type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:437
Value(const char *s)
NUL-terminated 'C' string.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:248
bool isTrue() const
Is this a Boolean type set to True?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:396
bool isCallable() const
Is this object a function? If so, can cast to Callable type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:338
bool isNull() const
Is this a NULL value?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:404
Value & operator=(Value &&value)
Assignment move operator.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:277
bool isBoolean() const
A true/false value type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:380
bool isString() const
Is this a String?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:412
String subString(unsigned offset, size_t length) const
Get content from within a string value.
Object toObject() const
Create a new object from this value.
Value(bool value)
Boolean.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:234
bool isFalse() const
Is this a Boolean type set to False?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:388
Value toString() const
Create a new string value from this value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:450
bool isError() const
Determine if value represents an error. If so, can cast to Error type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:355
size_t readString(unsigned offset, char *buffer, size_t length) const
Get content from within a string value.
Value(const CopyValue &value)
Construct a Value using a copy (or reference to) the given native value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:174
Value(const Undefined &value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:185
Value(double value)
floating-point
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:227
bool isArray() const
Can this object be accessed as an array? If so, can cast to Array type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:346
Value & reset(jerry_value_t value=jerry_value_t(Ecma::VALUE_EMPTY))
Reset contents of object to new value (default is unassigned)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:289
Value(Value &&value)
Move constructor.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:203
Value(const FSTR::String &s)
Flash String.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:255
Value(const Value &value)
Copy constructor.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:196
Value()
Construct An empty (unused) value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:160
The String class.
Definition: WString.h:137
Vector class template.
Definition: WVector.h:32
Definition: Libraries/jerryscript/src/include/Jerryscript/Context.h:124
Object global()
Get global context.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:1020
ErrorType
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:28
ObjectType
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:34
Ecma
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:63
XX(name, value)
Feature
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:46
Type
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:22
FunctionType
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:40
Iterator and operator[] access uses this wrapper class so items may be written or read.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:813
IndexedItem & operator=(const Value &value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:830
bool operator==(const IndexedItem &rhs) const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:836
unsigned index() const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:815
Use to initialise Value object by copying native/raw jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:85
jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:86
Use to create Value containing javascript 'null'.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:116
Null()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:117
const jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:121
Iterator and operator[] access uses this wrapper class so items may be written or read.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:557
NamedItem & operator=(const Value &value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:574
const String & name() const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:559
Use to initialise Value object by taking ownership of native/raw jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:76
jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:77
Use to initialise Value object to a string given a native/raw jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:94
jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:95
Use to create Value containing javascript 'undefined'.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:103
Undefined()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:104
const jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:108
Used by as() method.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:480
const Value & v
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:481