Hey, This week I have explored several libraries and I have prepared a report mentioning their pros and cons @here <https://docs.google.com/document/d/1X5ApmVxz0pXcGUCF9Um5VhVZV403LWDIYFbKYg1aLoQ/edit?usp=sharing> I am using Visual Studios 2019 to build libraries on windows, and while exploring the external libraries I have seen that most of the libraries use <unistd.h> and <pthread.h> which are not supported on windows (even though it is mentioned in the documentation that the library supports Windows). I have also tried Cygwin to compile these libraries on windows but got no success... Is there a way to compile these libraries on windows other than using Visual Studios and Cygwin? More importantly, should I consider such libraries?
One more thing that I have noticed is that most of the libraries provide *tags *that could be printed with log messages. So, I was thinking to use something like this in ftdebug.h to print the tracing component: #define FT_COMPONENT( x ) FT_COMPONENT_TAG_( x ) #define FT_COMPONENT_TAG_ #x #define FT_TRACE( level, varformat ) do \ { \ if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) { \ set_tag( FT_COMPONENT_TAG( FT_COMPONENT ) ); \ FT_Log varformat; \ } while( 0 ) \ Please, look into the report and let me know if there are any concerns... Thanks, Priyesh On Sun, May 24, 2020 at 3:22 PM <ar...@hasitzka.com> wrote: > Hi Priyesh, > > > 2. Modifying the output stream at runtime. > > > > a. Dynamic change of desired output log levels. > > b. Dynamic log redirection. > > > > [...] > > > > All of this should be configurable either with a config file or with > > environment variables. I'm not sure how item 2 can be handled best; if > this > > feature is active it maybe makes sense to force re-reading of environment > > variables and config files as sonn as a FreeType API function is called. > > I believe a good way to handle point 2 (and blend in well with the rest of > the project) is to allow overrides of the these values (from the config > file or env variables) with dedicated functions at runtime; something like > > ```c > FT_Trace_Set_Level( FT_Trace_Level level ); > > typedef void > (*FT_Trace_Callback)( FT_Trace_Level level, > const char* fmt, > va_list args ); > > FT_Trace_Set_Callback( FT_Trace_Callback callback ); > > FT_Trace_Set_Default_Callback( void ); > ``` > > Note this is just a quick sketch and the actual callback function might > have a forth parameter for the module ... or this can be part of `fmt` and > `args` ... tbd :) > > One thought also on the timestamps: let's plan them flexible please (at > least on/off toggle-able per env variable) as there's a good chance that > you want to use your own TS format when retrieving the logs through the > callback. > > I totally agree with the rest :) > > Have a lovely Sunday, > Armin > >