#define log_init log_alloc
#define log_dealloc log_free
+
+const char *csr_prog_msg;
+void csr_prog_begin( const char *msg )
+{
+ csr_prog_msg = msg;
+}
+
+void csr_prog_update( float const percent )
+{
+ int const k_track_length = 40;
+
+ printf( "\r %s %d%% |", csr_prog_msg, (int)(percent*100.f) );
+
+ // Calculate how many steps travelled
+ int cur_pos = ((float)k_track_length * (1.f-percent));
+
+ for( int i = 0; i < cur_pos; i ++ )
+ printf( " " );
+
+ printf( "🚂🚃🚃🚃🚃" );
+
+ for( int i = 0; i < k_track_length-cur_pos; i ++ )
+ printf( " " );
+
+ printf( "|" );
+
+ fflush( stdout );
+}
+
+void csr_prog_end(void)
+{
+ csr_prog_update( 1.f );
+ printf( "\n" );
+}