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); } }
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; }