Esempio n. 1
0
static int
charclassmatch(const char *pattern, char test, int *s)
{
    char c;
    int counter = 0;
    int resultholder = 0;
    struct bu_vls classname = BU_VLS_INIT_ZERO;
    CHARCLASS *ctclass;

    c = *pattern++;
    while (c && (c != ':') && (resultholder != -1)) {
	if (c == FNMATCH_EOS) resultholder = -1;
	counter++;

	c = *pattern++; /* next */
    }
    c = *pattern++;
    bu_vls_strncpy(&classname, pattern-counter-2, counter);

    ctclass = findclass(bu_vls_addr(&classname));
    if (ctclass == NULL) {
	bu_log("Unknown character class type: %s\n", bu_vls_addr(&classname));
	resultholder = -1;
    } else {
	/*bu_log("classname: %s, test char = %c, (class->checkfun)=%d\n", bu_vls_addr(&classname), test, (ctclass->checkfun)(test));*/
	if ((ctclass->checkfun)(test) != 0) {
	    resultholder = counter;
	} else {
	    resultholder = 0;
	}
    }
    *s = resultholder;
    bu_vls_free(&classname);
    return counter;
}
// ---------------------------------------------------------------------------
// 
// ------------
void bSubStyle::get_styleruns(	bArray& arr,
								bGenericGeoElement* o,
								double scale,
								int pass){
	arr.reset();
	if(o->masked()){
		return;
	}
	
double						val;
	_valbounds.get(1,&_minbound);
	_valbounds.get(_valbounds.count(),&_maxbound);
	o->getValue(_fieldindex,&val);
	if((val<_minbound)||(val>_maxbound)){
		return;
	}
int							clss=findclass(val);
bGenericXMLBaseElement*		elt;
	if(_styleruns.get(clss,&elt)){
		arr.add(&elt);
	}
}
Esempio n. 3
0
File: monkc.c Progetto: sunpaq/monkc
mc_class* _load(const char* name, size_t objsize, MCLoaderPointer loader)
{
	mc_class* aclass = findclass(name);
	//try lock spin lock
	trylock_global_classtable();
	if (aclass == null) {
		//new a item
		aclass = alloc_mc_class(objsize);
		mc_hashitem* item = new_item(name, MCGenericVp(null), hash(name));//nil first
		package_by_item(item, aclass);
		(*loader)(aclass);
		//set item
		//MCBool isOverride, MCBool isFreeValue
		set_item(&mc_global_classtable, item, false, name);
		runtime_log("load a class[%s]\n", name);
	}
	else {
		runtime_log("find a class[%s]\n", name);
	}
	//unlock
	unlock_global_classtable();
	return aclass;
}