2c4daf7fce5c7bf073e056da165042e7699f6ad3
[blender.git] / source / blender / blenkernel / BKE_sequence.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.  
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2004 Blender Foundation.
24  * All rights reserved.
25  *
26  * Contributor(s): Blender Foundation (2008).
27  *
28  * ***** END GPL LICENSE BLOCK *****
29  */
30
31 #ifndef BKE_SEQUENCE_H
32 #define BKE_SEQUENCE_H
33
34 struct Editing;
35 struct Sequence;
36
37 /* free */
38
39 void seq_free_sequence(struct Sequence *seq);
40 void seq_free_editing(struct Editing *ed);
41
42 /* sequence iterator */
43
44 typedef struct SeqIterator {
45         struct Sequence **array;
46         int tot, cur;
47
48         struct Sequence *seq;
49         int valid;
50 } SeqIterator;
51
52 void seq_begin(struct Editing *ed, SeqIterator *iter);
53 void seq_next(SeqIterator *iter);
54 void seq_end(SeqIterator *iter);
55
56 void seq_array(struct Editing *ed, struct Sequence ***array, int *tot);
57
58 #define SEQ_BEGIN(ed, seq) \
59         { \
60                 SeqIterator iter;\
61                 for(seq_begin(ed, &iter); iter.valid; seq_next(&iter)) { \
62                         seq= iter.seq;
63
64 #define SEQ_END \
65                 } \
66                 seq_end(&iter); \
67         }
68
69 #endif
70