Пример #1
0
static void oss_start_w(MSSndCard *card){
	OssData *d=(OssData*)card->data;
	ms_mutex_lock(&d->mutex);
	if (d->read_started==FALSE && d->write_started==FALSE){
		d->write_started=TRUE;
		ms_thread_create(&d->thread,NULL,oss_thread,card);
	}else{
		d->write_started=TRUE;
	}
	_flush_buffer(d->bufferizer);
	ms_mutex_unlock(&d->mutex);
}
Пример #2
0
void lexer_process(void)
{
    token_t token;
    token_t (*process_token)(void) = NULL;

    if (_.eoi_reached)
        return;

    _scan();
    _flush_buffer();

    switch (_cur_char()) {
        case '\0':
            process_token = _process_eoi;
            _.eoi_reached = true;
            break;
        case SIGIL_STR_VAR:
        case SIGIL_INT_VAR:
        case SIGIL_BOOL_VAR:
            process_token = _process_variable;
            break;

        case DELIMITER_STR:
            process_token = _process_string;
            break;

        default:
            // identifer
            if (_char_is_alpha(_cur_char())) {
                process_token = _process_identifier;
                break;
            }

            // literal unsigned integer without prefix sign
            if (_char_is_digit(_cur_char())) {
                process_token = _process_luinteger;
                break;
            }

            // unknown
            process_token = _process_unknown;
    }

    token = process_token();
    _set_token(token);
}