-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathJSValue.cpp
More file actions
38 lines (33 loc) · 1.12 KB
/
JSValue.cpp
File metadata and controls
38 lines (33 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "pch.h"
#include "JSValue.h"
#include "JSString.h"
#include "JSArray.h"
#include "JSFunction.h"
GCObject* JSValue::gcAccess() const {
switch (type) {
case JSVT_String: return data.str->gcAccess();
case JSVT_Array: return data.array->gcAccess();
case JSVT_Function: return data.func->gcAccess();
default: return NULL;
}
}
JSValue JSValue::fromString(const char *str) {
JSValue r;
r.type = JSVT_String;
r.data.str = JSStringManager::instance()->get(str);
return r;
}
string JSValue::toString() const {
switch (type) {
case JSVT_Nil: return "nil";
case JSVT_Boolean: return data.b ? "true" : "false";
case JSVT_Number: return (int)data.num == data.num ? format("%d", (int)data.num) : format("%lf", data.num);
case JSVT_String: return data.str->buf;
case JSVT_Array: return format("[array %p]", data.array);
case JSVT_Function: return format("[function %p]", data.func);
default: ASSERT(0); return "";
}
}
JSValue JSValue::NIL;
JSValue JSValue::TRUE(fromBoolean(true));
JSValue JSValue::FALSE(fromBoolean(false));