Pārlūkot izejas kodu

Various Visual C fixes

Marco Bambini 6 gadi atpakaļ
vecāks
revīzija
a801e0bd45

+ 10 - 6
gravity_visualstudio/gravity.vcxproj

@@ -32,8 +32,10 @@
     <ClInclude Include="..\src\compiler\gravity_symboltable.h" />
     <ClInclude Include="..\src\compiler\gravity_symboltable.h" />
     <ClInclude Include="..\src\compiler\gravity_token.h" />
     <ClInclude Include="..\src\compiler\gravity_token.h" />
     <ClInclude Include="..\src\compiler\gravity_visitor.h" />
     <ClInclude Include="..\src\compiler\gravity_visitor.h" />
-    <ClInclude Include="..\src\optionals\gravity_math.h" />
     <ClInclude Include="..\src\optionals\gravity_optionals.h" />
     <ClInclude Include="..\src\optionals\gravity_optionals.h" />
+    <ClInclude Include="..\src\optionals\gravity_opt_env.h" />
+    <ClInclude Include="..\src\optionals\gravity_opt_json.h" />
+    <ClInclude Include="..\src\optionals\gravity_opt_math.h" />
     <ClInclude Include="..\src\runtime\gravity_core.h" />
     <ClInclude Include="..\src\runtime\gravity_core.h" />
     <ClInclude Include="..\src\runtime\gravity_vm.h" />
     <ClInclude Include="..\src\runtime\gravity_vm.h" />
     <ClInclude Include="..\src\runtime\gravity_vmmacros.h" />
     <ClInclude Include="..\src\runtime\gravity_vmmacros.h" />
@@ -62,7 +64,9 @@
     <ClCompile Include="..\src\compiler\gravity_symboltable.c" />
     <ClCompile Include="..\src\compiler\gravity_symboltable.c" />
     <ClCompile Include="..\src\compiler\gravity_token.c" />
     <ClCompile Include="..\src\compiler\gravity_token.c" />
     <ClCompile Include="..\src\compiler\gravity_visitor.c" />
     <ClCompile Include="..\src\compiler\gravity_visitor.c" />
-    <ClCompile Include="..\src\optionals\gravity_math.c" />
+    <ClCompile Include="..\src\optionals\gravity_opt_env.c" />
+    <ClCompile Include="..\src\optionals\gravity_opt_json.c" />
+    <ClCompile Include="..\src\optionals\gravity_opt_math.c" />
     <ClCompile Include="..\src\runtime\gravity_core.c" />
     <ClCompile Include="..\src\runtime\gravity_core.c" />
     <ClCompile Include="..\src\runtime\gravity_vm.c" />
     <ClCompile Include="..\src\runtime\gravity_vm.c" />
     <ClCompile Include="..\src\shared\gravity_hash.c" />
     <ClCompile Include="..\src\shared\gravity_hash.c" />
@@ -84,26 +88,26 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>

+ 17 - 5
gravity_visualstudio/gravity.vcxproj.filters

@@ -117,10 +117,16 @@
     <ClInclude Include="..\src\utils\gravity_utils.h">
     <ClInclude Include="..\src\utils\gravity_utils.h">
       <Filter>include\utils</Filter>
       <Filter>include\utils</Filter>
     </ClInclude>
     </ClInclude>
-    <ClInclude Include="..\src\optionals\gravity_math.h">
+    <ClInclude Include="..\src\optionals\gravity_optionals.h">
       <Filter>src\opt</Filter>
       <Filter>src\opt</Filter>
     </ClInclude>
     </ClInclude>
-    <ClInclude Include="..\src\optionals\gravity_optionals.h">
+    <ClInclude Include="..\src\optionals\gravity_opt_env.h">
+      <Filter>src\opt</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\optionals\gravity_opt_json.h">
+      <Filter>src\opt</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\optionals\gravity_opt_math.h">
       <Filter>src\opt</Filter>
       <Filter>src\opt</Filter>
     </ClInclude>
     </ClInclude>
   </ItemGroup>
   </ItemGroup>
@@ -182,11 +188,17 @@
     <ClCompile Include="..\src\runtime\gravity_vm.c">
     <ClCompile Include="..\src\runtime\gravity_vm.c">
       <Filter>src\runtime</Filter>
       <Filter>src\runtime</Filter>
     </ClCompile>
     </ClCompile>
-    <ClCompile Include="..\src\optionals\gravity_math.c">
-      <Filter>src\opt</Filter>
-    </ClCompile>
     <ClCompile Include="..\src\compiler\gravity_ast.c">
     <ClCompile Include="..\src\compiler\gravity_ast.c">
       <Filter>src\compiler</Filter>
       <Filter>src\compiler</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="..\src\optionals\gravity_opt_env.c">
+      <Filter>src\opt</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\optionals\gravity_opt_json.c">
+      <Filter>src\opt</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\optionals\gravity_opt_math.c">
+      <Filter>src\opt</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 5 - 5
gravity_visualstudio/gravity_cli.vcxproj

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
     <ProjectConfiguration Include="Debug|Win32">
@@ -29,26 +29,26 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>

+ 5 - 5
gravity_visualstudio/gravity_dll.vcxproj

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
     <ProjectConfiguration Include="Debug|Win32">
@@ -29,26 +29,26 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   </PropertyGroup>

+ 1 - 1
src/optionals/gravity_opt_math.c

@@ -906,7 +906,7 @@ static bool math_random (gravity_vm *vm, gravity_value_t *args, uint16_t nargs,
             gravity_int_t n2 = VALUE_AS_INT(value2); // max
             gravity_int_t n2 = VALUE_AS_INT(value2); // max
             if (n1 == n2) RETURN_VALUE(VALUE_FROM_INT(n1), rindex);
             if (n1 == n2) RETURN_VALUE(VALUE_FROM_INT(n1), rindex);
             
             
-            gravity_int_t n0 = rnd * GRAVITY_INT_MAX;
+			gravity_int_t n0 = (gravity_int_t)(rnd * GRAVITY_INT_MAX);
             if (n1 > n2) {gravity_int_t temp = n1; n1 = n2; n2 = temp;} // swap numbers if min > max
             if (n1 > n2) {gravity_int_t temp = n1; n1 = n2; n2 = temp;} // swap numbers if min > max
             gravity_int_t n = (gravity_int_t)(n0 % (n2 + 1 - n1) + n1);
             gravity_int_t n = (gravity_int_t)(n0 % (n2 + 1 - n1) + n1);
             RETURN_VALUE(VALUE_FROM_INT(n), rindex);
             RETURN_VALUE(VALUE_FROM_INT(n), rindex);

+ 7 - 1
src/optionals/gravity_optionals.h

@@ -60,7 +60,13 @@
 #define GRAVITY_ISENV_CLASS(_c)             false
 #define GRAVITY_ISENV_CLASS(_c)             false
 #endif
 #endif
 
 
-inline static const char **gravity_optional_identifiers(void) {
+#ifdef _MSC_VER
+#define INLINE								__inline
+#else
+#define INLINE								inline
+#endif
+
+INLINE static const char **gravity_optional_identifiers(void) {
     static const char *list[] = {
     static const char *list[] = {
         #ifdef GRAVITY_INCLUDE_MATH
         #ifdef GRAVITY_INCLUDE_MATH
         GRAVITY_CLASS_MATH_NAME,
         GRAVITY_CLASS_MATH_NAME,

+ 2 - 2
src/runtime/gravity_core.c

@@ -325,7 +325,7 @@ inline gravity_value_t convert_value2float (gravity_vm *vm, gravity_value_t v) {
 
 
     // handle conversion for basic classes
     // handle conversion for basic classes
     if (VALUE_ISA_INT(v)) return VALUE_FROM_FLOAT((gravity_float_t)v.n);
     if (VALUE_ISA_INT(v)) return VALUE_FROM_FLOAT((gravity_float_t)v.n);
-    if (VALUE_ISA_BOOL(v)) return VALUE_FROM_FLOAT(v.n);
+    if (VALUE_ISA_BOOL(v)) return VALUE_FROM_FLOAT((gravity_float_t)v.n);
     if (VALUE_ISA_NULL(v)) return VALUE_FROM_FLOAT(0);
     if (VALUE_ISA_NULL(v)) return VALUE_FROM_FLOAT(0);
     if (VALUE_ISA_UNDEFINED(v)) return VALUE_FROM_FLOAT(0);
     if (VALUE_ISA_UNDEFINED(v)) return VALUE_FROM_FLOAT(0);
     if (VALUE_ISA_STRING(v)) return convert_string2number(VALUE_AS_STRING(v), number_format_float);
     if (VALUE_ISA_STRING(v)) return convert_string2number(VALUE_AS_STRING(v), number_format_float);
@@ -2833,7 +2833,7 @@ static bool string_raw (gravity_vm *vm, gravity_value_t *args, uint16_t nargs, u
     uint32_t n = utf8_charbytes(string->s, 0);
     uint32_t n = utf8_charbytes(string->s, 0);
     for (uint32_t i=0; i<n; ++i) {
     for (uint32_t i=0; i<n; ++i) {
         // if (n > 1) {printf("%u (%d)\n", (uint8_t)string->s[i], (uint32_t)pow(10, n-(i+1)));}
         // if (n > 1) {printf("%u (%d)\n", (uint8_t)string->s[i], (uint32_t)pow(10, n-(i+1)));}
-        ascii += ((uint8_t)string->s[i] * pow(10, n-(i+1)));
+		ascii += (uint32_t)((uint8_t)string->s[i] * pow(10, n - (i + 1)));
     }
     }
     
     
     RETURN_VALUE(VALUE_FROM_INT(ascii), rindex);
     RETURN_VALUE(VALUE_FROM_INT(ascii), rindex);

+ 5 - 0
src/runtime/gravity_vm.c

@@ -909,12 +909,17 @@ static bool gravity_vm_exec (gravity_vm *vm) {
                 #elif defined(__GNUC__)
                 #elif defined(__GNUC__)
                     #pragma GCC diagnostic push
                     #pragma GCC diagnostic push
                     #pragma GCC diagnostic ignored "-Wdiv-by-zero"
                     #pragma GCC diagnostic ignored "-Wdiv-by-zero"
+				#elif defined(_MSC_VER)
+					#pragma warning (push)
+					#pragma warning (disable: 4723)
                 #endif
                 #endif
                 CHECK_FAST_BINARY_MATH(r1, r2, r3, v2, v3, /, CHECK_ZERO(v3));
                 CHECK_FAST_BINARY_MATH(r1, r2, r3, v2, v3, /, CHECK_ZERO(v3));
                 #if defined(__clang__)
                 #if defined(__clang__)
                     #pragma clang diagnostic pop
                     #pragma clang diagnostic pop
                 #elif defined(__GNUC__)
                 #elif defined(__GNUC__)
                     #pragma GCC diagnostic pop
                     #pragma GCC diagnostic pop
+				#elif defined(_MSC_VER)
+					#pragma warning (pop)
                 #endif
                 #endif
 
 
                 // prepare function call for binary operation
                 // prepare function call for binary operation

+ 2 - 1
src/utils/gravity_json.c

@@ -341,6 +341,7 @@ const char *json_get_label (json_t *json, const char *key) {
     
     
     if (key) return key;
     if (key) return key;
     assert(0);
     assert(0);
+	return NULL;
 }
 }
 
 
 // MARK: - Buffer
 // MARK: - Buffer
@@ -514,7 +515,7 @@ static int new_value (json_state * state,
    }
    }
 
 
    if (! (value = (json_value *) json_alloc
    if (! (value = (json_value *) json_alloc
-         (state, sizeof (json_value) + state->settings.value_extra, 1)))
+         (state, (unsigned long)(sizeof (json_value) + state->settings.value_extra), 1)))
    {
    {
       return 0;
       return 0;
    }
    }

+ 6 - 6
src/utils/gravity_utils.c

@@ -131,12 +131,12 @@ uint64_t file_size (const char *path) {
 }
 }
 
 
 const char *file_read(const char *path, size_t *len) {
 const char *file_read(const char *path, size_t *len) {
-    int        fd = 0;
-    off_t    fsize = 0;
-    size_t    fsize2 = 0;
-    char    *buffer = NULL;
+    int		fd = 0;
+    off_t	fsize = 0;
+    size_t	fsize2 = 0;
+    char	*buffer = NULL;
     
     
-    fsize = (size_t) file_size(path);
+    fsize = (off_t) file_size(path);
     if (fsize < 0) goto abort_read;
     if (fsize < 0) goto abort_read;
     
     
     fd = open(path, O_RDONLY);
     fd = open(path, O_RDONLY);
@@ -214,7 +214,7 @@ bool file_write (const char *path, const char *buffer, size_t len) {
     int fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, mode);
     int fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, mode);
     if (fd < 0) return false;
     if (fd < 0) return false;
     
     
-    ssize_t nwrite = write(fd, buffer, len);
+    ssize_t nwrite = (ssize_t)write(fd, buffer, len);
     close(fd);
     close(fd);
     
     
     return (nwrite == len);
     return (nwrite == len);