adding some control flow macros (not using yet)
This commit is contained in:
1 parent
050019c8c0
commit
ed755e34f1
3 files changed
+65
No files matched your search
@@ -350,4 +350,51 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef each_iter
|
||||
#define each_iter( type, iter, end ) \
|
||||
for ( type iter = 0; iter < (end); ++ iter )
|
||||
#endif
|
||||
|
||||
#ifndef index_iter
|
||||
#define index_iter( type, iter, begin, op, end ) \
|
||||
for ( type iter = (begin); iter op (end); ( (begin) < (end) ? ++ iter : -- iter ) )
|
||||
#endif
|
||||
|
||||
#ifndef range_iter
|
||||
#define range_iter( iter, op, range ) \
|
||||
for ( typeof( (range).p0 ) iter = (range).p0; iter op (range).p1; ( (range).p0 < (range).p1 ? ++ iter : -- iter ) )
|
||||
#endif
|
||||
|
||||
#ifndef defer
|
||||
#define defer( expr ) \
|
||||
for ( u32 once = 0; once != 1; ++ once, (expr) )
|
||||
#endif
|
||||
|
||||
#ifndef defer_rewind
|
||||
#define defer_rewind( cursor ) \
|
||||
for ( struct { typeof( cursor ) sp; u32 once; } defer_state = { (cursor), 0 }; \
|
||||
defer_state.once != 1; \
|
||||
++ defer_state.once, (cursor) = defer_state.sp )
|
||||
#endif
|
||||
|
||||
#ifndef defer_info
|
||||
#define defer_info( type, expr, ... ) \
|
||||
for ( type info = { __VA_ARGS__ }; info.once != 1; ++ info.once, (expr) )
|
||||
#endif
|
||||
|
||||
#ifndef scope
|
||||
#define scope( begin, end ) \
|
||||
for ( u32 once = ( (begin), 0 ); once != 1; ++ once, (end) )
|
||||
#endif
|
||||
|
||||
#ifndef scope_info
|
||||
#define scope_info( type, begin, end ) \
|
||||
for ( type info = (begin); info.once != 1; ++ info.once, (end) )
|
||||
#endif
|
||||
|
||||
#ifndef do_while
|
||||
#define do_while( cond ) \
|
||||
for ( u32 once = 0; once != 1 || (cond); once = 1 )
|
||||
#endif
|
||||
|
||||
#pragma endregion Macros
|
||||
@@ -79,6 +79,15 @@ int gen_main()
|
||||
(Macro { txt("do_once_defer"), MT_Expression, MF_Functional }),
|
||||
(Macro { txt("do_once_start"), MT_Statement, MF_Null }),
|
||||
(Macro { txt("do_once_end"), MT_Statement, MF_Null }),
|
||||
(Macro { txt("each_iter"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("index_iter"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("range_iter"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("defer"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("defer_rewind"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("defer_info"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("scope"), MT_Statement, MF_Functional | MF_Expects_Body | MF_Allow_As_Identifier }),
|
||||
(Macro { txt("scope_info"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("do_while"), MT_Statement, MF_Functional | MF_Expects_Body }),
|
||||
(Macro { txt("labeled_scope_start"), MT_Statement, MF_Null }),
|
||||
(Macro { txt("labeled_scope_end"), MT_Statement, MF_Null }),
|
||||
(Macro { txt("compiler_decorated_func_name"), MT_Expression, MF_Null }),
|
||||
|
||||
@@ -33,6 +33,15 @@ word stringize, gen_stringize
|
||||
word do_once, gen_do_once
|
||||
word do_once_start, gen_do_once_start
|
||||
word do_once_end, gen_do_once_end
|
||||
word each_iter, gen_each_iter
|
||||
word index_iter, gen_index_iter
|
||||
word range_iter, gen_range_iter
|
||||
word defer, gen_defer
|
||||
word defer_rewind, gen_defer_rewind
|
||||
word defer_info, gen_defer_info
|
||||
word scope, gen_scope
|
||||
word scope_info, gen_scope_info
|
||||
word do_while, gen_do_while
|
||||
word labeled_scope_start, gen_labeled_scope_start
|
||||
word labeled_scope_end, gen_labeled_scope_end
|
||||
word compiler_decorated_func_name, gen_compiler_decorated_func_name
|
||||
|
||||
Reference in new issue
Block a user