-/* -----------------------------------------------------------------------------\r
-\r
-PicoModel Library\r
-\r
-Copyright (c) 2002, Randy Reddig & seaw0lf\r
-All rights reserved.\r
-\r
-Redistribution and use in source and binary forms, with or without modification,\r
-are permitted provided that the following conditions are met:\r
-\r
-Redistributions of source code must retain the above copyright notice, this list\r
-of conditions and the following disclaimer.\r
-\r
-Redistributions in binary form must reproduce the above copyright notice, this\r
-list of conditions and the following disclaimer in the documentation and/or\r
-other materials provided with the distribution.\r
-\r
-Neither the names of the copyright holders nor the names of its contributors may\r
-be used to endorse or promote products derived from this software without\r
-specific prior written permission.\r
-\r
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\r
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\r
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\r
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
-\r
------------------------------------------------------------------------------ */\r
-\r
-\r
-\r
-/* marker */\r
-#ifndef PICOINTERNAL_H\r
-#define PICOINTERNAL_H\r
-\r
-#ifdef __cplusplus\r
-extern "C"\r
-{\r
-#endif\r
-\r
-\r
-/* dependencies */\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <stdarg.h>\r
-#include <string.h>\r
-#include <ctype.h>\r
-#include <math.h>\r
-\r
-#include "picomodel.h"\r
-\r
-\r
-/* os dependant replacements */\r
-#if WIN32 || _WIN32\r
- #define _pico_stricmp stricmp\r
- #define _pico_strnicmp strnicmp\r
-#else\r
- #define _pico_stricmp strcasecmp\r
- #define _pico_strnicmp strncasecmp\r
-#endif\r
-\r
-\r
-/* constants */\r
-#define PICO_PI 3.14159265358979323846\r
-\r
-#define PICO_SEEK_SET 0\r
-#define PICO_SEEK_CUR 1\r
-#define PICO_SEEK_END 2\r
-\r
-#define PICO_IOEOF 1\r
-#define PICO_IOERR 2\r
-\r
-/* types */\r
-typedef struct picoParser_s\r
-{\r
- char *buffer;\r
- int bufSize;\r
- char *token;\r
- int tokenSize;\r
- int tokenMax;\r
- char *cursor;\r
- char *max;\r
- int curLine;\r
-}\r
-picoParser_t;\r
-\r
-typedef struct picoMemStream_s\r
-{\r
- picoByte_t *buffer;\r
- int bufSize;\r
- picoByte_t *curPos;\r
- int flag;\r
-}\r
-picoMemStream_t;\r
-\r
-\r
-/* variables */\r
-extern const picoModule_t *picoModules[];\r
-\r
-extern void *(*_pico_ptr_malloc)( size_t );\r
-extern void (*_pico_ptr_free)( void* );\r
-extern void (*_pico_ptr_load_file)( char*, unsigned char**, int* );\r
-extern void (*_pico_ptr_free_file)( void* );\r
-extern void (*_pico_ptr_print)( int, const char* );\r
-\r
-\r
-\r
-/* prototypes */\r
-\r
-/* memory */\r
-void *_pico_alloc( size_t size );\r
-void *_pico_calloc( size_t num, size_t size );\r
-void *_pico_realloc( void **ptr, size_t oldSize, size_t newSize );\r
-char *_pico_clone_alloc( char *str, int size );\r
-void _pico_free( void *ptr );\r
-\r
-/* files */\r
-void _pico_load_file( char *name, unsigned char **buffer, int *bufSize );\r
-void _pico_free_file( void *buffer );\r
-\r
-/* strings */\r
-char *_pico_strltrim( char *str );\r
-char *_pico_strrtrim( char *str );\r
-int _pico_strchcount( char *str, int ch );\r
-void _pico_printf( int level, const char *format, ... );\r
-char *_pico_stristr( char *str, const char *substr );\r
-void _pico_unixify( char *path );\r
-int _pico_nofname( const char *path, char *dest, int destSize );\r
-char *_pico_nopath( const char *path );\r
-char *_pico_setfext( char *path, const char *ext );\r
-int _pico_getline( char *buf, int bufsize, char *dest, int destsize );\r
-char *_pico_strlwr( char *str );\r
-\r
-/* vectors */\r
-void _pico_zero_bounds( picoVec3_t mins, picoVec3_t maxs );\r
-void _pico_expand_bounds( picoVec3_t p, picoVec3_t mins, picoVec3_t maxs );\r
-void _pico_zero_vec( picoVec3_t vec );\r
-void _pico_zero_vec2( picoVec2_t vec );\r
-void _pico_zero_vec4( picoVec4_t vec );\r
-void _pico_set_vec( picoVec3_t v, float a, float b, float c );\r
-void _pico_set_vec4( picoVec4_t v, float a, float b, float c, float d );\r
-void _pico_set_color( picoColor_t c, int r, int g, int b, int a );\r
-void _pico_copy_color( picoColor_t src, picoColor_t dest );\r
-void _pico_copy_vec( picoVec3_t src, picoVec3_t dest );\r
-void _pico_copy_vec2( picoVec2_t src, picoVec2_t dest );\r
-picoVec_t _pico_normalize_vec( picoVec3_t vec );\r
-void _pico_add_vec( picoVec3_t a, picoVec3_t b, picoVec3_t dest );\r
-void _pico_subtract_vec( picoVec3_t a, picoVec3_t b, picoVec3_t dest );\r
-picoVec_t _pico_dot_vec( picoVec3_t a, picoVec3_t b );\r
-void _pico_cross_vec( picoVec3_t a, picoVec3_t b, picoVec3_t dest );\r
-picoVec_t _pico_calc_plane( picoVec4_t plane, picoVec3_t a, picoVec3_t b, picoVec3_t c );\r
-void _pico_scale_vec( picoVec3_t v, float scale, picoVec3_t dest );\r
-void _pico_scale_vec4( picoVec4_t v, float scale, picoVec4_t dest );\r
-\r
-/* endian */\r
-int _pico_big_long( int src );\r
-short _pico_big_short( short src );\r
-float _pico_big_float( float src );\r
-\r
-int _pico_little_long( int src );\r
-short _pico_little_short( short src );\r
-float _pico_little_float( float src );\r
-\r
-/* pico ascii parser */\r
-picoParser_t *_pico_new_parser( picoByte_t *buffer, int bufSize );\r
-void _pico_free_parser( picoParser_t *p );\r
-int _pico_parse_ex( picoParser_t *p, int allowLFs, int handleQuoted );\r
-char *_pico_parse_first( picoParser_t *p );\r
-char *_pico_parse( picoParser_t *p, int allowLFs );\r
-void _pico_parse_skip_rest( picoParser_t *p );\r
-int _pico_parse_skip_braced( picoParser_t *p );\r
-int _pico_parse_check( picoParser_t *p, int allowLFs, char *str );\r
-int _pico_parse_checki( picoParser_t *p, int allowLFs, char *str );\r
-int _pico_parse_int( picoParser_t *p, int *out );\r
-int _pico_parse_int_def( picoParser_t *p, int *out, int def );\r
-int _pico_parse_float( picoParser_t *p, float *out );\r
-int _pico_parse_float_def( picoParser_t *p, float *out, float def );\r
-int _pico_parse_vec( picoParser_t *p, picoVec3_t out);\r
-int _pico_parse_vec_def( picoParser_t *p, picoVec3_t out, picoVec3_t def);\r
-int _pico_parse_vec2( picoParser_t *p, picoVec2_t out );\r
-int _pico_parse_vec2_def( picoParser_t *p, picoVec2_t out, picoVec2_t def );\r
-int _pico_parse_vec4( picoParser_t *p, picoVec4_t out);\r
-int _pico_parse_vec4_def( picoParser_t *p, picoVec4_t out, picoVec4_t def);\r
-\r
-/* pico memory stream */\r
-picoMemStream_t *_pico_new_memstream( picoByte_t *buffer, int bufSize );\r
-void _pico_free_memstream( picoMemStream_t *s );\r
-int _pico_memstream_read( picoMemStream_t *s, void *buffer, int len );\r
-int _pico_memstream_getc( picoMemStream_t *s );\r
-int _pico_memstream_seek( picoMemStream_t *s, long offset, int origin );\r
-long _pico_memstream_tell( picoMemStream_t *s );\r
-#define _pico_memstream_eof( _pico_memstream ) ((_pico_memstream)->flag & PICO_IOEOF)\r
-#define _pico_memstream_error( _pico_memstream ) ((_pico_memstream)->flag & PICO_IOERR)\r
-\r
-/* end marker */\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif\r
+/* -----------------------------------------------------------------------------
+
+PicoModel Library
+
+Copyright (c) 2002, Randy Reddig & seaw0lf
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list
+of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+Neither the names of the copyright holders nor the names of its contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------------- */
+
+
+
+/* marker */
+#ifndef PICOINTERNAL_H
+#define PICOINTERNAL_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+/* dependencies */
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+#include <math.h>
+
+#include "picomodel.h"
+
+
+/* os dependant replacements */
+#if WIN32 || _WIN32
+ #define _pico_stricmp stricmp
+ #define _pico_strnicmp strnicmp
+#else
+ #define _pico_stricmp strcasecmp
+ #define _pico_strnicmp strncasecmp
+#endif
+
+
+/* constants */
+#define PICO_PI 3.14159265358979323846
+
+#define PICO_SEEK_SET 0
+#define PICO_SEEK_CUR 1
+#define PICO_SEEK_END 2
+
+#define PICO_IOEOF 1
+#define PICO_IOERR 2
+
+/* types */
+typedef struct picoParser_s
+{
+ char *buffer;
+ int bufSize;
+ char *token;
+ int tokenSize;
+ int tokenMax;
+ char *cursor;
+ char *max;
+ int curLine;
+}
+picoParser_t;
+
+typedef struct picoMemStream_s
+{
+ picoByte_t *buffer;
+ int bufSize;
+ picoByte_t *curPos;
+ int flag;
+}
+picoMemStream_t;
+
+
+/* variables */
+extern const picoModule_t *picoModules[];
+
+extern void *(*_pico_ptr_malloc)( size_t );
+extern void (*_pico_ptr_free)( void* );
+extern void (*_pico_ptr_load_file)( char*, unsigned char**, int* );
+extern void (*_pico_ptr_free_file)( void* );
+extern void (*_pico_ptr_print)( int, const char* );
+
+
+
+/* prototypes */
+
+/* memory */
+void *_pico_alloc( size_t size );
+void *_pico_calloc( size_t num, size_t size );
+void *_pico_realloc( void **ptr, size_t oldSize, size_t newSize );
+char *_pico_clone_alloc( char *str, int size );
+void _pico_free( void *ptr );
+
+/* files */
+void _pico_load_file( char *name, unsigned char **buffer, int *bufSize );
+void _pico_free_file( void *buffer );
+
+/* strings */
+char *_pico_strltrim( char *str );
+char *_pico_strrtrim( char *str );
+int _pico_strchcount( char *str, int ch );
+void _pico_printf( int level, const char *format, ... );
+char *_pico_stristr( char *str, const char *substr );
+void _pico_unixify( char *path );
+int _pico_nofname( const char *path, char *dest, int destSize );
+char *_pico_nopath( const char *path );
+char *_pico_setfext( char *path, const char *ext );
+int _pico_getline( char *buf, int bufsize, char *dest, int destsize );
+char *_pico_strlwr( char *str );
+
+/* vectors */
+void _pico_zero_bounds( picoVec3_t mins, picoVec3_t maxs );
+void _pico_expand_bounds( picoVec3_t p, picoVec3_t mins, picoVec3_t maxs );
+void _pico_zero_vec( picoVec3_t vec );
+void _pico_zero_vec2( picoVec2_t vec );
+void _pico_zero_vec4( picoVec4_t vec );
+void _pico_set_vec( picoVec3_t v, float a, float b, float c );
+void _pico_set_vec4( picoVec4_t v, float a, float b, float c, float d );
+void _pico_set_color( picoColor_t c, int r, int g, int b, int a );
+void _pico_copy_color( picoColor_t src, picoColor_t dest );
+void _pico_copy_vec( picoVec3_t src, picoVec3_t dest );
+void _pico_copy_vec2( picoVec2_t src, picoVec2_t dest );
+picoVec_t _pico_normalize_vec( picoVec3_t vec );
+void _pico_add_vec( picoVec3_t a, picoVec3_t b, picoVec3_t dest );
+void _pico_subtract_vec( picoVec3_t a, picoVec3_t b, picoVec3_t dest );
+picoVec_t _pico_dot_vec( picoVec3_t a, picoVec3_t b );
+void _pico_cross_vec( picoVec3_t a, picoVec3_t b, picoVec3_t dest );
+picoVec_t _pico_calc_plane( picoVec4_t plane, picoVec3_t a, picoVec3_t b, picoVec3_t c );
+void _pico_scale_vec( picoVec3_t v, float scale, picoVec3_t dest );
+void _pico_scale_vec4( picoVec4_t v, float scale, picoVec4_t dest );
+
+/* endian */
+int _pico_big_long( int src );
+short _pico_big_short( short src );
+float _pico_big_float( float src );
+
+int _pico_little_long( int src );
+short _pico_little_short( short src );
+float _pico_little_float( float src );
+
+/* pico ascii parser */
+picoParser_t *_pico_new_parser( picoByte_t *buffer, int bufSize );
+void _pico_free_parser( picoParser_t *p );
+int _pico_parse_ex( picoParser_t *p, int allowLFs, int handleQuoted );
+char *_pico_parse_first( picoParser_t *p );
+char *_pico_parse( picoParser_t *p, int allowLFs );
+void _pico_parse_skip_rest( picoParser_t *p );
+int _pico_parse_skip_braced( picoParser_t *p );
+int _pico_parse_check( picoParser_t *p, int allowLFs, char *str );
+int _pico_parse_checki( picoParser_t *p, int allowLFs, char *str );
+int _pico_parse_int( picoParser_t *p, int *out );
+int _pico_parse_int_def( picoParser_t *p, int *out, int def );
+int _pico_parse_float( picoParser_t *p, float *out );
+int _pico_parse_float_def( picoParser_t *p, float *out, float def );
+int _pico_parse_vec( picoParser_t *p, picoVec3_t out);
+int _pico_parse_vec_def( picoParser_t *p, picoVec3_t out, picoVec3_t def);
+int _pico_parse_vec2( picoParser_t *p, picoVec2_t out );
+int _pico_parse_vec2_def( picoParser_t *p, picoVec2_t out, picoVec2_t def );
+int _pico_parse_vec4( picoParser_t *p, picoVec4_t out);
+int _pico_parse_vec4_def( picoParser_t *p, picoVec4_t out, picoVec4_t def);
+
+/* pico memory stream */
+picoMemStream_t *_pico_new_memstream( picoByte_t *buffer, int bufSize );
+void _pico_free_memstream( picoMemStream_t *s );
+int _pico_memstream_read( picoMemStream_t *s, void *buffer, int len );
+int _pico_memstream_getc( picoMemStream_t *s );
+int _pico_memstream_seek( picoMemStream_t *s, long offset, int origin );
+long _pico_memstream_tell( picoMemStream_t *s );
+#define _pico_memstream_eof( _pico_memstream ) ((_pico_memstream)->flag & PICO_IOEOF)
+#define _pico_memstream_error( _pico_memstream ) ((_pico_memstream)->flag & PICO_IOERR)
+
+/* end marker */
+#ifdef __cplusplus
+}
+#endif
+
+#endif