-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathTranslator.cpp
More file actions
37 lines (27 loc) · 1.17 KB
/
Copy pathTranslator.cpp
File metadata and controls
37 lines (27 loc) · 1.17 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
#include "Translator.h"
int Translator::TranslateFile(const std::string &filename) {
std::string codeFilename(filename);
std::vector<uint8_t> jscBuffer = FileUtils::readFile(filename);
if (jscBuffer.empty()) {
std::cerr << "err: File is empty or name is invalid!" << std::endl;
return 1;
}
std::cout << "Processing file: " << filename << std::endl;
std::cout << "File size: " << jscBuffer.size() << std::endl;
JSValue jscObj = JS_ReadObject(JSEnv::ctx, jscBuffer.data(), jscBuffer.size(), 17, 1);
int isUndefined = JS_IsNull(jscObj);
int isNull = JS_IsUndefined(jscObj);
int isException = JS_IsException(jscObj);
if(isUndefined == 1 && isNull == 1){
std::cerr << "err: Javascript object is undefined or null!" << std::endl;
return 1;
}
if(isException == 1){
std::cerr << "err: Got an exception after call JS_ReadObject." << std::endl;
JSValue exception = JS_GetException(JSEnv::ctx);
const char* exception_str = JS_ToCString(JSEnv::ctx, exception);
std::cerr << "JS_ReadObject Exception occurred: " << exception_str << std::endl;
return 1;
}
return 0;
}