| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include <rtthread.h>
- #include <jerry_util.h>
- class Circle
- {
- private:
- int radius ;
- public:
- Circle(int radius);
- int getRadius();
- float getCircumference();
- };
- Circle::Circle(int radius)
- {
- this->radius = radius;
- }
- int Circle::getRadius()
- {
- return this->radius;
- }
- float Circle::getCircumference()
- {
- return (2 * 3.1415 *this->radius);
- }
- void circle_free_callback(void *native_p)
- {
- Circle* rect = (Circle*)native_p;
- delete(rect);
- }
- const static jerry_object_native_info_t circle_info =
- {
- circle_free_callback
- };
- DECLARE_HANDLER(getCircumference)
- {
- void* native_pointer = RT_NULL;
- jerry_get_object_native_pointer(this_value,&native_pointer,RT_NULL);
- if(native_pointer)
- {
- Circle* circle = (Circle*)native_pointer;
- jerry_value_t js_circumference = jerry_create_number(circle->getCircumference());
- return js_circumference;
- }
- return jerry_create_undefined();
- };
- jerry_value_t Circle_init()
- {
- jerry_value_t js_circle = jerry_create_object();
- Circle* circle = new Circle(5);
- jerry_set_object_native_pointer(js_circle,circle,&circle_info);
- jerry_value_t js_radius = jerry_create_number(circle->getRadius());
- js_set_property(js_circle,strdup("radius"),js_radius);
- jerry_release_value(js_radius);
- REGISTER_METHOD(js_circle,getCircumference);
- return js_circle;
- }
- JS_MODULE(Circle,Circle_init);
|