*
* Copyright (c) Tuomo Valkonen 1999-2007.
*
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
*/
#include <libtu/objlist.h>
/*EXTL_DOC
* Change tagging state of \var{reg} as defined by \var{how}
- * (set/unset/toggle). Resulting state is returned.
+ * (one of \codestr{set}, \codestr{unset}, or \codestr{toggle}).
+ * The resulting state is returned.
*/
EXTL_EXPORT_AS(WRegion, set_tagged)
bool region_set_tagged_extl(WRegion *reg, const char *how)
* Untag all regions.
*/
EXTL_EXPORT
-void ioncore_clear_tags()
+void ioncore_tagged_clear()
{
- while(ioncore_tagged_take_first()!=NULL)
+ while(ioncore_tagged_first(TRUE)!=NULL)
/* nothing */;
}
/*EXTL_DOC
- * Returns first tagged object.
+ * Returns first tagged object, untagging it as well if \var{untag} is set.
*/
EXTL_SAFE
EXTL_EXPORT
-WRegion *ioncore_tagged_first()
+WRegion *ioncore_tagged_first(bool untag)
{
- return (WRegion*)OBJLIST_FIRST(WRegion*, taglist);
-}
-
-
-WRegion *ioncore_tagged_take_first()
-{
- WRegion *reg=(WRegion*)objlist_take_first(&taglist);
+ WRegion *reg;
- if(reg!=NULL){
- reg->flags&=~REGION_TAGGED;
- region_notify_change(reg, ioncore_g.notifies.tag);
+ if(!untag){
+ reg=(WRegion*)OBJLIST_FIRST(WRegion*, taglist);
+ }else{
+ reg=(WRegion*)objlist_take_first(&taglist);
+
+ if(reg!=NULL){
+ reg->flags&=~REGION_TAGGED;
+ region_notify_change(reg, ioncore_g.notifies.tag);
+ }
}
return reg;
}
+
/*EXTL_DOC
* Iterate over tagged regions until \var{iterfn} returns \code{false}.
* The function itself returns \code{true} if it reaches the end of list