/*! \brief Virtual worker function - by default it calls the user callback function.
    \remark The respective callback parameter format is chosen depending on whether clss is defined or not.
*/
void flext::Timer::Work()
{
    if(cback) {
        if(clss) 
            ((bool (*)(flext_base *,void *))cback)(clss,userdata);
        else
            cback(userdata);
    }
}
コード例 #2
0
void JoystickHandler::handleEvent(char key, char info)
{
	char _info = info;
	// For analog stick events, mask info and send the original information via _info
	if(key == LS || key == RS)
	{
		info = info & 4 ? YMOVE : XMOVE;
	}
	
	for(auto it = m_events.begin(); it != m_events.end(); ++it)
	{
		if(it->key == key && it->info == info)
			it->cback(key, _info);
	}
}
コード例 #3
0
ファイル: ekhtml_starttag.c プロジェクト: 0xmono/miranda-ng
static void handle_starttag(ekhtml_parser_t *parser, char *curp,
			    ekhtml_starttag_state *sstate)
{
    ekhtml_tag_container *container;
    ekhtml_starttag_cb_t cback = NULL;
    int taglen = sstate->tagend - 1;
    ekhtml_string_t str;
    ekhtml_attr_t *attr;
    char *upper_str;
    hnode_t *hn;

    upper_str = ekhtml_make_upperstr(curp + 1, taglen);
    str.str = upper_str;
    str.len = taglen;

    if((hn = hash_lookup(parser->startendcb, &str)) &&
       (container = hnode_get(hn)) &&
       container->startfunc)
    {
        cback = container->startfunc;
    } else if(parser->startcb_unk)
        cback = parser->startcb_unk;
    
    if(!cback)
        return;
    
    /* Formulate real attribute callback data from the 'offset' 
       pointer values */
    for(attr=sstate->attrs;attr;attr=attr->next){
        attr->name.str = curp + (int)attr->name.str;
        if(!attr->isBoolean)
            attr->val.str = curp + (int)attr->val.str;
    }
    
    cback(parser->cbdata, &str, sstate->attrs);
}