コード例 #1
0
ファイル: debugger.c プロジェクト: adsr/agar
static void
FindWidgets(AG_Widget *wid, AG_Tlist *tl, int depth)
{
	char text[AG_TLIST_LABEL_MAX];
	AG_TlistItem *it;
	AG_Widget *widChld;

	Strlcpy(text, OBJECT(wid)->name, sizeof(text));
	if (AG_OfClass(wid, "AG_Widget:AG_Window:*")) {
		AG_Window *win = (AG_Window *)wid;

		Strlcat(text, " (\"", sizeof(text));
		Strlcat(text, win->caption, sizeof(text));
		Strlcat(text, "\")", sizeof(text));
	}
	it = AG_TlistAddPtr(tl, NULL, text, wid);
	it->depth = depth;
	it->cat = "widget";
	
	if (!TAILQ_EMPTY(&OBJECT(wid)->children)) {
		it->flags |= AG_TLIST_HAS_CHILDREN;
	}
	if ((it->flags & AG_TLIST_HAS_CHILDREN) &&
	    AG_TlistVisibleChildren(tl, it)) {
		OBJECT_FOREACH_CHILD(widChld, wid, ag_widget)
			FindWidgets(widChld, tl, depth+1);
	}
}
コード例 #2
0
ファイル: dbobject.c プロジェクト: LiberatorUSA/GUCEF
/* Load the given object's data from the database. */
int
AG_DbObjectLoad(void *obj, AG_Db *db, const char *key)
{
	AG_DbObject *dbo = obj;
	AG_DataSource *ds;
	AG_DbEntry dbe;

#ifdef AG_DEBUG
	if (!AG_OfClass(dbo, "AG_DbObject:*")) {
		AG_SetError("Object is not an AG_DbObject");
		return (-1);
	}
#endif
	if (AG_DbLookup(db, &dbe, key) == -1) {
		return (-1);
	}
	if ((ds = AG_OpenCore(dbe.data, dbe.dataSize)) == NULL) {
		return (-1);
	}
	if (AG_ObjectUnserialize(dbo, ds) == -1) {
		AG_CloseCore(ds);
		return (-1);
	}
	AG_CloseCore(ds);
	return (0);
}