separated span callbacks

This commit is contained in:
Aliaksei Chapyzhenka 2019-10-23 13:50:49 -07:00
parent 60f0cb8f2f
commit 3cf54a44dd
3 changed files with 59 additions and 66 deletions

View File

@ -4,6 +4,7 @@
"target_name": "vcd",
"sources": [
"vcd_parser.c",
"vcd_spans.c",
"vcd.c"
]
}

67
vcd.c
View File

@ -126,16 +126,6 @@ METHOD(getReason) {
return res;
}
METHOD(getErrorPos) {
ASSERT_ARGC(1)
struct vcd_parser_s *state;
ASSERT_EXTERNAL(args[0], state)
napi_value res;
ASSERT(res, napi_create_int32(env, state->error_pos, &res))
return res;
}
METHOD(getCommand) {
ASSERT_ARGC(1)
struct vcd_parser_s *state;
@ -182,7 +172,7 @@ METHOD(setTrigger) {
ASSERT_EXTERNAL(args[0], state)
ASSERT_STRING(args[1], trigger)
state->trigger = *trigger;
state->trigger = trigger;
napi_value res;
ASSERT(res, napi_create_int32(env, state->error, &res))
@ -194,7 +184,6 @@ napi_value Init(napi_env env, napi_value exports) {
DECLARE_NAPI_METHOD("execute", execute)
DECLARE_NAPI_METHOD("getError", getError)
DECLARE_NAPI_METHOD("getReason", getReason)
DECLARE_NAPI_METHOD("getErrorPos", getErrorPos)
DECLARE_NAPI_METHOD("getCommand", getCommand)
DECLARE_NAPI_METHOD("getTime", getTime)
DECLARE_NAPI_METHOD("getStart", getStart)
@ -203,58 +192,4 @@ napi_value Init(napi_env env, napi_value exports) {
return exports;
}
int commandSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("(%d:%d:%d:%d)(%.*s)\n", s->time, s->command, s->type, s->size, (int)(endp - p), p);
return 0;
};
int scopeIdentifierSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("{%.*s}", (int)(endp - p - 1), p);
return 0;
};
int varSizeSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
s->size = strtol(p, &endp, 10);
return 0;
};
bool stringEq (
const unsigned char* gold,
const unsigned char* p,
const unsigned char* endp
) {
for (size_t i = 0; gold[i] != 0; i++) {
if (gold[i] != p[i]) {
return false;
}
}
return true;
}
int idSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("{%.*s}", (int)(endp - p - 1), p);
if (stringEq("D1", p, endp)) {
if (s->time < 10) {
return 0;
}
if (s->start == 0) {
s->start = s->time;
} else {
s->stop = s->time;
}
}
return 0;
};
int vectorSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("{%.*s}", (int)(endp - p - 1), p);
return 0;
};
int timeSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
s->time = strtol(p, &endp, 10);
// printf("%d\n", s->time);
return 0;
};
NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)

57
vcd_spans.c Normal file
View File

@ -0,0 +1,57 @@
#include <stdio.h>
#include <stdlib.h>
#include "vcd_parser.h"
int stringEq (
const unsigned char* gold,
const unsigned char* p,
const unsigned char* endp
) {
for (size_t i = 0; gold[i] != 0; i++) {
if (gold[i] != p[i]) {
return 0;
}
}
return 1;
}
int commandSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("(%d:%d:%d:%d)(%.*s)\n", s->time, s->command, s->type, s->size, (int)(endp - p), p);
return 0;
};
int scopeIdentifierSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("{%.*s}", (int)(endp - p - 1), p);
return 0;
};
int varSizeSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
s->size = strtol((const char *)p, (char **)&endp, 10);
return 0;
};
int idSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("{%.*s}", (int)(endp - p - 1), p);
if (stringEq((const unsigned char *)("D1"), p, endp)) {
if (s->time < 10) {
return 0;
}
if (s->start == 0) {
s->start = s->time;
} else {
s->stop = s->time;
}
}
return 0;
};
int vectorSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
// printf("{%.*s}", (int)(endp - p - 1), p);
return 0;
};
int timeSpan(vcd_parser_t* s, const unsigned char* p, const unsigned char* endp) {
s->time = strtol((const char *)p, (char **)&endp, 10);
// printf("%d\n", s->time);
return 0;
};