simplify gitignore
[vg.git] / src / vg / vg_platform.h
index e5deae28a1a39626b7c1d0eae8ebe64103b9d826..c81d3474600e048f2117c73c406471ef0ba678ba 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef VG_PLATFORM_H
 #define VG_PLATFORM_H
 
-#include "vg.h"
+//#include "vg.h"
 #include "vg_stdint.h"
 
 /* Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved */
@@ -29,6 +29,10 @@ struct vg_achievement
        const char *name;
 };
 
+#ifndef VG_STATIC
+#define VG_STATIC static
+#endif
+
 #define vg_static_assert _Static_assert
 #define vg_list_size( A ) (sizeof(A)/sizeof(A[0]))
 #define VG_MUST_USE_RESULT __attribute__((warn_unused_result))
@@ -53,7 +57,7 @@ struct vg_achievement
    typedef u64                   vg_timespec;
 
 #else
-       #include <pthread.h>
+   #include <pthread.h>
    #include <semaphore.h>
 
    #define VG_DEPRECATED         __attribute__((deprecated))
@@ -65,41 +69,14 @@ struct vg_achievement
 
 #endif
 
-#include <stdlib.h>
-
-static void vg_fatal_exit_loop( const char *error );
-static void *vg_alloc( size_t size )
-{
-   void *ptr = malloc( size );
-   
-   if( !ptr )
-      vg_fatal_exit_loop( "Out of memory" );
-
-   return ptr;
-}
-
-static void *vg_realloc( void *orig, size_t size )
-{
-   void *ptr = realloc( orig, size );
-
-   if( !ptr )
-      vg_fatal_exit_loop( "Out of memory" );
-
-   return ptr;
-}
-
-/* seems to be a GCC bug when inlining this, its low priority anyway */
-__attribute__ ((noinline))
-static void vg_free( void *ptr )
-{
-   free( ptr );
-}
-
-static void vg_required( void *ptr, const char *path )
+VG_STATIC void vg_strncpy( const char *src, char *dst, u32 len )
 {
-   if( !ptr )
+   for( u32 i=0; i<len; i++ )
    {
-      vg_fatal_exit_loop( path );
+      dst[i] = src[i];
+
+      if( !src[i] )
+         break;
    }
 }
 
@@ -107,14 +84,16 @@ static void vg_required( void *ptr, const char *path )
    TYPE DECL = FN( PATH,##__VA_ARGS__ );                                       \
    vg_required( DECL, "Resource is required but failed to load: '" PATH "'" );
 
+#if 0
 VG_DEPRECATED
-void *malloc( size_t size );
-
+char *strcpy(char* destination, const char* source);
 VG_DEPRECATED
-void *realloc( void *orig, size_t size );
-
+char *strncpy(char *restrict dest, const char *restrict src, size_t n);
 VG_DEPRECATED
-void free( void *ptr );
+char *strcat(char *restrict dest, const char *restrict src);
+VG_DEPRECATED
+char *strncat(char *restrict dest, const char *restrict src, size_t n);
+#endif
 
 #include <stdio.h>
 #include <dirent.h>
@@ -124,24 +103,24 @@ void free( void *ptr );
 #include <math.h>
 #include <assert.h>
 
-static int     vg_thread_run( void *pfunc, void *data );
-static void    vg_thread_exit(void);
-static void    vg_set_thread_name( const char *name );
-static int     vg_semaphore_init( vg_semaphore *sem, u32 value );
-static int     vg_semaphore_trywait( vg_semaphore *sem );
-static int     vg_semaphore_wait( vg_semaphore *sem );
-static int     vg_semaphore_post( vg_semaphore *sem );
-static void    vg_semaphore_free( vg_semaphore *sem );
-static int     vg_mutex_init( vg_mutex *mutex );
-static int     vg_mutex_lock( vg_mutex *mutex );
-static int     vg_mutex_unlock( vg_mutex *mutex );
-static void    vg_mutex_free( vg_mutex *mutex );
-static void    vg_sleep_ms( long msec );
-static double  vg_time_diff( vg_timespec start, vg_timespec end );
+VG_STATIC int     vg_thread_run( void *pfunc, void *data );
+VG_STATIC void    vg_thread_exit(void);
+VG_STATIC void    vg_set_thread_name( const char *name );
+VG_STATIC int     vg_semaphore_init( vg_semaphore *sem, u32 value );
+VG_STATIC int     vg_semaphore_trywait( vg_semaphore *sem );
+VG_STATIC int     vg_semaphore_wait( vg_semaphore *sem );
+VG_STATIC int     vg_semaphore_post( vg_semaphore *sem );
+VG_STATIC void    vg_semaphore_free( vg_semaphore *sem );
+VG_STATIC int     vg_mutex_init( vg_mutex *mutex );
+VG_STATIC int     vg_mutex_lock( vg_mutex *mutex );
+VG_STATIC int     vg_mutex_unlock( vg_mutex *mutex );
+VG_STATIC void    vg_mutex_free( vg_mutex *mutex );
+VG_STATIC void    vg_sleep_ms( long msec );
+VG_STATIC double  vg_time_diff( vg_timespec start, vg_timespec end );
 
 #ifdef _WIN32_NO
 
-static int vg_thread_run( void *pfunc, void *data )
+VG_STATIC int vg_thread_run( void *pfunc, void *data )
 {
        HANDLE hThread = CreateThread
        (
@@ -168,31 +147,31 @@ static int vg_thread_run( void *pfunc, void *data )
        }
 }
 
-static void vg_thread_exit(void)
+VG_STATIC void vg_thread_exit(void)
 {
    ExitThread(0);
 }
 
-static void vg_set_thread_name( const char *name )
+VG_STATIC void vg_set_thread_name( const char *name )
 {
    /* I believe this is a meaningless concept in windows */
 }
 
-static int     vg_semaphore_init( vg_semaphore *sem, u32 value );
-static int     vg_semaphore_trywait( vg_semaphore *sem );
-static int     vg_semaphore_wait( vg_semaphore *sem );
-static int     vg_semaphore_post( vg_semaphore *sem );
-static void    vg_semaphore_free( vg_semaphore *sem );
-static int     vg_mutex_init( vg_mutex *mutex );
-static int     vg_mutex_lock( vg_mutex *mutex );
-static int     vg_mutex_unlock( vg_mutex *mutex );
-static void    vg_mutex_free( vg_mutex *mutex );
-static void    vg_sleep_ms( long msec );
-static double  vg_time_diff( vg_timespec start, vg_timespec end );
+VG_STATIC int     vg_semaphore_init( vg_semaphore *sem, u32 value );
+VG_STATIC int     vg_semaphore_trywait( vg_semaphore *sem );
+VG_STATIC int     vg_semaphore_wait( vg_semaphore *sem );
+VG_STATIC int     vg_semaphore_post( vg_semaphore *sem );
+VG_STATIC void    vg_semaphore_free( vg_semaphore *sem );
+VG_STATIC int     vg_mutex_init( vg_mutex *mutex );
+VG_STATIC int     vg_mutex_lock( vg_mutex *mutex );
+VG_STATIC int     vg_mutex_unlock( vg_mutex *mutex );
+VG_STATIC void    vg_mutex_free( vg_mutex *mutex );
+VG_STATIC void    vg_sleep_ms( long msec );
+VG_STATIC double  vg_time_diff( vg_timespec start, vg_timespec end );
 
 #else
 
-static int vg_thread_run( void *pfunc, void *data )
+VG_STATIC int vg_thread_run( void *pfunc, void *data )
 {
        pthread_t hThread;
        if( pthread_create( &hThread, NULL, pfunc, data ) )
@@ -207,12 +186,12 @@ static int vg_thread_run( void *pfunc, void *data )
 }
 
 
-static void vg_thread_exit(void)
+VG_STATIC void vg_thread_exit(void)
 {
    pthread_exit(NULL);
 }
 
-static void vg_set_thread_name( const char *name )
+VG_STATIC void vg_set_thread_name( const char *name )
 {
    /* not defined but links?? */
 #if 0
@@ -220,38 +199,38 @@ static void vg_set_thread_name( const char *name )
 #endif
 }
 
-static int vg_semaphore_init( vg_semaphore *sem, u32 value )
+VG_STATIC int vg_semaphore_init( vg_semaphore *sem, u32 value )
 {
    return !sem_init( sem, 0, value );
 }
 
-static int vg_semaphore_trywait( vg_semaphore *sem )
+VG_STATIC int vg_semaphore_trywait( vg_semaphore *sem )
 {
    return !sem_trywait( sem );
 }
 
-static int vg_semaphore_wait( vg_semaphore *sem )
+VG_STATIC int vg_semaphore_wait( vg_semaphore *sem )
 {
    return !sem_wait( sem );
 }
 
-static int vg_semaphore_post( vg_semaphore *sem )
+VG_STATIC int vg_semaphore_post( vg_semaphore *sem )
 {
    return !sem_post( sem );
 }
 
-static void vg_semaphore_free( vg_semaphore *sem )
+VG_STATIC void vg_semaphore_free( vg_semaphore *sem )
 {
    sem_destroy( sem );
 }
 
-static int vg_mutex_init( vg_mutex *mutex )
+VG_STATIC int vg_mutex_init( vg_mutex *mutex )
 {
    memset( mutex, 0, sizeof(vg_mutex) );
    return 1;
 }
 
-static int vg_mutex_lock( vg_mutex *mutex )
+VG_STATIC int vg_mutex_lock( vg_mutex *mutex )
 {
    if( !pthread_mutex_lock( mutex ) )
       return 1;
@@ -259,7 +238,7 @@ static int vg_mutex_lock( vg_mutex *mutex )
       return 0;
 }
 
-static int vg_mutex_unlock( vg_mutex *mutex )
+VG_STATIC int vg_mutex_unlock( vg_mutex *mutex )
 {
    if( !pthread_mutex_unlock( mutex ) )
       return 1;
@@ -267,12 +246,12 @@ static int vg_mutex_unlock( vg_mutex *mutex )
       return 0;
 }
 
-static void vg_mutex_free( vg_mutex *mutex )
+VG_STATIC void vg_mutex_free( vg_mutex *mutex )
 {
    
 }
 
-static void vg_sleep_ms( long msec )
+VG_STATIC void vg_sleep_ms( long msec )
 {
     struct timespec ts;
 
@@ -282,7 +261,7 @@ static void vg_sleep_ms( long msec )
 }
 
 /* diff two timespecs in MS */
-static double vg_time_diff( struct timespec start, struct timespec end )
+VG_STATIC double vg_time_diff( struct timespec start, struct timespec end )
 {
    double elapsed = 1000.0*end.tv_sec + 1e-6*end.tv_nsec
                        - (1000.0*start.tv_sec + 1e-6*start.tv_nsec);
@@ -295,22 +274,4 @@ static double vg_time_diff( struct timespec start, struct timespec end )
 #define VG_MIN( A, B ) ((A)<(B)?(A):(B))
 #define VG_MAX( A, B ) ((A)>(B)?(A):(B))
 
-static void *buffer_reserve( void *buffer, u32 count, u32 *cap, u32 amount, 
-      size_t emsize )
-{
-   if( count+amount > *cap )
-   {
-      *cap = VG_MAX( (*cap)*2, (*cap)+amount );
-      return vg_realloc( buffer, (*cap) * emsize );
-   }
-
-   return buffer;
-}
-
-static void *buffer_fix( void *buffer, u32 count, u32 *cap, size_t emsize )
-{
-   *cap = count;
-   return vg_realloc( buffer, (*cap) * emsize );
-}
-
 #endif