| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #include <rtthread.h>
- #include <jerry_util.h>
- class Rectangle
- {
- private:
- int length;
- int width;
-
- public:
- Rectangle(int length,int width);
- int getSize();
- int getLength();
- int getWidth();
- };
- Rectangle::Rectangle(int length,int width)
- {
- this->length = length;
- this->width = width;
- }
- int Rectangle::getSize()
- {
- return (this->length * this->width);
- }
- int Rectangle::getLength()
- {
- return this->length;
- }
- int Rectangle::getWidth()
- {
- return this->width;
- }
- void rectangle_free_callback(void *native_p)
- {
- Rectangle* rect = (Rectangle*)native_p;
- delete(rect);
- }
- const static jerry_object_native_info_t rectangle_info =
- {
- rectangle_free_callback
- };
- DECLARE_HANDLER(getSize)
- {
- void *native_pointer = RT_NULL;
- jerry_get_object_native_pointer(this_value,&native_pointer,RT_NULL);
-
- if(native_pointer)
- {
- Rectangle* rectangle = (Rectangle*)native_pointer;
- jerry_value_t js_size = jerry_create_number(rectangle->getSize());
- return js_size;
- }
- return jerry_create_undefined();
- }
- DECLARE_HANDLER(getLength)
- {
- void *native_pointer = RT_NULL;
- jerry_get_object_native_pointer(this_value,&native_pointer,RT_NULL);
-
- if(native_pointer)
- {
- Rectangle* rectangle = (Rectangle*)native_pointer;
- jerry_value_t js_length = jerry_create_number(rectangle->getLength());
- return js_length;
- }
- return jerry_create_undefined();
- }
- DECLARE_HANDLER(getWidth)
- {
- void *native_pointer = RT_NULL;
- jerry_get_object_native_pointer(this_value,&native_pointer,RT_NULL);
-
- if(native_pointer)
- {
- Rectangle* rectangle = (Rectangle*)native_pointer;
- jerry_value_t js_width = jerry_create_number(rectangle->getWidth());
- return js_width;
- }
- return jerry_create_undefined();
-
- }
- DECLARE_HANDLER(rectangle)
- {
- if(args_cnt !=2 || !jerry_value_is_number(args[0]) || !jerry_value_is_number(args[1]))
- return jerry_create_undefined();
-
- jerry_value_t js_rect = jerry_create_object();
-
- Rectangle* rectangle = new Rectangle(jerry_get_number_value(args[0]),jerry_get_number_value(args[1]));
- jerry_set_object_native_pointer(js_rect, rectangle,&rectangle_info);
-
- jerry_value_t js_length = jerry_create_number(rectangle->getLength());
- jerry_value_t js_width = jerry_create_number(rectangle->getWidth());
-
- js_set_property(js_rect,"length",js_length);
- js_set_property(js_rect,"width",js_width);
-
- jerry_release_value(js_length);
- jerry_release_value(js_width);
-
- REGISTER_METHOD(js_rect,getSize);
- REGISTER_METHOD(js_rect,getLength);
- REGISTER_METHOD(js_rect,getWidth);
-
- return js_rect;
- }
- extern "C"
- {
- int js_example_rect_init(jerry_value_t obj)
- {
- REGISTER_METHOD(obj, rectangle);
- return 0;
- }
- }
|