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 {
117  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:
155  using List = Vector<Value>;
156 
160  Value()
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  }
260  ~Value()
261  {
262  reset();
263  }
264 
268  Value& operator=(const Value& value)
269  {
270  *this = CopyValue{value.value};
271  return *this;
272  }
273 
277  Value& operator=(Value&& value)
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:
552  using List = Vector<Object>;
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 
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 
616  NamedItem operator[](const String& name)
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 
717  Callable getFunction(const String& name);
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 
767  ErrorType errorType() const
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 : public std::iterator<std::random_access_iterator_tag, IndexedItem>
854  {
855  public:
856  Iterator(const Iterator&) = default;
857 
858  Iterator(Array& array, unsigned index) : item(array, index)
859  {
860  }
861 
863  {
864  ++item.mIndex;
865  return *this;
866  }
867 
869  {
870  Iterator tmp(*this);
871  ++item.mIndex;
872  return tmp;
873  }
874 
875  Iterator operator+=(size_t distance)
876  {
877  Iterator tmp(*this);
878  item.mIndex += distance;
879  return tmp;
880  }
881 
882  bool operator==(const Iterator& rhs) const
883  {
884  return item == rhs.item;
885  }
886 
887  bool operator!=(const Iterator& rhs) const
888  {
889  return !operator==(rhs);
890  }
891 
893  {
894  return item;
895  }
896 
897  private:
898  IndexedItem item;
899  };
900 
901  using Object::Object;
902 
906  Array(size_t size) : Object(OwnedValue{jerry_create_array(size)})
907  {
908  }
909 
913  size_t count() const
914  {
915  return jerry_get_array_length(get());
916  }
917 
925  {
926  return Iterator(*this, 0);
927  }
928 
930  Iterator end()
931  {
932  return Iterator(*this, count());
933  }
944  IndexedItem operator[](unsigned index)
945  {
946  return IndexedItem(*this, index);
947  }
948 
952  const Value operator[](unsigned index) const
953  {
954  return getProperty(index);
955  }
956 
962  Value getProperty(unsigned index) const
963  {
964  return OwnedValue{jerry_get_property_by_index(get(), index)};
965  }
966 
973  Value setProperty(unsigned index, const Value& value)
974  {
975  return OwnedValue{jerry_set_property_by_index(get(), index, value.get())};
976  }
978 };
979 
983 class Callable : public Object
984 {
985 public:
986  using List = Vector<Callable>;
987 
988  using Object::Object;
989 
993  Value call(const Object& thisValue, const Value& arg);
994 
1000  Value call(const Object& thisValue, std::initializer_list<Value> args = {});
1001 
1005  FunctionType functionType() const
1006  {
1007  return FunctionType(jerry_function_get_type(get()));
1008  }
1009 };
1010 
1014 inline Object global()
1016  return OwnedValue{jerry_get_global_object()};
1017 }
1018 
1019 } // namespace Jerryscript
1020 
Value setProperty(const Value &name, const Value &value)
Set a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:645
Null()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:127
Iterator end()
end
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:940
unsigned index() const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:825
Value
Definition: Components/IFS/src/include/IFS/Error.h:82
Error(ErrorType type, const String &message)
Error with type and message.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:753
ArgumentError(const String &functionName)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:807
size_t readString(unsigned offset, char *buffer, size_t length) const
Get content from within a string value.
XX(name, value)
Error
Definition: Libraries/DiskStorage/src/include/Storage/Disk/Error.h:54
describes a counted string stored in flash memory
Definition: String.hpp:173
String subString(unsigned offset, size_t length) const
Get content from within a string value.
bool isBoolean() const
A true/false value type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:390
FunctionType
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:50
Value call(const Object &thisValue, const Value &arg)
Call with one argument.
bool isNull() const
Is this a NULL value?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:414
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:374
The String class.
Definition: WString.h:136
bool isObject() const
Is this an Object type? If so, can cast to Object class.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:430
Error(ErrorType type)
Error with type only.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:746
Value runFunction(const String &name, Value &arg)
Call a specified JavaScript function with exactly one argument.
Value()
Construct An empty (unused) value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:170
IndexedItem & operator=(const Value &value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:840
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:299
Value & operator=(const Value &value)
Assignment copy operator.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:278
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:707
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:863
IndexedItem operator*()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:902
Definition: Libraries/jerryscript/src/include/Jerryscript/Context.h:123
ErrorType errorType() const
Get type of error.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:777
Iterator operator+=(size_t distance)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:885
bool removeProperty(const Value &name)
Remove a property.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:675
Iterator begin()
begin
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:934
Vector< Value > List
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:165
bool isDefined() const
Contains a javascript value, but contents undefined.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:382
Represents a Jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:162
ErrorType
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:38
NamedItem & operator=(const Value &value)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:584
bool isFalse() const
Is this a Boolean type set to False?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:398
Ecma
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:73
bool isString() const
Is this a String?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:422
bool operator!=(const Iterator &rhs) const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:897
Object global()
Get global context.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:1024
Array objects have properties accessed by index.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:815
Value getProperty(unsigned index) const
Get a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:972
Callable getFunction(const String &name)
Retrieve the given property as a function.
~Value()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:270
#define JERRY_ECMA_MAP(XX)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:63
String toString(Jerryscript::Type type)
bool unregisterFunction(const String &name)
Unregister an external function.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:718
Use to initialise Value object to a string given a native/raw jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:104
Used by as() method.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:490
Iterator & operator++()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:872
bool isTrue() const
Is this a Boolean type set to True?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:406
bool hasProperty(const Value &name) const
Determine if a property exists.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:665
Object representing an external function implementation.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:548
Iterator and operator[] access uses this wrapper class so items may be written or read.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:823
const String & name() const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:569
Use to create Value containing javascript 'undefined'.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:113
Type type() const
Get value type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:447
Use to create Value containing javascript 'null'.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:126
FunctionType functionType() const
Get specific type of callable object.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:1015
const jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:131
Use to initialise Value object by copying native/raw jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:95
Undefined()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:114
jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:105
bool operator==(const IndexedItem &rhs) const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:846
Use to initialise Value object by taking ownership of native/raw jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:86
Iterator(const Iterator &)=default
Feature
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:56
Value setProperty(unsigned index, const Value &value)
Set a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:983
ObjectType
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:44
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:356
jerry_value_t release()
Get raw/native value and release ownership.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:333
Object()
Default constructor creates a new, empty object.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:606
jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:87
#define F(string_literal)
Wrap a string literal stored in flash and access it using a String object.
Definition: WString.h:113
ExternalFunction(jerry_external_handler_t handler)
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:551
Error object class.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:733
Callable object represent functions.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:993
const jerry_value_t & get() const
const get()
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:316
Object toObject() const
Create a new object from this value.
Iterator and operator[] access uses this wrapper class so items may be written or read.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:567
FSTR::Array< Ssl::CipherSuite > Array
Definition: CipherSuite.h:190
Value getProperty(const Value &name) const
Get a property value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:655
bool isCallable() const
Is this object a function? If so, can cast to Callable type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:348
bool isNumber() const
Does this value contain a Number?
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:438
const jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:118
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:626
bool isError() const
Determine if value represents an error. If so, can cast to Error type.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:365
Array(size_t size)
Create a new, fixed-size array with the given number of elements.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:916
T as() const
Get value of object with specific type. e.g. value.as<int>().
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:531
size_t count() const
Get number of elements in the array.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:923
Value toString() const
Create a new string value from this value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:460
Vector class template.
Definition: WVector.h:31
jerry_value_t value
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:96
bool operator==(const Iterator &rhs) const
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:892
Array keys() const
Get list of property names.
IndexedItem operator[](unsigned index)
operator[] uses IndexedItem proxy object so value can be assigned or read
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:954
const Value & v
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:491
Value message() const
Get error message, if any.
Type
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:32
Objects support named properties.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:559