Example #1
0
File: main.c Project: Daiver/ad-fy
void REPL(bool verbose){
    Context *globalContext = context_new();
    context_enterScope(globalContext); 
    fillOpTable(globalContext);
    int ext_num = loadExtensions(EXT_LOCATION, globalContext);
    printf("Loaded %d extensions\n", ext_num);
    import(globalContext, "stl.x");
    int n_bytes = 100;
    char *source = malloc(n_bytes + 1);
    for(int i = 0;i < n_bytes + 1;i++) source[i] = 0;
    while (1){
        getline(&source, &n_bytes, stdin);
        //printf("%s\n", source);
        TokenStream ts;
        fillTokenStream(&ts, source); 
        while(!isEndOfStream(&ts)){
            Node head = parse(&ts, 0);
            if(verbose)
                printTree(head, 0);
            ObjectNode *node = execute(globalContext, &head);
            printf("res>");
            printObjectNode(node);
            printf("\n");
        }
    }
//    closeExtensions(lib_handle, ext_num);
    context_leaveScope(globalContext);
}
Example #2
0
File: main.c Project: Daiver/ad-fy
void testExecute(const char *source, bool verbose){
    LOG("testExecuteSecond", "begin");
    Context *globalContext = context_new();
    context_enterScope(globalContext); 
    LOG("testExecuteSecond", "filling op table");
    fillOpTable(globalContext);
    LOG("testExecuteSecond", "loading extensions");
    int ext_num = loadExtensions(EXT_LOCATION, globalContext);
    printf("Loaded %d extensions\n", ext_num);
    LOG("testExecuteSecond", "op table filled");
    import(globalContext, "stl.x");
    TokenStream ts;
    LOG("testExecuteSecond", "starting fill token stream");
    fillTokenStream(&ts, source); 
    LOG("testExecuteSecond", "token stream filled");
    while(!isEndOfStream(&ts)){
        LOG("testExecuteSecond", "calling parse");
        Node head = parse(&ts, 0);
        LOG("testExecuteSecond", "returning form parse");
        LOG("TestExecuteSecond", "calling execute");
        if(verbose)
            printTree(head, 0);
        LOG("testExecuteSecond", "calling execute");
        ObjectNode *node = execute(globalContext, &head);
        if(verbose){
            printf("res>");
            printObjectNode(node);
            printf("\n");
        }
    }
//    closeExtensions(lib_handle, ext_num);
    context_leaveScope(globalContext);
}
FFmpegFrame::~FFmpegFrame()
{
    LOGNS(Omm::AvStream, avstream, trace, "frame dtor ...");
    if (isEndOfStream()) {
        LOG(ffmpeg, trace, "video frame dtor, end of stream frame");
    }
    else if (_pAvPacket) {
       // called for non-decoded packets
        LOG(ffmpeg, trace, "delete " + getName() + " dtor, ffmpeg::av_free_packet() ...");
        av_free_packet(_pAvPacket);
        LOG(ffmpeg, trace, "delete " + getName() + " dtor, ffmpeg::av_free() ...");
        av_free(_pAvPacket);
        _pAvPacket = 0;
        _data = 0;
        _size = 0;
    }
    else if (_pAvFrame) {
        // called for Stream::_pDecodedVideoFrame
        LOG(ffmpeg, trace, "video frame dtor, delete _pAvFrame");
        av_free(_pAvFrame);
        _pAvFrame = 0;
    }
    else if (_data) {
        // called for Stream::_pDecodedAudioFrame
        LOGNS(Omm::AvStream, avstream, trace, "audio frame dtor, delete _data, size " + Poco::NumberFormatter::format(size()));
        delete _data;
        _data = 0;
        _size = 0;
    }
    LOGNS(Omm::AvStream, avstream, trace, "frame dtor finished.");
}
Example #4
0
File: main.c Project: Daiver/ad-fy
void import(Context *context, const char *fname){
    LOG("import", "begin");
    const char *source = readFileAsLine(fname);
    LOG("import", "file read");
    TokenStream ts;
    LOG("import", "filling token stream");
    //printf(">[%s] [%s]\n",fname, source);
    fillTokenStream(&ts, source);
    LOG("import", "token stream filled");
    while(!isEndOfStream(&ts)){ 
        LOG("import", "calling parse");
        Node head = parse(&ts, 0);
        LOG("import", "returned from parse");
        LOG("import", "calling execute");
        ObjectNode *node = execute(context, &head);
        LOG("import", "returned from execute");
    }
}
Example #5
0
char* skipLine(char* it, char* end, std::size_t& num)
{
	std::size_t cnt = 0;

	while (!isEndOfStream(it, end) && !isNewLine(*it))
	{
		++it;
		++cnt;
	}

	while (it != end && isNewLine(*it))
	{
		++it;
		++cnt;
	}

	num = cnt;

	return it;
}