void bitwriter2::flush(std::ostream & os) { while(bits != 0) { addbit(os, 0); } return; }
void bitwriter2::write(std::ostream & os, const void * data, int len) { unsigned char * c = (unsigned char *) data; unsigned char bitno = 0; for(int i=0; i<len; i++) { addbit(os, (*c) & MASKS[bitno]); bitno++; if(bitno == 8) { c++; bitno = 0; } } return; }
static void addclosure(bitset ss, nfa *nf, int istate) { if (addbit(ss, istate)) { nfastate *st = &nf->nf_state[istate]; nfaarc *ar = st->st_arc; int i; for (i = st->st_narcs; --i >= 0; ) { if (ar->ar_label == EMPTY) addclosure(ss, nf, ar->ar_arrow); ar++; } } }
static void e_webdav_discover_content_fill_discovered_sources (GtkTreeView *tree_view, guint supports_filter, GSList *discovered_sources) { GtkListStore *list_store; GtkTreeModel *model; GtkTreeIter iter; GSList *link; /* It's okay to pass NULL here */ if (!tree_view) return; g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); model = gtk_tree_view_get_model (tree_view); list_store = GTK_LIST_STORE (model); gtk_list_store_clear (list_store); for (link = discovered_sources; link; link = g_slist_next (link)) { const EWebDAVDiscoveredSource *source = link->data; guint supports_bits; GString *supports; gchar *description_markup, *colorstr = NULL; gboolean show_color = FALSE; GdkRGBA rgba; if (!source || (supports_filter && (source->supports & supports_filter) == 0) || !source->display_name) continue; if (source->color && *source->color) { gint rr, gg, bb; if (gdk_rgba_parse (&rgba, source->color)) { show_color = TRUE; } else if (sscanf (source->color, "#%02x%02x%02x", &rr, &gg, &bb) == 3) { rgba.red = ((gdouble) rr) / 255.0; rgba.green = ((gdouble) gg) / 255.0; rgba.blue = ((gdouble) bb) / 255.0; rgba.alpha = 1.0; show_color = TRUE; } if (show_color) { rr = 0xFF * rgba.red; gg = 0xFF * rgba.green; bb = 0xFF * rgba.blue; colorstr = g_strdup_printf ("#%02x%02x%02x", rr & 0xFF, gg & 0xFF, bb & 0xFF); } } if (source->description && *source->description) { description_markup = g_markup_printf_escaped ("<b>%s</b>\n<small>%s</small>", source->display_name, source->description); } else { description_markup = g_markup_printf_escaped ("<b>%s</b>", source->display_name); } supports_bits = source->supports; supports = g_string_new (""); #define addbit(flg, cpt) { \ if (((flg) & supports_bits) != 0) { \ if (supports->len) \ g_string_append (supports, ", "); \ g_string_append (supports, cpt); \ } \ } addbit (E_WEBDAV_DISCOVER_SUPPORTS_CONTACTS, C_("WebDAVDiscover", "Contacts")); addbit (E_WEBDAV_DISCOVER_SUPPORTS_EVENTS, C_("WebDAVDiscover", "Events")); addbit (E_WEBDAV_DISCOVER_SUPPORTS_MEMOS, C_("WebDAVDiscover", "Memos")); addbit (E_WEBDAV_DISCOVER_SUPPORTS_TASKS, C_("WebDAVDiscover", "Tasks")); #undef addbit gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, COL_HREF_STRING, source->href, COL_SUPPORTS_UINT, source->supports, COL_DISPLAY_NAME_STRING, source->display_name, COL_COLOR_STRING, colorstr, COL_DESCRIPTION_STRING, description_markup, COL_SUPPORTS_STRING, supports->str, COL_COLOR_GDKRGBA, show_color ? &rgba : NULL, COL_SHOW_COLOR_BOOLEAN, show_color, -1); g_free (description_markup); g_free (colorstr); g_string_free (supports, TRUE); } }
static void calcfirstset(grammar *g, dfa *d) { int i, j; state *s; arc *a; int nsyms; int *sym; int nbits; static bitset dummy; bitset result; int type; dfa *d1; label *l0; if (Py_DebugFlag) printf("Calculate FIRST set for '%s'\n", d->d_name); if (dummy == NULL) dummy = newbitset(1); if (d->d_first == dummy) { fprintf(stderr, "Left-recursion for '%s'\n", d->d_name); return; } if (d->d_first != NULL) { fprintf(stderr, "Re-calculating FIRST set for '%s' ???\n", d->d_name); } d->d_first = dummy; l0 = g->g_ll.ll_label; nbits = g->g_ll.ll_nlabels; result = newbitset(nbits); sym = (int *)PyObject_MALLOC(sizeof(int)); if (sym == NULL) Py_FatalError("no mem for new sym in calcfirstset"); nsyms = 1; sym[0] = findlabel(&g->g_ll, d->d_type, (char *)NULL); s = &d->d_state[d->d_initial]; for (i = 0; i < s->s_narcs; i++) { a = &s->s_arc[i]; for (j = 0; j < nsyms; j++) { if (sym[j] == a->a_lbl) break; } if (j >= nsyms) { /* New label */ sym = (int *)PyObject_REALLOC(sym, sizeof(int) * (nsyms + 1)); if (sym == NULL) Py_FatalError( "no mem to resize sym in calcfirstset"); sym[nsyms++] = a->a_lbl; type = l0[a->a_lbl].lb_type; if (ISNONTERMINAL(type)) { d1 = PyGrammar_FindDFA(g, type); if (d1->d_first == dummy) { fprintf(stderr, "Left-recursion below '%s'\n", d->d_name); } else { if (d1->d_first == NULL) calcfirstset(g, d1); mergebitset(result, d1->d_first, nbits); } } else if (ISTERMINAL(type)) { addbit(result, a->a_lbl); } } } d->d_first = result; if (Py_DebugFlag) { printf("FIRST set for '%s': {", d->d_name); for (i = 0; i < nbits; i++) { if (testbit(result, i)) printf(" %s", PyGrammar_LabelRepr(&l0[i])); } printf(" }\n"); } PyObject_FREE(sym); }