mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Initial macOS changes
Many changes are related to fixing warnings
This commit is contained in:
parent
75f11b1459
commit
22ec4a86b8
52 changed files with 2873 additions and 266 deletions
BIN
.DS_Store
vendored
Normal file
BIN
.DS_Store
vendored
Normal file
Binary file not shown.
|
@ -199,6 +199,7 @@ void BootApp::OutputLine(const String& text, OutputPri outputPri)
|
||||||
if (mVerbosity < Verbosity_Minimal)
|
if (mVerbosity < Verbosity_Minimal)
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (outputPri == OutputPri_Warning)
|
if (outputPri == OutputPri_Warning)
|
||||||
|
|
|
@ -32,17 +32,33 @@ add_definitions(
|
||||||
-DBFSYSLIB_DYNAMIC
|
-DBFSYSLIB_DYNAMIC
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
include_directories(
|
include_directories(
|
||||||
.
|
.
|
||||||
|
../
|
||||||
../BeefySysLib/
|
../BeefySysLib/
|
||||||
../BeefySysLib/platform/linux
|
|
||||||
../BeefySysLib/third_party
|
../BeefySysLib/third_party
|
||||||
../BeefySysLib/third_party/freetype/include
|
../BeefySysLib/third_party/freetype/include
|
||||||
../
|
|
||||||
../extern/llvm-project_8_0_0/llvm/include
|
../extern/llvm-project_8_0_0/llvm/include
|
||||||
../extern/llvm-project_8_0_0/llvm/lib/Target
|
../extern/llvm-project_8_0_0/llvm/lib/Target
|
||||||
../IDEHelper
|
../IDEHelper
|
||||||
|
|
||||||
|
../BeefySysLib/platform/osx
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
include_directories(
|
||||||
|
.
|
||||||
|
../
|
||||||
|
../BeefySysLib/
|
||||||
|
../BeefySysLib/third_party
|
||||||
|
../BeefySysLib/third_party/freetype/include
|
||||||
|
../extern/llvm-project_8_0_0/llvm/include
|
||||||
|
../extern/llvm-project_8_0_0/llvm/lib/Target
|
||||||
|
../IDEHelper
|
||||||
|
|
||||||
|
../BeefySysLib/platform/linux
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
############## Artefacts Output #################
|
############## Artefacts Output #################
|
||||||
# Defines outputs , depending Debug or Release. #
|
# Defines outputs , depending Debug or Release. #
|
||||||
|
@ -112,11 +128,17 @@ add_executable(${PROJECT_NAME}
|
||||||
${SRC_FILES}
|
${SRC_FILES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
|
set(TARGET_LIBS_OS "")
|
||||||
|
else()
|
||||||
|
set(TARGET_LIBS_OS "tinfo")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Link with other dependencies.
|
# Link with other dependencies.
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib)
|
target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib)
|
||||||
else()
|
else()
|
||||||
target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper tinfo
|
target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper ${TARGET_LIBS_OS}
|
||||||
#${LLVM_LIB}/libLLVMMC.a
|
#${LLVM_LIB}/libLLVMMC.a
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -35,10 +35,25 @@ add_definitions(
|
||||||
-DBFRTMERGED
|
-DBFRTMERGED
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
|
include_directories(
|
||||||
|
.
|
||||||
|
../BeefySysLib/
|
||||||
|
../BeefySysLib/third_party
|
||||||
|
../BeefySysLib/third_party/freetype/include
|
||||||
|
../BeefySysLib/third_party/libffi/x86_64-apple-darwin12.5.0/include
|
||||||
|
../
|
||||||
|
../extern
|
||||||
|
../extern/llvm/include
|
||||||
|
../extern/llvm_linux/include
|
||||||
|
../extern/llvm/lib/Target
|
||||||
|
|
||||||
|
../BeefySysLib/platform/osx
|
||||||
|
)
|
||||||
|
else()
|
||||||
include_directories(
|
include_directories(
|
||||||
.
|
.
|
||||||
../BeefySysLib/
|
../BeefySysLib/
|
||||||
../BeefySysLib/platform/linux
|
|
||||||
../BeefySysLib/third_party
|
../BeefySysLib/third_party
|
||||||
../BeefySysLib/third_party/freetype/include
|
../BeefySysLib/third_party/freetype/include
|
||||||
../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/include
|
../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/include
|
||||||
|
@ -47,7 +62,10 @@ include_directories(
|
||||||
../extern/llvm/include
|
../extern/llvm/include
|
||||||
../extern/llvm_linux/include
|
../extern/llvm_linux/include
|
||||||
../extern/llvm/lib/Target
|
../extern/llvm/lib/Target
|
||||||
|
|
||||||
|
../BeefySysLib/platform/linux
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
############## Artefacts Output #################
|
############## Artefacts Output #################
|
||||||
# Defines outputs , depending Debug or Release. #
|
# Defines outputs , depending Debug or Release. #
|
||||||
|
@ -118,20 +136,37 @@ file(GLOB SRC_FILES
|
||||||
../BeefySysLib/util/String.cpp
|
../BeefySysLib/util/String.cpp
|
||||||
../BeefySysLib/util/UTF8.cpp
|
../BeefySysLib/util/UTF8.cpp
|
||||||
../BeefySysLib/third_party/utf8proc/utf8proc.c
|
../BeefySysLib/third_party/utf8proc/utf8proc.c
|
||||||
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
|
file(GLOB SRC_FILES_OS
|
||||||
|
../BeefySysLib/platform/darwin/BFPlatform.cpp
|
||||||
|
../BeefySysLib/platform/darwin/DarwinCommon.cpp
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
file(GLOB SRC_FILES_OS
|
||||||
../BeefySysLib/platform/linux/BFPlatform.cpp
|
../BeefySysLib/platform/linux/BFPlatform.cpp
|
||||||
../BeefySysLib/platform/linux/LinuxCommon.cpp
|
../BeefySysLib/platform/linux/LinuxCommon.cpp
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add library to build.
|
# Add library to build.
|
||||||
add_library(${PROJECT_NAME} SHARED
|
add_library(${PROJECT_NAME} SHARED
|
||||||
${SRC_FILES}
|
${SRC_FILES}
|
||||||
|
${SRC_FILES_OS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
|
set(TARGET_LIBS_OS "")
|
||||||
|
else()
|
||||||
|
set(TARGET_LIBS_OS "backtrace")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Link with other dependencies.
|
# Link with other dependencies.
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_link_libraries(${PROJECT_NAME} BeefySysLib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LLVMX86Disassembler.lib LLVMMCDisassembler.lib LLVMSupport.lib LLVMX86Info.lib LLVMX86Utils.lib LLVMX86AsmPrinter.lib LLVMX86Desc.lib %(AdditionalDependencies) LLVMMC.lib LLVMObject.lib LLVMCore.lib LLVMBitReader.lib LLVMAsmParser.lib LLVMMCParser.lib LLVMCodeGen.lib LLVMTarget.lib LLVMX86CodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMSelectionDAG.lib LLVMProfileData.lib LLVMTransformUtils.lib LLVMAnalysis.lib LLVMX86AsmParser.lib LLVMAsmPrinter.lib LLVMBitWriter.lib LLVMVectorize.lib LLVMipo.lib LLVMInstrumentation.lib LLVMDebugInfoDWARF.lib LLVMDebugInfoPDB.lib LLVMDebugInfoCodeView.lib LLVMGlobalISel.lib LLVMBinaryFormat.lib libcurl_a.lib)
|
target_link_libraries(${PROJECT_NAME} BeefySysLib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LLVMX86Disassembler.lib LLVMMCDisassembler.lib LLVMSupport.lib LLVMX86Info.lib LLVMX86Utils.lib LLVMX86AsmPrinter.lib LLVMX86Desc.lib %(AdditionalDependencies) LLVMMC.lib LLVMObject.lib LLVMCore.lib LLVMBitReader.lib LLVMAsmParser.lib LLVMMCParser.lib LLVMCodeGen.lib LLVMTarget.lib LLVMX86CodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMSelectionDAG.lib LLVMProfileData.lib LLVMTransformUtils.lib LLVMAnalysis.lib LLVMX86AsmParser.lib LLVMAsmPrinter.lib LLVMBitWriter.lib LLVMVectorize.lib LLVMipo.lib LLVMInstrumentation.lib LLVMDebugInfoDWARF.lib LLVMDebugInfoPDB.lib LLVMDebugInfoCodeView.lib LLVMGlobalISel.lib LLVMBinaryFormat.lib libcurl_a.lib)
|
||||||
else()
|
else()
|
||||||
set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux/lib")
|
set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux/lib")
|
||||||
target_link_libraries(${PROJECT_NAME} BeefySysLib pthread dl backtrace ffi
|
target_link_libraries(${PROJECT_NAME} BeefySysLib pthread dl ffi ${TARGET_LIBS_OS}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define HEAPHOOK
|
#define HEAPHOOK
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <malloc.h>
|
//#include <malloc.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,7 @@ bool bf::System::Char32::get__IsLetterOrDigit(char32_t c)
|
||||||
case UTF8PROC_CATEGORY_ND:
|
case UTF8PROC_CATEGORY_ND:
|
||||||
case UTF8PROC_CATEGORY_NL:
|
case UTF8PROC_CATEGORY_NL:
|
||||||
case UTF8PROC_CATEGORY_NO: return true;
|
case UTF8PROC_CATEGORY_NO: return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -94,6 +95,7 @@ bool bf::System::Char32::get__IsLetter(char32_t c)
|
||||||
case UTF8PROC_CATEGORY_LT:
|
case UTF8PROC_CATEGORY_LT:
|
||||||
case UTF8PROC_CATEGORY_LM:
|
case UTF8PROC_CATEGORY_LM:
|
||||||
case UTF8PROC_CATEGORY_LO: return true;
|
case UTF8PROC_CATEGORY_LO: return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -106,6 +108,7 @@ bool bf::System::Char32::get__IsNumber(char32_t c)
|
||||||
case UTF8PROC_CATEGORY_ND:
|
case UTF8PROC_CATEGORY_ND:
|
||||||
case UTF8PROC_CATEGORY_NL:
|
case UTF8PROC_CATEGORY_NL:
|
||||||
case UTF8PROC_CATEGORY_NO: return true;
|
case UTF8PROC_CATEGORY_NO: return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -150,6 +153,7 @@ bool bf::System::Char16::get__IsLetterOrDigit(char16_t c)
|
||||||
case UTF8PROC_CATEGORY_ND:
|
case UTF8PROC_CATEGORY_ND:
|
||||||
case UTF8PROC_CATEGORY_NL:
|
case UTF8PROC_CATEGORY_NL:
|
||||||
case UTF8PROC_CATEGORY_NO: return true;
|
case UTF8PROC_CATEGORY_NO: return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -164,6 +168,7 @@ bool bf::System::Char16::get__IsLetter(char16_t c)
|
||||||
case UTF8PROC_CATEGORY_LT:
|
case UTF8PROC_CATEGORY_LT:
|
||||||
case UTF8PROC_CATEGORY_LM:
|
case UTF8PROC_CATEGORY_LM:
|
||||||
case UTF8PROC_CATEGORY_LO: return true;
|
case UTF8PROC_CATEGORY_LO: return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -176,6 +181,7 @@ bool bf::System::Char16::get__IsNumber(char16_t c)
|
||||||
case UTF8PROC_CATEGORY_ND:
|
case UTF8PROC_CATEGORY_ND:
|
||||||
case UTF8PROC_CATEGORY_NL:
|
case UTF8PROC_CATEGORY_NL:
|
||||||
case UTF8PROC_CATEGORY_NO: return true;
|
case UTF8PROC_CATEGORY_NO: return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
//#include <crtdefs.h>
|
//#include <crtdefs.h>
|
||||||
#include <malloc.h>
|
//#include <malloc.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
//#include <intrin.h>
|
//#include <intrin.h>
|
||||||
|
@ -453,6 +453,7 @@ void* Internal::VirtualAlloc(intptr size, bool canExecute, bool canWrite)
|
||||||
return ptr;
|
return ptr;
|
||||||
#else
|
#else
|
||||||
BF_FATAL("Not supported");
|
BF_FATAL("Not supported");
|
||||||
|
return NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
BIN
BeefySysLib/.DS_Store
vendored
Normal file
BIN
BeefySysLib/.DS_Store
vendored
Normal file
Binary file not shown.
|
@ -34,6 +34,16 @@ add_definitions(
|
||||||
-DBP_DYNAMIC
|
-DBP_DYNAMIC
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
|
include_directories(
|
||||||
|
.
|
||||||
|
platform/osx
|
||||||
|
platform/darwin
|
||||||
|
third_party
|
||||||
|
third_party/freetype/include
|
||||||
|
../extern
|
||||||
|
)
|
||||||
|
else()
|
||||||
include_directories(
|
include_directories(
|
||||||
.
|
.
|
||||||
platform/linux
|
platform/linux
|
||||||
|
@ -41,6 +51,7 @@ include_directories(
|
||||||
third_party/freetype/include
|
third_party/freetype/include
|
||||||
../extern
|
../extern
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
############## Artefacts Output #################
|
############## Artefacts Output #################
|
||||||
# Defines outputs , depending Debug or Release. #
|
# Defines outputs , depending Debug or Release. #
|
||||||
|
@ -107,9 +118,6 @@ file(GLOB SRC_FILES
|
||||||
ResLib.cpp
|
ResLib.cpp
|
||||||
Startup.cpp
|
Startup.cpp
|
||||||
|
|
||||||
platform/linux/BFPlatform.cpp
|
|
||||||
platform/linux/LinuxCommon.cpp
|
|
||||||
|
|
||||||
fbx/FBXReader.cpp
|
fbx/FBXReader.cpp
|
||||||
gfx/DrawLayer.cpp
|
gfx/DrawLayer.cpp
|
||||||
gfx/FTFont.cpp
|
gfx/FTFont.cpp
|
||||||
|
@ -284,9 +292,22 @@ file(GLOB SRC_FILES
|
||||||
util/Vector.cpp
|
util/Vector.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
|
file(GLOB SRC_FILES_OS
|
||||||
|
platform/darwin/BFPlatform.cpp
|
||||||
|
platform/darwin/DarwinCommon.cpp
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
file(GLOB SRC_FILES_OS
|
||||||
|
platform/linux/BFPlatform.cpp
|
||||||
|
platform/linux/LinuxCommon.cpp
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add library to build.
|
# Add library to build.
|
||||||
add_library(${PROJECT_NAME} SHARED
|
add_library(${PROJECT_NAME} SHARED
|
||||||
${SRC_FILES}
|
${SRC_FILES}
|
||||||
|
${SRC_FILES_OS}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Link with other dependencies.
|
# Link with other dependencies.
|
||||||
|
|
|
@ -238,6 +238,9 @@ String Beefy::SlashString(const StringImpl& str, bool utf8decode, bool utf8encod
|
||||||
case UTF8PROC_CATEGORY_CF:
|
case UTF8PROC_CATEGORY_CF:
|
||||||
case UTF8PROC_CATEGORY_CO:
|
case UTF8PROC_CATEGORY_CO:
|
||||||
wantHex = true;
|
wantHex = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wantHex)
|
if (wantHex)
|
||||||
|
|
|
@ -212,7 +212,7 @@ void DataStream::Write(DataStream& refStream)
|
||||||
refStream.SetPos(0);
|
refStream.SetPos(0);
|
||||||
refStream.Read(data, size);
|
refStream.Read(data, size);
|
||||||
Write(data, size);
|
Write(data, size);
|
||||||
delete data;
|
delete [] data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataStream::WriteSNZ(const StringImpl& val)
|
void DataStream::WriteSNZ(const StringImpl& val)
|
||||||
|
|
|
@ -13,17 +13,17 @@ public:
|
||||||
|
|
||||||
virtual void PhysSetCursor() override { }
|
virtual void PhysSetCursor() override { }
|
||||||
|
|
||||||
virtual void GetDesktopResolution(int& width, int& height) { }
|
virtual void GetDesktopResolution(int& width, int& height) override { }
|
||||||
virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height) {}
|
virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height) override {}
|
||||||
|
|
||||||
virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) { return NULL; }
|
virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override { return NULL; }
|
||||||
virtual DrawLayer* CreateDrawLayer(BFWindow* window) { return NULL; }
|
virtual DrawLayer* CreateDrawLayer(BFWindow* window) override { return NULL; }
|
||||||
|
|
||||||
virtual void* GetClipboardData(const StringImpl& format, int* size) { return NULL; }
|
virtual void* GetClipboardData(const StringImpl& format, int* size) override { return NULL; }
|
||||||
virtual void ReleaseClipboardData(void* ptr) { }
|
virtual void ReleaseClipboardData(void* ptr) override { }
|
||||||
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) { }
|
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override { }
|
||||||
|
|
||||||
virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) { return NULL; }
|
virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) override { return NULL; }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -488,7 +488,7 @@ void FFTShift1D(BFComplex* array, int size, int pitch, int dir)
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
array[i * pitch] = prev[((i + dir) % size)];
|
array[i * pitch] = prev[((i + dir) % size)];
|
||||||
|
|
||||||
delete prev;
|
delete [] prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FFTShift2D(BFComplex* data, int cols, int rows)
|
static void FFTShift2D(BFComplex* data, int cols, int rows)
|
||||||
|
@ -543,7 +543,7 @@ static void FFTConvert(ImageData* source)
|
||||||
source->mBits[i] = 0xFF000000 | val | (val << 8) | (val << 16);
|
source->mBits[i] = 0xFF000000 | val | (val << 8) | (val << 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete fFTLog;
|
delete [] fFTLog;
|
||||||
delete [] nums;
|
delete [] nums;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,7 +563,7 @@ void DCT_1D(double* array, int size, int pitch)
|
||||||
array[idxOut*pitch] = 0.5 * scale * val;
|
array[idxOut*pitch] = 0.5 * scale * val;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete prev;
|
delete [] prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDCT_1D(double* array, int size, int pitch)
|
void IDCT_1D(double* array, int size, int pitch)
|
||||||
|
@ -583,7 +583,7 @@ void IDCT_1D(double* array, int size, int pitch)
|
||||||
array[idxOut*pitch] = 0.5 * val;
|
array[idxOut*pitch] = 0.5 * val;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete prev;
|
delete [] prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int DCT_1D_I_TABLE[64] =
|
const int DCT_1D_I_TABLE[64] =
|
||||||
|
@ -619,7 +619,7 @@ void DCT_1D_I(int* array, int size, int pitch)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete prev;
|
delete [] prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int IDCT_1D_I_TABLE[64] =
|
const int IDCT_1D_I_TABLE[64] =
|
||||||
|
|
|
@ -85,7 +85,7 @@ bool ImageData::LoadFromFile(const StringImpl& path)
|
||||||
int size = 0;
|
int size = 0;
|
||||||
uint8* aData = LoadBinaryData(path, &size);
|
uint8* aData = LoadBinaryData(path, &size);
|
||||||
if (aData == NULL)
|
if (aData == NULL)
|
||||||
return NULL;
|
return false;
|
||||||
SetSrcData(aData, size);
|
SetSrcData(aData, size);
|
||||||
bool result = ReadData();
|
bool result = ReadData();
|
||||||
if (mKeepSrcDataValid)
|
if (mKeepSrcDataValid)
|
||||||
|
|
|
@ -441,7 +441,7 @@ void SoftBlur(uint32* data, int w, int h, float radius, uint32 defaultValue)
|
||||||
BoxBlur(tempBuffer, data, h, w, d, defaultValue);
|
BoxBlur(tempBuffer, data, h, w, d, defaultValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete tempBuffer;
|
delete [] tempBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gAlphaCheckOfs [][2] =
|
static int gAlphaCheckOfs [][2] =
|
||||||
|
@ -1705,7 +1705,7 @@ void ChokedPixelTransform(ImageData* src, ImageData* dest, float radius, float c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete tempBuffer;
|
delete [] tempBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageOuterGlowEffect::Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData)
|
void ImageOuterGlowEffect::Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData)
|
||||||
|
@ -2251,7 +2251,7 @@ void ImageBevelEffect::Apply(int pass, int style, PSDLayerInfo* layerInfo, Image
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete normalMap;
|
delete [] normalMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageBevelEffect::Apply(ImageEffectCtx* ctx)
|
void ImageBevelEffect::Apply(ImageEffectCtx* ctx)
|
||||||
|
|
|
@ -152,7 +152,7 @@ public:
|
||||||
public:
|
public:
|
||||||
virtual void Init() override;
|
virtual void Init() override;
|
||||||
virtual void CreateContourAndGradientData();
|
virtual void CreateContourAndGradientData();
|
||||||
virtual int GetNeededBorderSize();
|
virtual int GetNeededBorderSize() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ImageOuterGlowEffect : public ImageGlowEffect
|
class ImageOuterGlowEffect : public ImageGlowEffect
|
||||||
|
@ -266,9 +266,9 @@ public:
|
||||||
void Init() override;
|
void Init() override;
|
||||||
void Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
|
void Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
|
||||||
virtual void Apply(ImageEffectCtx* ctx) override;
|
virtual void Apply(ImageEffectCtx* ctx) override;
|
||||||
virtual int GetMixType();
|
virtual int GetMixType() override;
|
||||||
void Apply(int pass, int style, PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* hiliteImage, ImageData* shadowImage);
|
void Apply(int pass, int style, PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* hiliteImage, ImageData* shadowImage);
|
||||||
virtual int GetNeededBorderSize();
|
virtual int GetNeededBorderSize() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::vector<BaseImageEffect*> ImageEffectVector;
|
typedef std::vector<BaseImageEffect*> ImageEffectVector;
|
||||||
|
@ -286,10 +286,10 @@ public:
|
||||||
bool mInvert;
|
bool mInvert;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void Init();
|
virtual void Init() override;
|
||||||
virtual void Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
|
virtual void Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
|
||||||
virtual int GetMixType(); // Default:Interior
|
virtual int GetMixType() override; // Default:Interior
|
||||||
virtual int GetNeededBorderSize();
|
virtual int GetNeededBorderSize() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ImageColorOverlayEffect : public BaseImageEffect
|
class ImageColorOverlayEffect : public BaseImageEffect
|
||||||
|
@ -334,8 +334,8 @@ public:
|
||||||
public:
|
public:
|
||||||
virtual void Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
|
virtual void Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
|
||||||
virtual void Apply(ImageEffectCtx* ctx) override;
|
virtual void Apply(ImageEffectCtx* ctx) override;
|
||||||
virtual int GetMixType(); // Default:Interior
|
virtual int GetMixType() override; // Default:Interior
|
||||||
virtual int GetNeededBorderSize();
|
virtual int GetNeededBorderSize() override;
|
||||||
virtual bool NeedsOrigBits(ImageEffects* effects) override;
|
virtual bool NeedsOrigBits(ImageEffects* effects) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1907,12 +1907,12 @@ bool PSDLayerInfo::ReadData()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete rowData;
|
delete [] rowData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete rowLengths;
|
delete [] rowLengths;
|
||||||
|
|
||||||
if (((mLayerMask != NULL) || (mVectorMask != NULL)) && (!mLayerMaskHidesEffects))
|
if (((mLayerMask != NULL) || (mVectorMask != NULL)) && (!mLayerMaskHidesEffects))
|
||||||
ApplyMask(this);
|
ApplyMask(this);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -8,6 +8,220 @@
|
||||||
|
|
||||||
#define BOOST_DETAIL_NO_CONTAINER_FWD
|
#define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
//#include <libkern/OSAtomic.h>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <wctype.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <mach/error.h>
|
||||||
|
|
||||||
|
//#define errno (*__error())
|
||||||
|
|
||||||
|
//#define offsetof(type, member) __builtin_offsetof (type, member)
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
//#define FFI_BUILDING
|
||||||
|
//#include "third_party/libffi/x86_64-apple-darwin12.5.0/include/ffi.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BF_ENDIAN_LITTLE
|
||||||
|
|
||||||
|
#define _NOEXCEPT noexcept
|
||||||
|
#define NTAPI
|
||||||
|
|
||||||
|
#define FFI_STDCALL FFI_DEFAULT_ABI
|
||||||
|
#define FFI_THISCALL FFI_DEFAULT_ABI
|
||||||
|
#define FFI_FASTCALL FFI_DEFAULT_ABI
|
||||||
|
|
||||||
|
#define INVALID_SOCKET -1
|
||||||
|
|
||||||
|
typedef uint64_t uint64;
|
||||||
|
typedef uint32_t uint32;
|
||||||
|
typedef uint16_t uint16;
|
||||||
|
typedef uint8_t uint8;
|
||||||
|
typedef int64_t int64;
|
||||||
|
typedef int32_t int32;
|
||||||
|
typedef int16_t int16;
|
||||||
|
typedef int8_t int8;
|
||||||
|
typedef unsigned int uint;
|
||||||
|
|
||||||
|
#define BF_PLATFORM_LINUX
|
||||||
|
#define BF_PLATFORM_NAME "BF_PLATFORM_LINUX"
|
||||||
|
//#define BF_PLATFORM_SDL
|
||||||
|
|
||||||
|
#define NOP
|
||||||
|
//#define BF_NOTHROW throw ()
|
||||||
|
//#define BF_NOTHROW noexcept
|
||||||
|
#define BF_NOTHROW
|
||||||
|
|
||||||
|
#ifdef BF64
|
||||||
|
typedef int64 intptr;
|
||||||
|
typedef uint64 uintptr;
|
||||||
|
#else
|
||||||
|
typedef int32 intptr;
|
||||||
|
typedef uint32 uintptr;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef wchar_t* BSTR;
|
||||||
|
typedef int HRESULT;
|
||||||
|
typedef uint8 BYTE;
|
||||||
|
typedef uint16 WORD;
|
||||||
|
typedef uint32 DWORD;
|
||||||
|
typedef int32 LONG;
|
||||||
|
|
||||||
|
typedef pthread_key_t BFTlsKey;
|
||||||
|
typedef pthread_t BF_THREADID;
|
||||||
|
typedef pthread_t BF_THREADHANDLE;
|
||||||
|
#define BF_TLS_DECLSPEC thread_local
|
||||||
|
|
||||||
|
//:int64 abs(int64 val);
|
||||||
|
|
||||||
|
#define _stricmp stricmp
|
||||||
|
#define strnicmp strncasecmp
|
||||||
|
|
||||||
|
struct IID
|
||||||
|
{
|
||||||
|
unsigned long Data1;
|
||||||
|
unsigned short Data2;
|
||||||
|
unsigned short Data3;
|
||||||
|
unsigned char Data4[ 8 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void* HANDLE;
|
||||||
|
typedef void* HMODULE;
|
||||||
|
|
||||||
|
// We only need the stdcall attribute for x32?
|
||||||
|
//#define BFSTDCALL __attribute__((stdcall))
|
||||||
|
|
||||||
|
//#include "../notwin/NotWin.h"
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define _DEBUG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define NOT_IMPL throw "Unimplemented";
|
||||||
|
|
||||||
|
//ARM
|
||||||
|
|
||||||
|
#if defined(__x86_64__) || defined(__i386__)
|
||||||
|
#define BF_FULL_MEMORY_FENCE() __asm__ __volatile__("mfence": : :"memory")
|
||||||
|
#define BF_SPINWAIT_NOP() __asm__ volatile ("pause\n" : : : "memory" );
|
||||||
|
#else
|
||||||
|
#define BF_FULL_MEMORY_FENCE() __sync_synchronize()
|
||||||
|
#define BF_SPINWAIT_NOP() ((void) 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BF_COMPILER_FENCE() __asm__ __volatile__("": : :"memory")
|
||||||
|
#define BF_THREAD_YIELD() sched_yield()
|
||||||
|
|
||||||
|
#if defined _DEBUG || defined BF_DEBUG_ASSERTS
|
||||||
|
#define BF_ASSERT(_Expression) (void)( (!!(_Expression)) || (Beefy::BFFatalError(#_Expression, __FILE__, __LINE__), 0) )
|
||||||
|
#else
|
||||||
|
#define BF_ASSERT(_Expression) (void)(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BF_ASSERT_REL(_Expression) (void)( (!!(_Expression)) || (Beefy::BFFatalError(#_Expression, __FILE__, __LINE__), 0) )
|
||||||
|
#define BF_FATAL(msg) (void) ((Beefy::BFFatalError(msg, __FILE__, __LINE__), 0) )
|
||||||
|
|
||||||
|
#if defined _DEBUG || defined BF_DEBUG_ASSERTS
|
||||||
|
#define BF_DBG_FATAL(msg) (void) ((Beefy::BFFatalError(msg, __FILE__, __LINE__), 0) )
|
||||||
|
#else
|
||||||
|
#define BF_DBG_FATAL(msg)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BF_NOINLINE __attribute__ ((noinline))
|
||||||
|
#define BF_NAKED
|
||||||
|
|
||||||
|
#define stricmp strcasecmp
|
||||||
|
#define _alloca alloca
|
||||||
|
|
||||||
|
#define DIR_SEP_CHAR '/'
|
||||||
|
#define DIR_SEP_CHAR_ALT '\\'
|
||||||
|
|
||||||
|
static char* itoa(int value, char* str, int base)
|
||||||
|
{
|
||||||
|
if (base == 16)
|
||||||
|
sprintf(str, "%X", value);
|
||||||
|
else
|
||||||
|
sprintf(str, "%d", value);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint32 InterlockedCompareExchange(volatile uint32* dest, uint32 exch, uint32 comp)
|
||||||
|
{
|
||||||
|
return __sync_val_compare_and_swap(dest, comp, exch);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint64 InterlockedCompareExchange64(volatile int64* dest, int64 exch, int64 comp)
|
||||||
|
{
|
||||||
|
return __sync_val_compare_and_swap(dest, comp, exch);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void* InterlockedCompareExchangePointer(void* volatile* dest, void* exch, void* comp)
|
||||||
|
{
|
||||||
|
return __sync_val_compare_and_swap(dest, comp, exch);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint32 InterlockedExchange(volatile uint32* dest, uint32 val)
|
||||||
|
{
|
||||||
|
return __sync_lock_test_and_set(dest, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint64 InterlockedExchange64(volatile int64* dest, int64 val)
|
||||||
|
{
|
||||||
|
return __sync_lock_test_and_set(dest, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint32 InterlockedExchangeAdd(volatile uint32* dest, uint32 val)
|
||||||
|
{
|
||||||
|
return __sync_add_and_fetch(dest, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int32 InterlockedIncrement(volatile uint32* val)
|
||||||
|
{
|
||||||
|
return __sync_add_and_fetch(val, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int64 InterlockedIncrement64(volatile int64* val)
|
||||||
|
{
|
||||||
|
return __sync_add_and_fetch(val, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int32 InterlockedDecrement(volatile uint32* val)
|
||||||
|
{
|
||||||
|
return __sync_add_and_fetch(val, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int64 InterlockedDecrement64(volatile int64* val)
|
||||||
|
{
|
||||||
|
return __sync_add_and_fetch(val, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __LP64__
|
||||||
|
#define BF64
|
||||||
|
#else
|
||||||
|
#define BF32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
@ -64,7 +278,7 @@ typedef int32 LONG;
|
||||||
typedef pthread_key_t BFTlsKey;
|
typedef pthread_key_t BFTlsKey;
|
||||||
typedef pthread_t BF_THREADID;
|
typedef pthread_t BF_THREADID;
|
||||||
|
|
||||||
int64 abs(int64 val);
|
int64 abs(int64 val) noexcept;
|
||||||
|
|
||||||
struct IID
|
struct IID
|
||||||
{
|
{
|
||||||
|
@ -320,3 +534,5 @@ inline int64 InterlockedDecrement64(volatile int64* val)
|
||||||
{
|
{
|
||||||
return OSAtomicDecrement64Barrier(val);
|
return OSAtomicDecrement64Barrier(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,9 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../sdl/SdlBFApp.h"
|
//include "../sdl/SdlBFApp.h"
|
||||||
|
#include "../../HeadlessApp.h"
|
||||||
|
|
||||||
NS_BF_BEGIN;
|
NS_BF_BEGIN;
|
||||||
|
|
||||||
typedef SdlBFApp PlatformBFApp;
|
//typedef SdlBFApp PlatformBFApp;
|
||||||
|
typedef HeadlessApp PlatformBFApp;
|
||||||
|
|
||||||
NS_BF_END;
|
NS_BF_END;
|
|
@ -1233,7 +1233,7 @@ BFP_EXPORT void BFP_CALLTYPE BfpThread_Sleep(int sleepMS)
|
||||||
|
|
||||||
BFP_EXPORT bool BFP_CALLTYPE BfpThread_Yield()
|
BFP_EXPORT bool BFP_CALLTYPE BfpThread_Yield()
|
||||||
{
|
{
|
||||||
sched_yield();
|
return sched_yield() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct BfpCritSect
|
struct BfpCritSect
|
||||||
|
@ -1814,24 +1814,24 @@ BFP_EXPORT void BFP_CALLTYPE BfpFile_Flush(BfpFile* file)
|
||||||
::fsync(file->mHandle);
|
::fsync(file->mHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetFileSize(BfpFile* file)
|
BFP_EXPORT int64 BFP_CALLTYPE BfpFile_GetFileSize(BfpFile* file)
|
||||||
{
|
{
|
||||||
int64 oldPos = (int64)lseek64(file->mHandle, 0, SEEK_CUR);
|
int64 oldPos = (int64)lseek64(file->mHandle, 0, SEEK_CUR);
|
||||||
int64 size = (int64)lseek64(file->mHandle, 0, SEEK_END);
|
int64 size = (int64)lseek64(file->mHandle, 0, SEEK_END);
|
||||||
lseek64(file->mHandle, oldPos, SEEK_SET);
|
lseek64(file->mHandle, oldPos, SEEK_SET);
|
||||||
return (intptr)size;
|
return (int64)size;
|
||||||
}
|
}
|
||||||
|
|
||||||
BFP_EXPORT intptr BFP_CALLTYPE BfpFile_Seek(BfpFile* file, intptr offset, BfpFileSeekKind seekKind)
|
BFP_EXPORT int64 BFP_CALLTYPE BfpFile_Seek(BfpFile* file, int64 offset, BfpFileSeekKind seekKind)
|
||||||
{
|
{
|
||||||
int whence;
|
int whence;
|
||||||
if (seekKind = BfpFileSeekKind_Absolute)
|
if (seekKind == BfpFileSeekKind_Absolute)
|
||||||
whence = SEEK_SET;
|
whence = SEEK_SET;
|
||||||
else if (seekKind = BfpFileSeekKind_Relative)
|
else if (seekKind == BfpFileSeekKind_Relative)
|
||||||
whence = SEEK_CUR;
|
whence = SEEK_CUR;
|
||||||
else
|
else
|
||||||
whence = SEEK_END;
|
whence = SEEK_END;
|
||||||
lseek64(file->mHandle, offset, whence);
|
return seek64(file->mHandle, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
BFP_EXPORT void BFP_CALLTYPE BfpFile_Truncate(BfpFile* file)
|
BFP_EXPORT void BFP_CALLTYPE BfpFile_Truncate(BfpFile* file)
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define BFSTDCALL __stdcall
|
#define BFSTDCALL
|
||||||
|
|
||||||
#include "../darwin/DarwinCommon.h"
|
#include "../darwin/DarwinCommon.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#define BF_PLATFORM_OSX
|
#define BF_PLATFORM_OSX
|
||||||
|
|
||||||
|
#define BF_IMPORT extern "C"
|
||||||
|
|
||||||
#ifdef BFSYSLIB_DYNAMIC
|
#ifdef BFSYSLIB_DYNAMIC
|
||||||
#define BF_EXPORT extern "C" __declspec(dllexport)
|
#define BF_EXPORT extern "C"
|
||||||
#define BF_CALLTYPE
|
#define BF_CALLTYPE
|
||||||
#else
|
#else
|
||||||
#define BF_EXPORT extern "C"
|
#define BF_EXPORT extern "C"
|
||||||
|
@ -21,3 +24,6 @@
|
||||||
#define BF_REGISTER_COUNT 15
|
#define BF_REGISTER_COUNT 15
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define BF_DEBUG_BREAK()
|
||||||
|
|
||||||
|
#include "../PlatformInterface.h"
|
|
@ -711,3 +711,18 @@ DrawLayer* SdlBFApp::CreateDrawLayer(BFWindow* window)
|
||||||
}
|
}
|
||||||
return drawLayer;
|
return drawLayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SdlBFApp::GetDesktopResolution(int& width, int& height) override
|
||||||
|
{
|
||||||
|
width = 1024;
|
||||||
|
height = 768;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SdlBFApp::GetWorkspaceRect(int& x, int& y, int& width, int& height) override
|
||||||
|
{
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
width = 1024;
|
||||||
|
height = 768;
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "BFApp.h"
|
#include "BFApp.h"
|
||||||
#include "BFWindow.h"
|
#include "BFWindow.h"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
struct SDL_Window;
|
struct SDL_Window;
|
||||||
|
|
||||||
|
@ -56,13 +57,15 @@ public:
|
||||||
virtual void Run() override;
|
virtual void Run() override;
|
||||||
|
|
||||||
virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override;
|
virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override;
|
||||||
virtual DrawLayer* CreateDrawLayer(BFWindow* window);
|
virtual DrawLayer* CreateDrawLayer(BFWindow* window) override;
|
||||||
|
|
||||||
virtual void* GetClipboardData(const StringImpl& format, int* size) override;
|
virtual void* GetClipboardData(const StringImpl& format, int* size) override;
|
||||||
virtual void ReleaseClipboardData(void* ptr) override;
|
virtual void ReleaseClipboardData(void* ptr) override;
|
||||||
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
|
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
|
||||||
|
|
||||||
virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) override;
|
virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) override;
|
||||||
|
virtual void GetDesktopResolution(int& width, int& height) override;
|
||||||
|
virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
NS_BF_END;
|
NS_BF_END;
|
|
@ -137,6 +137,21 @@ public:
|
||||||
{
|
{
|
||||||
return mPtr < val2.mPtr;
|
return mPtr < val2.mPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool operator>(const iterator& val2) const
|
||||||
|
{
|
||||||
|
return mPtr > val2.mPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator<=(const iterator& val2) const
|
||||||
|
{
|
||||||
|
return mPtr <= val2.mPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator>=(const iterator& val2) const
|
||||||
|
{
|
||||||
|
return mPtr >= val2.mPtr;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct const_iterator
|
struct const_iterator
|
||||||
|
@ -1041,7 +1056,7 @@ class Array : public ArrayImpl<T, TAlloc, std::is_pod<T>::value>
|
||||||
public:
|
public:
|
||||||
typedef ArrayImpl<T, TAlloc, std::is_pod<T>::value> _ArrayImpl;
|
typedef ArrayImpl<T, TAlloc, std::is_pod<T>::value> _ArrayImpl;
|
||||||
|
|
||||||
using _ArrayImpl::ArrayImpl;
|
using ArrayImpl<T, TAlloc, std::is_pod<T>::value>::ArrayImpl;
|
||||||
using _ArrayImpl::operator=;
|
using _ArrayImpl::operator=;
|
||||||
using _ArrayImpl::operator==;
|
using _ArrayImpl::operator==;
|
||||||
using _ArrayImpl::operator!=;
|
using _ArrayImpl::operator!=;
|
||||||
|
|
|
@ -17,6 +17,14 @@ typedef fd_set FD_SET;
|
||||||
#define closesocket close
|
#define closesocket close
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BF_PLATFORM_OSX
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <mach/error.h>
|
||||||
|
#include <mach/mach.h>
|
||||||
|
#include <cerrno>
|
||||||
|
//#define errno (*__error())
|
||||||
|
#endif
|
||||||
|
|
||||||
//#include <rpcdce.h>
|
//#include <rpcdce.h>
|
||||||
|
|
||||||
#pragma comment(lib,"wsock32.lib")
|
#pragma comment(lib,"wsock32.lib")
|
||||||
|
|
|
@ -1049,7 +1049,7 @@ class Deque : public DequeImpl<T, TAlloc, std::is_pod<T>::value>
|
||||||
public:
|
public:
|
||||||
typedef DequeImpl<T, TAlloc, std::is_pod<T>::value> _DequeImpl;
|
typedef DequeImpl<T, TAlloc, std::is_pod<T>::value> _DequeImpl;
|
||||||
|
|
||||||
using _DequeImpl::DequeImpl;
|
using DequeImpl<T, TAlloc, std::is_pod<T>::value>::DequeImpl;
|
||||||
using _DequeImpl::operator=;
|
using _DequeImpl::operator=;
|
||||||
using _DequeImpl::operator==;
|
using _DequeImpl::operator==;
|
||||||
using _DequeImpl::operator!=;
|
using _DequeImpl::operator!=;
|
||||||
|
|
|
@ -44,7 +44,7 @@ void PolySpline2D::Calculate()
|
||||||
for (int i=0; i<n; i++)
|
for (int i=0; i<n; i++)
|
||||||
mCoefs[i] = mat[i];
|
mCoefs[i] = mat[i];
|
||||||
|
|
||||||
delete mat;
|
delete [] mat;
|
||||||
}
|
}
|
||||||
|
|
||||||
float PolySpline2D::Evaluate(float x)
|
float PolySpline2D::Evaluate(float x)
|
||||||
|
|
|
@ -834,7 +834,7 @@ public:
|
||||||
typename _Base::TStorage mInternalBuffer[TInternalSize - 1];
|
typename _Base::TStorage mInternalBuffer[TInternalSize - 1];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using _Base::SizedArrayImpl;
|
using SizedArrayImpl<T, TAlloc>::SizedArrayImpl;
|
||||||
using _Base::operator=;
|
using _Base::operator=;
|
||||||
using _Base::operator==;
|
using _Base::operator==;
|
||||||
using _Base::operator!=;
|
using _Base::operator!=;
|
||||||
|
|
|
@ -723,7 +723,7 @@ bool StringImpl::HasMultibyteChars()
|
||||||
{
|
{
|
||||||
auto ptr = GetPtr();
|
auto ptr = GetPtr();
|
||||||
for (int i = 0; i < (int)mLength; i++)
|
for (int i = 0; i < (int)mLength; i++)
|
||||||
if (ptr[i] >= 0x80)
|
if ((uint8)ptr[i] >= (uint8)0x80)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,16 +33,31 @@ add_definitions(
|
||||||
-DBFSYSLIB_DYNAMIC
|
-DBFSYSLIB_DYNAMIC
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
include_directories(
|
include_directories(
|
||||||
.
|
.
|
||||||
|
../
|
||||||
../BeefySysLib/
|
../BeefySysLib/
|
||||||
../BeefySysLib/platform/linux
|
|
||||||
../BeefySysLib/third_party
|
../BeefySysLib/third_party
|
||||||
../BeefySysLib/third_party/freetype/include
|
../BeefySysLib/third_party/freetype/include
|
||||||
../
|
|
||||||
../extern/llvm-project_8_0_0/llvm/include
|
../extern/llvm-project_8_0_0/llvm/include
|
||||||
../extern/llvm-project_8_0_0/llvm/lib/Target
|
../extern/llvm-project_8_0_0/llvm/lib/Target
|
||||||
|
|
||||||
|
../BeefySysLib/platform/osx
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
include_directories(
|
||||||
|
.
|
||||||
|
../
|
||||||
|
../BeefySysLib/
|
||||||
|
../BeefySysLib/third_party
|
||||||
|
../BeefySysLib/third_party/freetype/include
|
||||||
|
../extern/llvm-project_8_0_0/llvm/include
|
||||||
|
../extern/llvm-project_8_0_0/llvm/lib/Target
|
||||||
|
|
||||||
|
../BeefySysLib/platform/linux
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
############## Artefacts Output #################
|
############## Artefacts Output #################
|
||||||
# Defines outputs , depending Debug or Release. #
|
# Defines outputs , depending Debug or Release. #
|
||||||
|
@ -161,11 +176,17 @@ add_library(${PROJECT_NAME} SHARED
|
||||||
${SRC_FILES}
|
${SRC_FILES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (${APPLE})
|
||||||
|
set(TARGET_LIBS_OS "ncurses")
|
||||||
|
else()
|
||||||
|
set(TARGET_LIBS_OS "backtrace")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Link with other dependencies.
|
# Link with other dependencies.
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_link_libraries(${PROJECT_NAME} BeefySysLib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LLVMX86Disassembler.lib LLVMMCDisassembler.lib LLVMSupport.lib LLVMX86Info.lib LLVMX86Utils.lib LLVMX86AsmPrinter.lib LLVMX86Desc.lib %(AdditionalDependencies) LLVMMC.lib LLVMObject.lib LLVMCore.lib LLVMBitReader.lib LLVMAsmParser.lib LLVMMCParser.lib LLVMCodeGen.lib LLVMTarget.lib LLVMX86CodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMSelectionDAG.lib LLVMProfileData.lib LLVMTransformUtils.lib LLVMAnalysis.lib LLVMX86AsmParser.lib LLVMAsmPrinter.lib LLVMBitWriter.lib LLVMVectorize.lib LLVMipo.lib LLVMInstrumentation.lib LLVMDebugInfoDWARF.lib LLVMDebugInfoPDB.lib LLVMDebugInfoCodeView.lib LLVMGlobalISel.lib LLVMBinaryFormat.lib LLVMAggressiveInstCombine.lib libcurl_a.lib)
|
target_link_libraries(${PROJECT_NAME} BeefySysLib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LLVMX86Disassembler.lib LLVMMCDisassembler.lib LLVMSupport.lib LLVMX86Info.lib LLVMX86Utils.lib LLVMX86AsmPrinter.lib LLVMX86Desc.lib %(AdditionalDependencies) LLVMMC.lib LLVMObject.lib LLVMCore.lib LLVMBitReader.lib LLVMAsmParser.lib LLVMMCParser.lib LLVMCodeGen.lib LLVMTarget.lib LLVMX86CodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMSelectionDAG.lib LLVMProfileData.lib LLVMTransformUtils.lib LLVMAnalysis.lib LLVMX86AsmParser.lib LLVMAsmPrinter.lib LLVMBitWriter.lib LLVMVectorize.lib LLVMipo.lib LLVMInstrumentation.lib LLVMDebugInfoDWARF.lib LLVMDebugInfoPDB.lib LLVMDebugInfoCodeView.lib LLVMGlobalISel.lib LLVMBinaryFormat.lib LLVMAggressiveInstCombine.lib libcurl_a.lib)
|
||||||
else()
|
else()
|
||||||
target_link_libraries(${PROJECT_NAME} BeefySysLib hunspell pthread dl backtrace
|
target_link_libraries(${PROJECT_NAME} BeefySysLib hunspell pthread dl ${TARGET_LIBS_OS}
|
||||||
${LLVM_LIB}/libLLVMCore.a
|
${LLVM_LIB}/libLLVMCore.a
|
||||||
${LLVM_LIB}/libLLVMMC.a
|
${LLVM_LIB}/libLLVMMC.a
|
||||||
${LLVM_LIB}/libLLVMMCParser.a
|
${LLVM_LIB}/libLLVMMCParser.a
|
||||||
|
|
|
@ -1506,6 +1506,8 @@ int Beefy::BfGetBinaryOpPrecendence(BfBinaryOp binOp)
|
||||||
return 2;
|
return 2;
|
||||||
case BfBinaryOp_NullCoalesce:
|
case BfBinaryOp_NullCoalesce:
|
||||||
return 1;
|
return 1;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -655,6 +655,8 @@ public:
|
||||||
case BfTypedValueKind_ParamsSplat:
|
case BfTypedValueKind_ParamsSplat:
|
||||||
case BfTypedValueKind_Params:
|
case BfTypedValueKind_Params:
|
||||||
return true;
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -364,7 +364,7 @@ BfTypedValue BfAutoComplete::LookupTypeRefOrIdentifier(BfAstNode* node, bool* is
|
||||||
if (auto identifier = BfNodeDynCast<BfIdentifierNode>(node))
|
if (auto identifier = BfNodeDynCast<BfIdentifierNode>(node))
|
||||||
{
|
{
|
||||||
BfExprEvaluator exprEvaluator(mModule);
|
BfExprEvaluator exprEvaluator(mModule);
|
||||||
auto identifierResult = exprEvaluator.LookupIdentifier(identifier, NULL);
|
auto identifierResult = exprEvaluator.LookupIdentifier(identifier, false, NULL);
|
||||||
if (!identifierResult)
|
if (!identifierResult)
|
||||||
identifierResult = exprEvaluator.GetResult();
|
identifierResult = exprEvaluator.GetResult();
|
||||||
if (identifierResult)
|
if (identifierResult)
|
||||||
|
@ -1435,7 +1435,7 @@ bool BfAutoComplete::CheckMemberReference(BfAstNode* target, BfAstNode* dotToken
|
||||||
{
|
{
|
||||||
BfAttributedIdentifierNode* attrIdentifier = NULL;
|
BfAttributedIdentifierNode* attrIdentifier = NULL;
|
||||||
bool isAutocompletingName = false;
|
bool isAutocompletingName = false;
|
||||||
if (attrIdentifier = BfNodeDynCast<BfAttributedIdentifierNode>(memberName))
|
if ((attrIdentifier = BfNodeDynCast<BfAttributedIdentifierNode>(memberName)))
|
||||||
{
|
{
|
||||||
memberName = attrIdentifier->mIdentifier;
|
memberName = attrIdentifier->mIdentifier;
|
||||||
if ((memberName == NULL) && (IsAutocompleteNode(attrIdentifier->mAttributes)))
|
if ((memberName == NULL) && (IsAutocompleteNode(attrIdentifier->mAttributes)))
|
||||||
|
|
|
@ -1074,7 +1074,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
|
||||||
|
|
||||||
for (auto type : orderedTypes)
|
for (auto type : orderedTypes)
|
||||||
{
|
{
|
||||||
if ((type == NULL) /*|| (type->IsUnspecializedType()*/)
|
if (type == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (type->IsTemporary())
|
if (type->IsTemporary())
|
||||||
|
|
|
@ -1840,7 +1840,7 @@ void BfDefBuilder::FinishTypeDef(bool wantsToString)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isPayloadEnum = false;
|
bool isPayloadEnum = false;
|
||||||
if ((mCurTypeDef->mTypeCode == BfTypeCode_Enum) /*&& (mCurTypeDef->mGenericParams.size() == 0)*/)
|
if (mCurTypeDef->mTypeCode == BfTypeCode_Enum)
|
||||||
{
|
{
|
||||||
for (auto fieldDef : mCurTypeDef->mFields)
|
for (auto fieldDef : mCurTypeDef->mFields)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,6 +42,7 @@ static BfBinaryOp GetOppositeBinaryOp(BfBinaryOp origOp)
|
||||||
return BfBinaryOp_LessThanOrEqual;
|
return BfBinaryOp_LessThanOrEqual;
|
||||||
case BfBinaryOp_GreaterThanOrEqual:
|
case BfBinaryOp_GreaterThanOrEqual:
|
||||||
return BfBinaryOp_LessThan;
|
return BfBinaryOp_LessThan;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return BfBinaryOp_None;
|
return BfBinaryOp_None;
|
||||||
|
@ -63,6 +64,7 @@ static BfBinaryOp GetFlippedBinaryOp(BfBinaryOp origOp)
|
||||||
return BfBinaryOp_LessThan;
|
return BfBinaryOp_LessThan;
|
||||||
case BfBinaryOp_GreaterThanOrEqual:
|
case BfBinaryOp_GreaterThanOrEqual:
|
||||||
return BfBinaryOp_LessThanOrEqual;
|
return BfBinaryOp_LessThanOrEqual;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return BfBinaryOp_None;
|
return BfBinaryOp_None;
|
||||||
|
@ -7708,6 +7710,7 @@ bool BfExprEvaluator::LookupTypeProp(BfTypeOfExpression* typeOfExpr, BfIdentifie
|
||||||
case BfTypeCode_UInt64:
|
case BfTypeCode_UInt64:
|
||||||
mResult = BfTypedValue(mModule->mBfIRBuilder->CreateConst(primType->mTypeDef->mTypeCode, isMin ? 0 : (uint64)0xFFFFFFFFFFFFFFFFLL), typeInstance);
|
mResult = BfTypedValue(mModule->mBfIRBuilder->CreateConst(primType->mTypeDef->mTypeCode, isMin ? 0 : (uint64)0xFFFFFFFFFFFFFFFFLL), typeInstance);
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7754,6 +7757,7 @@ void BfExprEvaluator::DoTypeIntAttr(BfTypeReference* typeRef, BfToken token)
|
||||||
case BfToken_SizeOf: attrVal = type->mSize; break;
|
case BfToken_SizeOf: attrVal = type->mSize; break;
|
||||||
case BfToken_AlignOf: attrVal = type->mAlign; break;
|
case BfToken_AlignOf: attrVal = type->mAlign; break;
|
||||||
case BfToken_StrideOf: attrVal = type->GetStride(); break;
|
case BfToken_StrideOf: attrVal = type->GetStride(); break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isUndefVal = false;
|
bool isUndefVal = false;
|
||||||
|
@ -16481,6 +16485,7 @@ bool BfExprEvaluator::CheckConstCompare(BfBinaryOp binaryOp, BfAstNode* opToken,
|
||||||
if (rightConst->mInt64 < minValue)
|
if (rightConst->mInt64 < minValue)
|
||||||
constResult = 0;
|
constResult = 0;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -16524,6 +16529,7 @@ bool BfExprEvaluator::CheckConstCompare(BfBinaryOp binaryOp, BfAstNode* opToken,
|
||||||
else if (rightConst->mInt64 <= minValue)
|
else if (rightConst->mInt64 <= minValue)
|
||||||
constResult = 1;
|
constResult = 1;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16591,7 +16597,8 @@ void BfExprEvaluator::PerformBinaryOperation(BfAstNode* leftExpression, BfAstNod
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mModule->Fail(StrFormat("Operator '??' cannot be applied to operands of type '%s' and '%s'",
|
// Note: Annoying trigraph split for '??'
|
||||||
|
mModule->Fail(StrFormat("Operator '?" "?' cannot be applied to operands of type '%s' and '%s'",
|
||||||
mModule->TypeToString(leftValue.mType).c_str(), mModule->TypeToString(rightValue.mType).c_str()), opToken);
|
mModule->TypeToString(leftValue.mType).c_str(), mModule->TypeToString(rightValue.mType).c_str()), opToken);
|
||||||
leftValue = mModule->GetDefaultTypedValue(rightValue.mType);
|
leftValue = mModule->GetDefaultTypedValue(rightValue.mType);
|
||||||
}
|
}
|
||||||
|
@ -16971,6 +16978,7 @@ void BfExprEvaluator::PerformBinaryOperation(BfAstNode* leftExpression, BfAstNod
|
||||||
case BfBinaryOp_LessThanOrEqual:
|
case BfBinaryOp_LessThanOrEqual:
|
||||||
mResult = BfTypedValue(mModule->mBfIRBuilder->CreateCmpLTE(mResult.mValue, zeroVal, true), boolType);
|
mResult = BfTypedValue(mModule->mBfIRBuilder->CreateCmpLTE(mResult.mValue, zeroVal, true), boolType);
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17653,6 +17661,7 @@ void BfExprEvaluator::Visit(BfBinaryOperatorExpression* binOpExpr)
|
||||||
case BfBinaryOp_Subtract: unaryOp = BfUnaryOp_Negate; break;
|
case BfBinaryOp_Subtract: unaryOp = BfUnaryOp_Negate; break;
|
||||||
case BfBinaryOp_Multiply: unaryOp = BfUnaryOp_Dereference; break;
|
case BfBinaryOp_Multiply: unaryOp = BfUnaryOp_Dereference; break;
|
||||||
case BfBinaryOp_BitwiseAnd: unaryOp = BfUnaryOp_AddressOf; break;
|
case BfBinaryOp_BitwiseAnd: unaryOp = BfUnaryOp_AddressOf; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unaryOp != BfUnaryOp_None)
|
if (unaryOp != BfUnaryOp_None)
|
||||||
|
|
|
@ -70,6 +70,7 @@ USING_NS_BF;
|
||||||
case BfTypeCode_Single: \
|
case BfTypeCode_Single: \
|
||||||
case BfTypeCode_Double: \
|
case BfTypeCode_Double: \
|
||||||
return CreateConst(constLHS->mTypeCode, OP(constLHS->mDouble, constRHS->mDouble)); break; \
|
return CreateConst(constLHS->mTypeCode, OP(constLHS->mDouble, constRHS->mDouble)); break; \
|
||||||
|
default: break; \
|
||||||
} \
|
} \
|
||||||
return CreateConst(constLHS->mTypeCode, val);
|
return CreateConst(constLHS->mTypeCode, val);
|
||||||
|
|
||||||
|
@ -94,6 +95,7 @@ USING_NS_BF;
|
||||||
case BfTypeCode_Char32: val = OP(constLHS->mUInt32, constRHS->mUInt32); break; \
|
case BfTypeCode_Char32: val = OP(constLHS->mUInt32, constRHS->mUInt32); break; \
|
||||||
case BfTypeCode_Int64: val = OP(constLHS->mInt64, constRHS->mInt64); break; \
|
case BfTypeCode_Int64: val = OP(constLHS->mInt64, constRHS->mInt64); break; \
|
||||||
case BfTypeCode_UInt64: val = OP(constLHS->mUInt64, constRHS->mUInt64); break; \
|
case BfTypeCode_UInt64: val = OP(constLHS->mUInt64, constRHS->mUInt64); break; \
|
||||||
|
default: break; \
|
||||||
} \
|
} \
|
||||||
return CreateConst(constLHS->mTypeCode, val);
|
return CreateConst(constLHS->mTypeCode, val);
|
||||||
|
|
||||||
|
@ -122,6 +124,7 @@ USING_NS_BF;
|
||||||
case BfTypeCode_Single: \
|
case BfTypeCode_Single: \
|
||||||
case BfTypeCode_Double: \
|
case BfTypeCode_Double: \
|
||||||
return CreateConst(constLHS->mTypeCode, constLHS->mDouble OP constRHS->mDouble); break; \
|
return CreateConst(constLHS->mTypeCode, constLHS->mDouble OP constRHS->mDouble); break; \
|
||||||
|
default: break; \
|
||||||
} \
|
} \
|
||||||
return CreateConst(constLHS->mTypeCode, val);
|
return CreateConst(constLHS->mTypeCode, val);
|
||||||
|
|
||||||
|
@ -143,6 +146,7 @@ USING_NS_BF;
|
||||||
case BfTypeCode_Char32: val = constLHS->mUInt32 OP constRHS->mUInt32; break; \
|
case BfTypeCode_Char32: val = constLHS->mUInt32 OP constRHS->mUInt32; break; \
|
||||||
case BfTypeCode_Int64: val = constLHS->mInt64 OP constRHS->mInt64; break; \
|
case BfTypeCode_Int64: val = constLHS->mInt64 OP constRHS->mInt64; break; \
|
||||||
case BfTypeCode_UInt64: val = constLHS->mUInt64 OP constRHS->mUInt64; break; \
|
case BfTypeCode_UInt64: val = constLHS->mUInt64 OP constRHS->mUInt64; break; \
|
||||||
|
default: break; \
|
||||||
} \
|
} \
|
||||||
return CreateConst(constLHS->mTypeCode, val);
|
return CreateConst(constLHS->mTypeCode, val);
|
||||||
|
|
||||||
|
@ -166,6 +170,7 @@ USING_NS_BF;
|
||||||
case BfTypeCode_Single: \
|
case BfTypeCode_Single: \
|
||||||
case BfTypeCode_Double: \
|
case BfTypeCode_Double: \
|
||||||
return CreateConst(constVal->mTypeCode, OP constVal->mDouble); break; \
|
return CreateConst(constVal->mTypeCode, OP constVal->mDouble); break; \
|
||||||
|
default: break; \
|
||||||
} \
|
} \
|
||||||
return CreateConst(constVal->mTypeCode, val);
|
return CreateConst(constVal->mTypeCode, val);
|
||||||
|
|
||||||
|
@ -195,6 +200,7 @@ USING_NS_BF;
|
||||||
case BfTypeCode_UInt64: val = constLHS->mUInt64 OP constRHS->mUInt64; break; \
|
case BfTypeCode_UInt64: val = constLHS->mUInt64 OP constRHS->mUInt64; break; \
|
||||||
case BfTypeCode_Single: val = constLHS->mDouble OP constRHS->mDouble; break; \
|
case BfTypeCode_Single: val = constLHS->mDouble OP constRHS->mDouble; break; \
|
||||||
case BfTypeCode_Double: val = constLHS->mDouble OP constRHS->mDouble; break; \
|
case BfTypeCode_Double: val = constLHS->mDouble OP constRHS->mDouble; break; \
|
||||||
|
default: break; \
|
||||||
} \
|
} \
|
||||||
return CreateConst(BfTypeCode_Boolean, val ? (uint64)1 : (uint64)0); \
|
return CreateConst(BfTypeCode_Boolean, val ? (uint64)1 : (uint64)0); \
|
||||||
}
|
}
|
||||||
|
@ -1481,54 +1487,54 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
|
||||||
mStream.Write(BfIRParamType_Const);
|
mStream.Write(BfIRParamType_Const);
|
||||||
mStream.Write((uint8)constant->mTypeCode);
|
mStream.Write((uint8)constant->mTypeCode);
|
||||||
|
|
||||||
switch (constant->mTypeCode)
|
switch ((int)constant->mTypeCode)
|
||||||
{
|
{
|
||||||
case BfTypeCode_Single:
|
case (int)BfTypeCode_Single:
|
||||||
{
|
{
|
||||||
float f = (float)constant->mDouble;
|
float f = (float)constant->mDouble;
|
||||||
mStream.Write(&f, sizeof(float));
|
mStream.Write(&f, sizeof(float));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Double:
|
case (int)BfTypeCode_Double:
|
||||||
{
|
{
|
||||||
mStream.Write(&constant->mDouble, sizeof(double));
|
mStream.Write(&constant->mDouble, sizeof(double));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Int8:
|
case (int)BfTypeCode_Int8:
|
||||||
case BfTypeCode_UInt8:
|
case (int)BfTypeCode_UInt8:
|
||||||
case BfTypeCode_Int16:
|
case (int)BfTypeCode_Int16:
|
||||||
case BfTypeCode_UInt16:
|
case (int)BfTypeCode_UInt16:
|
||||||
case BfTypeCode_Int32:
|
case (int)BfTypeCode_Int32:
|
||||||
case BfTypeCode_UInt32:
|
case (int)BfTypeCode_UInt32:
|
||||||
case BfTypeCode_Int64:
|
case (int)BfTypeCode_Int64:
|
||||||
case BfTypeCode_UInt64:
|
case (int)BfTypeCode_UInt64:
|
||||||
case BfTypeCode_IntPtr:
|
case (int)BfTypeCode_IntPtr:
|
||||||
case BfTypeCode_UIntPtr:
|
case (int)BfTypeCode_UIntPtr:
|
||||||
case BfTypeCode_IntUnknown:
|
case (int)BfTypeCode_IntUnknown:
|
||||||
case BfTypeCode_UIntUnknown:
|
case (int)BfTypeCode_UIntUnknown:
|
||||||
case BfTypeCode_Char8:
|
case (int)BfTypeCode_Char8:
|
||||||
case BfTypeCode_Char16:
|
case (int)BfTypeCode_Char16:
|
||||||
case BfTypeCode_Char32:
|
case (int)BfTypeCode_Char32:
|
||||||
{
|
{
|
||||||
WriteSLEB128(constant->mInt64);
|
WriteSLEB128(constant->mInt64);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Boolean:
|
case (int)BfTypeCode_Boolean:
|
||||||
{
|
{
|
||||||
Write(constant->mBool);
|
Write(constant->mBool);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_NullPtr:
|
case (int)BfTypeCode_NullPtr:
|
||||||
{
|
{
|
||||||
Write(constant->mIRType);
|
Write(constant->mIRType);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_None:
|
case (int)BfTypeCode_None:
|
||||||
{
|
{
|
||||||
// No param needed
|
// No param needed
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfConstType_GlobalVar:
|
case (int)BfConstType_GlobalVar:
|
||||||
{
|
{
|
||||||
auto gvConst = (BfGlobalVar*)constant;
|
auto gvConst = (BfGlobalVar*)constant;
|
||||||
WriteSLEB128(gvConst->mStreamId);
|
WriteSLEB128(gvConst->mStreamId);
|
||||||
|
@ -1546,8 +1552,8 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfConstType_BitCast:
|
case (int)BfConstType_BitCast:
|
||||||
case BfConstType_BitCastNull:
|
case (int)BfConstType_BitCastNull:
|
||||||
{
|
{
|
||||||
auto bitcast = (BfConstantBitCast*)constant;
|
auto bitcast = (BfConstantBitCast*)constant;
|
||||||
BfIRValue targetConst(BfIRValueFlags_Const, bitcast->mTarget);
|
BfIRValue targetConst(BfIRValueFlags_Const, bitcast->mTarget);
|
||||||
|
@ -1555,7 +1561,7 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
|
||||||
Write(bitcast->mToType);
|
Write(bitcast->mToType);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfConstType_GEP32_2:
|
case (int)BfConstType_GEP32_2:
|
||||||
{
|
{
|
||||||
auto gepConst = (BfConstantGEP32_2*)constant;
|
auto gepConst = (BfConstantGEP32_2*)constant;
|
||||||
BfIRValue targetConst(BfIRValueFlags_Const, gepConst->mTarget);
|
BfIRValue targetConst(BfIRValueFlags_Const, gepConst->mTarget);
|
||||||
|
@ -1564,7 +1570,7 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
|
||||||
Write(gepConst->mIdx1);
|
Write(gepConst->mIdx1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfConstType_PtrToInt:
|
case (int)BfConstType_PtrToInt:
|
||||||
{
|
{
|
||||||
auto ptrToIntConst = (BfConstantPtrToInt*)constant;
|
auto ptrToIntConst = (BfConstantPtrToInt*)constant;
|
||||||
BfIRValue targetConst(BfIRValueFlags_Const, ptrToIntConst->mTarget);
|
BfIRValue targetConst(BfIRValueFlags_Const, ptrToIntConst->mTarget);
|
||||||
|
@ -1572,12 +1578,12 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
|
||||||
Write(ptrToIntConst->mToTypeCode);
|
Write(ptrToIntConst->mToTypeCode);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfConstType_AggZero:
|
case (int)BfConstType_AggZero:
|
||||||
{
|
{
|
||||||
Write(constant->mIRType);
|
Write(constant->mIRType);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfConstType_Array:
|
case (int)BfConstType_Array:
|
||||||
{
|
{
|
||||||
auto arrayConst = (BfConstantArray*)constant;
|
auto arrayConst = (BfConstantArray*)constant;
|
||||||
Write(arrayConst->mType);
|
Write(arrayConst->mType);
|
||||||
|
@ -3230,6 +3236,7 @@ BfIRValue BfIRBuilder::CreateNumericCast(BfIRValue val, bool valIsSigned, BfType
|
||||||
case BfTypeCode_UInt32: val = (uint32)constVal->mInt64; break;
|
case BfTypeCode_UInt32: val = (uint32)constVal->mInt64; break;
|
||||||
case BfTypeCode_Int64: val = (uint64)(int64)constVal->mInt64; break;
|
case BfTypeCode_Int64: val = (uint64)(int64)constVal->mInt64; break;
|
||||||
case BfTypeCode_UInt64: val = (uint64)constVal->mUInt64; break;
|
case BfTypeCode_UInt64: val = (uint64)constVal->mUInt64; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // Float -> Int
|
else // Float -> Int
|
||||||
|
@ -3247,6 +3254,7 @@ BfIRValue BfIRBuilder::CreateNumericCast(BfIRValue val, bool valIsSigned, BfType
|
||||||
case BfTypeCode_UInt32: val = (uint32)constVal->mDouble; break;
|
case BfTypeCode_UInt32: val = (uint32)constVal->mDouble; break;
|
||||||
case BfTypeCode_Int64: val = (uint64)(int64)constVal->mDouble; break;
|
case BfTypeCode_Int64: val = (uint64)(int64)constVal->mDouble; break;
|
||||||
case BfTypeCode_UInt64: val = (uint64)constVal->mDouble; break;
|
case BfTypeCode_UInt64: val = (uint64)constVal->mDouble; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,7 @@ static llvm::Attribute::AttrKind LLVMMapAttribute(BfIRAttribute attr)
|
||||||
case BFIRAttribute_NoUnwind: return llvm::Attribute::NoUnwind;
|
case BFIRAttribute_NoUnwind: return llvm::Attribute::NoUnwind;
|
||||||
case BFIRAttribute_UWTable: return llvm::Attribute::UWTable;
|
case BFIRAttribute_UWTable: return llvm::Attribute::UWTable;
|
||||||
case BFIRAttribute_AlwaysInline: return llvm::Attribute::AlwaysInline;
|
case BFIRAttribute_AlwaysInline: return llvm::Attribute::AlwaysInline;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return llvm::Attribute::None;
|
return llvm::Attribute::None;
|
||||||
}
|
}
|
||||||
|
@ -307,6 +308,7 @@ llvm::Type* BfIRCodeGen::GetLLVMType(BfTypeCode typeCode, bool& isSigned)
|
||||||
return llvm::Type::getFloatTy(*mLLVMContext);
|
return llvm::Type::getFloatTy(*mLLVMContext);
|
||||||
case BfTypeCode_Double:
|
case BfTypeCode_Double:
|
||||||
return llvm::Type::getDoubleTy(*mLLVMContext);
|
return llvm::Type::getDoubleTy(*mLLVMContext);
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -2236,6 +2238,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
case BfIRIntrinsic_AtomicXor:
|
case BfIRIntrinsic_AtomicXor:
|
||||||
op = llvm::AtomicRMWInst::BinOp::Xor;
|
op = llvm::AtomicRMWInst::BinOp::Xor;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto memoryKindConst = llvm::dyn_cast<llvm::ConstantInt>(args[2]);
|
auto memoryKindConst = llvm::dyn_cast<llvm::ConstantInt>(args[2]);
|
||||||
|
@ -2312,6 +2315,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
case BfIRIntrinsic_AtomicUMin:
|
case BfIRIntrinsic_AtomicUMin:
|
||||||
cmpVal = mIRBuilder->CreateICmpULE(atomicRMW, args[1]);
|
cmpVal = mIRBuilder->CreateICmpULE(atomicRMW, args[1]);
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
result = mIRBuilder->CreateSelect(cmpVal, atomicRMW, args[1]);
|
result = mIRBuilder->CreateSelect(cmpVal, atomicRMW, args[1]);
|
||||||
}
|
}
|
||||||
|
@ -2335,6 +2339,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
case BfIRIntrinsic_AtomicXChg:
|
case BfIRIntrinsic_AtomicXChg:
|
||||||
result = args[1];
|
result = args[1];
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetResult(curId, result);
|
SetResult(curId, result);
|
||||||
|
|
|
@ -489,6 +489,7 @@ void BfGNUMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType
|
||||||
name += "f"; return;
|
name += "f"; return;
|
||||||
case BfTypeCode_Double:
|
case BfTypeCode_Double:
|
||||||
name += "d"; return;
|
name += "d"; return;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
name += "?"; return;
|
name += "?"; return;
|
||||||
|
@ -761,6 +762,7 @@ String BfGNUMangler::Mangle(BfMethodInstance* methodInst)
|
||||||
case BfBinaryOp_As:
|
case BfBinaryOp_As:
|
||||||
methodName = "2as";
|
methodName = "2as";
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (operatorDef->mOperatorDeclaration->mUnaryOp)
|
switch (operatorDef->mOperatorDeclaration->mUnaryOp)
|
||||||
|
@ -804,6 +806,7 @@ String BfGNUMangler::Mangle(BfMethodInstance* methodInst)
|
||||||
case BfUnaryOp_Out:
|
case BfUnaryOp_Out:
|
||||||
methodName = "3out";
|
methodName = "3out";
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1520,6 +1523,7 @@ void BfMSMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType*
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Char32:
|
case BfTypeCode_Char32:
|
||||||
name += "_U"; break;
|
name += "_U"; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (type->IsTypeInstance())
|
else if (type->IsTypeInstance())
|
||||||
|
@ -1825,6 +1829,7 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho
|
||||||
case BfBinaryOp_As:
|
case BfBinaryOp_As:
|
||||||
methodName = "__as__";
|
methodName = "__as__";
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (operatorDef->mOperatorDeclaration->mUnaryOp)
|
switch (operatorDef->mOperatorDeclaration->mUnaryOp)
|
||||||
|
@ -1865,6 +1870,7 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho
|
||||||
case BfUnaryOp_Out:
|
case BfUnaryOp_Out:
|
||||||
methodName = "__out__";
|
methodName = "__out__";
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (operatorDef->mOperatorDeclaration->mAssignOp)
|
switch (operatorDef->mOperatorDeclaration->mAssignOp)
|
||||||
|
@ -1902,6 +1908,7 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho
|
||||||
case BfAssignmentOp_ExclusiveOr:
|
case BfAssignmentOp_ExclusiveOr:
|
||||||
methodName += "__a_xor__";
|
methodName += "__a_xor__";
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -408,7 +408,7 @@ public:
|
||||||
mModule->EmitAppendAlign(align, sizeMultiple);
|
mModule->EmitAppendAlign(align, sizeMultiple);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Visit(BfAstNode* astNode)
|
void Visit(BfAstNode* astNode) override
|
||||||
{
|
{
|
||||||
mModule->VisitChild(astNode);
|
mModule->VisitChild(astNode);
|
||||||
}
|
}
|
||||||
|
@ -6181,6 +6181,7 @@ BfIRFunction BfModule::GetBuiltInFunc(BfBuiltInFuncType funcTypeId)
|
||||||
funcType = mBfIRBuilder->CreateFunctionType(voidType, paramTypes);
|
funcType = mBfIRBuilder->CreateFunctionType(voidType, paramTypes);
|
||||||
func = mBfIRBuilder->CreateFunction(funcType, BfIRLinkageType_External, "BfLoadSharedLibraries");
|
func = mBfIRBuilder->CreateFunction(funcType, BfIRLinkageType_External, "BfLoadSharedLibraries");
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
mBuiltInFuncs[(int)funcTypeId] = func;
|
mBuiltInFuncs[(int)funcTypeId] = func;
|
||||||
|
@ -6264,6 +6265,7 @@ void BfModule::ResolveGenericParamConstraints(BfGenericParamInstance* genericPar
|
||||||
case BfTypeCode_Char32:
|
case BfTypeCode_Char32:
|
||||||
isValidTypeCode = true;
|
isValidTypeCode = true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isValidTypeCode)
|
if (isValidTypeCode)
|
||||||
|
@ -9134,6 +9136,7 @@ BfTypedValue BfModule::GetTypedValueFromConstant(BfConstant* constant, BfIRConst
|
||||||
return castedTypedValue;
|
return castedTypedValue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BfIRValue irValue = ConstantToCurrent(constant, constHolder, wantType);
|
BfIRValue irValue = ConstantToCurrent(constant, constHolder, wantType);
|
||||||
|
@ -15687,11 +15690,13 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup)
|
||||||
// This is 'inner' (probably a closure) - use binding from outer function
|
// This is 'inner' (probably a closure) - use binding from outer function
|
||||||
methodState.mGenericTypeBindings = prevMethodState.mPrevVal->mGenericTypeBindings;
|
methodState.mGenericTypeBindings = prevMethodState.mPrevVal->mGenericTypeBindings;
|
||||||
}
|
}
|
||||||
else if ((methodInstance->mIsUnspecialized) || (mCurTypeInstance->IsUnspecializedType()) && (!isGenericVariation))
|
else if ((methodInstance->mIsUnspecialized) ||
|
||||||
|
((mCurTypeInstance->IsUnspecializedType()) && (!isGenericVariation)))
|
||||||
{
|
{
|
||||||
methodState.mGenericTypeBindings = &methodInstance->GetMethodInfoEx()->mGenericTypeBindings;
|
methodState.mGenericTypeBindings = &methodInstance->GetMethodInfoEx()->mGenericTypeBindings;
|
||||||
}
|
}
|
||||||
else if ((((methodInstance->mMethodInfoEx != NULL) && ((int)methodInstance->mMethodInfoEx->mMethodGenericArguments.size() > dependentGenericStartIdx)) || ((mCurTypeInstance->IsGenericTypeInstance())) && (!isGenericVariation)))
|
else if ((((methodInstance->mMethodInfoEx != NULL) && ((int)methodInstance->mMethodInfoEx->mMethodGenericArguments.size() > dependentGenericStartIdx)) ||
|
||||||
|
((mCurTypeInstance->IsGenericTypeInstance()) && (!isGenericVariation))))
|
||||||
{
|
{
|
||||||
unspecializedMethodInstance = GetUnspecializedMethodInstance(methodInstance);
|
unspecializedMethodInstance = GetUnspecializedMethodInstance(methodInstance);
|
||||||
|
|
||||||
|
|
|
@ -1528,7 +1528,7 @@ public:
|
||||||
virtual void Visit(BfForEachStatement* forEachStmt) override;
|
virtual void Visit(BfForEachStatement* forEachStmt) override;
|
||||||
virtual void Visit(BfDeferStatement* deferStmt) override;
|
virtual void Visit(BfDeferStatement* deferStmt) override;
|
||||||
virtual void Visit(BfBlock* block) override;
|
virtual void Visit(BfBlock* block) override;
|
||||||
virtual void Visit(BfLabeledBlock* labeledBlock);
|
virtual void Visit(BfLabeledBlock* labeledBlock) override;
|
||||||
virtual void Visit(BfRootNode* rootNode) override;
|
virtual void Visit(BfRootNode* rootNode) override;
|
||||||
virtual void Visit(BfInlineAsmStatement* asmStmt) override;
|
virtual void Visit(BfInlineAsmStatement* asmStmt) override;
|
||||||
|
|
||||||
|
|
|
@ -4407,6 +4407,7 @@ BfPrimitiveType* BfModule::GetPrimitiveType(BfTypeCode typeCode)
|
||||||
case BfTypeCode_UIntUnknown:
|
case BfTypeCode_UIntUnknown:
|
||||||
primType = (BfPrimitiveType*)ResolveTypeDef(mSystem->mTypeUIntUnknown);
|
primType = (BfPrimitiveType*)ResolveTypeDef(mSystem->mTypeUIntUnknown);
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
mContext->mPrimitiveTypes[typeCode] = primType;
|
mContext->mPrimitiveTypes[typeCode] = primType;
|
||||||
}
|
}
|
||||||
|
@ -4900,16 +4901,16 @@ BfType* BfModule::ResolveInnerType(BfType* outerType, BfTypeReference* typeRef,
|
||||||
BfNamedTypeReference* namedTypeRef = NULL;
|
BfNamedTypeReference* namedTypeRef = NULL;
|
||||||
BfGenericInstanceTypeRef* genericTypeRef = NULL;
|
BfGenericInstanceTypeRef* genericTypeRef = NULL;
|
||||||
BfDirectStrTypeReference* directStrTypeRef = NULL;
|
BfDirectStrTypeReference* directStrTypeRef = NULL;
|
||||||
if (namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(typeRef))
|
if ((namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(typeRef)))
|
||||||
{
|
{
|
||||||
//TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
|
//TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
|
||||||
}
|
}
|
||||||
else if (genericTypeRef = BfNodeDynCast<BfGenericInstanceTypeRef>(typeRef))
|
else if ((genericTypeRef = BfNodeDynCast<BfGenericInstanceTypeRef>(typeRef)))
|
||||||
{
|
{
|
||||||
namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(genericTypeRef->mElementType);
|
namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(genericTypeRef->mElementType);
|
||||||
//TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
|
//TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
|
||||||
}
|
}
|
||||||
else if (directStrTypeRef = BfNodeDynCast<BfDirectStrTypeReference>(typeRef))
|
else if ((directStrTypeRef = BfNodeDynCast<BfDirectStrTypeReference>(typeRef)))
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
@ -5545,10 +5546,7 @@ BfType* BfModule::ResolveTypeResult(BfTypeReference* typeRef, BfType* resolvedTy
|
||||||
//TODO: By only breaking out for "mIgnoreErrors", we classified elements (below) even when a resolvedTypeRef was not found!
|
//TODO: By only breaking out for "mIgnoreErrors", we classified elements (below) even when a resolvedTypeRef was not found!
|
||||||
//Why did we have this mIgnoreErrors check in there?
|
//Why did we have this mIgnoreErrors check in there?
|
||||||
// if ((resolvedTypeRef == NULL) && (mIgnoreErrors))
|
// if ((resolvedTypeRef == NULL) && (mIgnoreErrors))
|
||||||
// {
|
if (resolvedTypeRef == NULL)
|
||||||
// return NULL;
|
|
||||||
// }
|
|
||||||
if ((resolvedTypeRef == NULL) /*&& (mIgnoreErrors)*/)
|
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -6637,7 +6635,7 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
|
||||||
{
|
{
|
||||||
if (auto parentQualifiedTypeRef = BfNodeDynCast<BfQualifiedTypeReference>(mParentNodeEntry->mNode))
|
if (auto parentQualifiedTypeRef = BfNodeDynCast<BfQualifiedTypeReference>(mParentNodeEntry->mNode))
|
||||||
{
|
{
|
||||||
if (typeRef = parentQualifiedTypeRef->mLeft)
|
if (typeRef == parentQualifiedTypeRef->mLeft)
|
||||||
{
|
{
|
||||||
if ((resolveFlags & BfResolveTypeRefFlag_IgnoreLookupError) == 0)
|
if ((resolveFlags & BfResolveTypeRefFlag_IgnoreLookupError) == 0)
|
||||||
TypeRefNotFound(typeRef);
|
TypeRefNotFound(typeRef);
|
||||||
|
@ -6926,7 +6924,7 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
|
||||||
BfPrimitiveType* primType = new BfPrimitiveType();
|
BfPrimitiveType* primType = new BfPrimitiveType();
|
||||||
primType->mTypeDef = typeDef;
|
primType->mTypeDef = typeDef;
|
||||||
resolvedEntry->mValue = primType;
|
resolvedEntry->mValue = primType;
|
||||||
BF_ASSERT(BfResolvedTypeSet::Hash(primType, &lookupCtx, NULL) == resolvedEntry->mHash);
|
BF_ASSERT(BfResolvedTypeSet::Hash(primType, &lookupCtx, false) == resolvedEntry->mHash);
|
||||||
InitType(primType, populateType);
|
InitType(primType, populateType);
|
||||||
return ResolveTypeResult(typeRef, primType, populateType, resolveFlags);
|
return ResolveTypeResult(typeRef, primType, populateType, resolveFlags);
|
||||||
}
|
}
|
||||||
|
@ -7688,7 +7686,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
{
|
{
|
||||||
auto fromRefType = (BfRefType*)typedVal.mType;
|
auto fromRefType = (BfRefType*)typedVal.mType;
|
||||||
auto toRefType = (BfRefType*)toType;
|
auto toRefType = (BfRefType*)toType;
|
||||||
if ((fromRefType->mRefKind == toRefType->mRefKind))
|
if (fromRefType->mRefKind == toRefType->mRefKind)
|
||||||
checkUnderlying = true;
|
checkUnderlying = true;
|
||||||
else if ((fromRefType->mRefKind == BfRefType::RefKind_Ref) && (toRefType->mRefKind == BfRefType::RefKind_Mut))
|
else if ((fromRefType->mRefKind == BfRefType::RefKind_Ref) && (toRefType->mRefKind == BfRefType::RefKind_Mut))
|
||||||
checkUnderlying = true; // Allow a ref-to-mut implicit conversion
|
checkUnderlying = true; // Allow a ref-to-mut implicit conversion
|
||||||
|
@ -7757,8 +7755,8 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
if (toType->IsVoidPtr())
|
if (toType->IsVoidPtr())
|
||||||
{
|
{
|
||||||
if ((genericParamInst->mGenericParamFlags & (BfGenericParamFlag_Class | BfGenericParamFlag_StructPtr)) ||
|
if ((genericParamInst->mGenericParamFlags & (BfGenericParamFlag_Class | BfGenericParamFlag_StructPtr)) ||
|
||||||
(genericParamInst->mTypeConstraint != NULL) &&
|
((genericParamInst->mTypeConstraint != NULL) &&
|
||||||
((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface())))
|
((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface()))))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -8068,6 +8066,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
{
|
{
|
||||||
case BfTypeCode_UInt8:
|
case BfTypeCode_UInt8:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Char16:
|
case BfTypeCode_Char16:
|
||||||
|
@ -8075,6 +8074,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
{
|
{
|
||||||
case BfTypeCode_Char8:
|
case BfTypeCode_Char8:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Int16:
|
case BfTypeCode_Int16:
|
||||||
|
@ -8084,6 +8084,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
return true;
|
return true;
|
||||||
case BfTypeCode_UInt8:
|
case BfTypeCode_UInt8:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UInt16:
|
case BfTypeCode_UInt16:
|
||||||
|
@ -8091,6 +8092,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
{
|
{
|
||||||
case BfTypeCode_UInt8:
|
case BfTypeCode_UInt8:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Int32:
|
case BfTypeCode_Int32:
|
||||||
|
@ -8106,6 +8108,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
case BfTypeCode_UInt8:
|
case BfTypeCode_UInt8:
|
||||||
case BfTypeCode_UInt16:
|
case BfTypeCode_UInt16:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Char32:
|
case BfTypeCode_Char32:
|
||||||
|
@ -8114,6 +8117,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
case BfTypeCode_Char8:
|
case BfTypeCode_Char8:
|
||||||
case BfTypeCode_Char16:
|
case BfTypeCode_Char16:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UInt32:
|
case BfTypeCode_UInt32:
|
||||||
|
@ -8127,6 +8131,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
if (mCompiler->mSystem->mPtrSize == 4)
|
if (mCompiler->mSystem->mPtrSize == 4)
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Int64:
|
case BfTypeCode_Int64:
|
||||||
|
@ -8141,6 +8146,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
case BfTypeCode_UInt16:
|
case BfTypeCode_UInt16:
|
||||||
case BfTypeCode_UInt32:
|
case BfTypeCode_UInt32:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UInt64:
|
case BfTypeCode_UInt64:
|
||||||
|
@ -8151,6 +8157,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
case BfTypeCode_UInt32:
|
case BfTypeCode_UInt32:
|
||||||
case BfTypeCode_UIntPtr:
|
case BfTypeCode_UIntPtr:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_IntPtr:
|
case BfTypeCode_IntPtr:
|
||||||
|
@ -8168,6 +8175,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
if (mCompiler->mSystem->mPtrSize == 8)
|
if (mCompiler->mSystem->mPtrSize == 8)
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UIntPtr:
|
case BfTypeCode_UIntPtr:
|
||||||
|
@ -8181,6 +8189,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
if (mCompiler->mSystem->mPtrSize == 8)
|
if (mCompiler->mSystem->mPtrSize == 8)
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Single:
|
case BfTypeCode_Single:
|
||||||
|
@ -8200,6 +8209,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
case BfTypeCode_UIntPtr:
|
case BfTypeCode_UIntPtr:
|
||||||
case BfTypeCode_UIntUnknown:
|
case BfTypeCode_UIntUnknown:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Double:
|
case BfTypeCode_Double:
|
||||||
|
@ -8221,8 +8231,10 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
|
||||||
return true;
|
return true;
|
||||||
case BfTypeCode_Single:
|
case BfTypeCode_Single:
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8589,7 +8601,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
{
|
{
|
||||||
auto fromRefType = (BfRefType*)typedVal.mType;
|
auto fromRefType = (BfRefType*)typedVal.mType;
|
||||||
auto toRefType = (BfRefType*)toType;
|
auto toRefType = (BfRefType*)toType;
|
||||||
if ((fromRefType->mRefKind == toRefType->mRefKind))
|
if (fromRefType->mRefKind == toRefType->mRefKind)
|
||||||
checkUnderlying = true;
|
checkUnderlying = true;
|
||||||
else if ((fromRefType->mRefKind == BfRefType::RefKind_Ref) && (toRefType->mRefKind == BfRefType::RefKind_Mut))
|
else if ((fromRefType->mRefKind == BfRefType::RefKind_Ref) && (toRefType->mRefKind == BfRefType::RefKind_Mut))
|
||||||
checkUnderlying = true; // Allow a ref-to-mut implicit conversion
|
checkUnderlying = true; // Allow a ref-to-mut implicit conversion
|
||||||
|
@ -8738,8 +8750,8 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
if (toType->IsVoidPtr())
|
if (toType->IsVoidPtr())
|
||||||
{
|
{
|
||||||
if ((genericParamInst->mGenericParamFlags & (BfGenericParamFlag_Class | BfGenericParamFlag_StructPtr)) ||
|
if ((genericParamInst->mGenericParamFlags & (BfGenericParamFlag_Class | BfGenericParamFlag_StructPtr)) ||
|
||||||
(genericParamInst->mTypeConstraint != NULL) &&
|
((genericParamInst->mTypeConstraint != NULL) &&
|
||||||
((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface())))
|
((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface()))))
|
||||||
{
|
{
|
||||||
return GetDefaultValue(toType);
|
return GetDefaultValue(toType);
|
||||||
}
|
}
|
||||||
|
@ -9183,6 +9195,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
{
|
{
|
||||||
case BfTypeCode_Char8:
|
case BfTypeCode_Char8:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Int16:
|
case BfTypeCode_Int16:
|
||||||
|
@ -9192,6 +9205,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
case BfTypeCode_UInt8:
|
case BfTypeCode_UInt8:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UInt16:
|
case BfTypeCode_UInt16:
|
||||||
|
@ -9199,6 +9213,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
{
|
{
|
||||||
case BfTypeCode_UInt8:
|
case BfTypeCode_UInt8:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Int32:
|
case BfTypeCode_Int32:
|
||||||
|
@ -9214,6 +9229,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
case BfTypeCode_UInt8:
|
case BfTypeCode_UInt8:
|
||||||
case BfTypeCode_UInt16:
|
case BfTypeCode_UInt16:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Char32:
|
case BfTypeCode_Char32:
|
||||||
|
@ -9222,6 +9238,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
case BfTypeCode_Char8:
|
case BfTypeCode_Char8:
|
||||||
case BfTypeCode_Char16:
|
case BfTypeCode_Char16:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UInt32:
|
case BfTypeCode_UInt32:
|
||||||
|
@ -9235,6 +9252,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
if (mCompiler->mSystem->mPtrSize == 4)
|
if (mCompiler->mSystem->mPtrSize == 4)
|
||||||
allowCast = true;
|
allowCast = true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Int64:
|
case BfTypeCode_Int64:
|
||||||
|
@ -9249,6 +9267,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
case BfTypeCode_UInt16:
|
case BfTypeCode_UInt16:
|
||||||
case BfTypeCode_UInt32:
|
case BfTypeCode_UInt32:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UInt64:
|
case BfTypeCode_UInt64:
|
||||||
|
@ -9259,6 +9278,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
case BfTypeCode_UInt32:
|
case BfTypeCode_UInt32:
|
||||||
case BfTypeCode_UIntPtr:
|
case BfTypeCode_UIntPtr:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_IntPtr:
|
case BfTypeCode_IntPtr:
|
||||||
|
@ -9281,6 +9301,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
if (mCompiler->mSystem->mPtrSize == 8)
|
if (mCompiler->mSystem->mPtrSize == 8)
|
||||||
allowCast = true;
|
allowCast = true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_UIntPtr:
|
case BfTypeCode_UIntPtr:
|
||||||
|
@ -9294,6 +9315,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
if (mCompiler->mSystem->mPtrSize == 8)
|
if (mCompiler->mSystem->mPtrSize == 8)
|
||||||
allowCast = true;
|
allowCast = true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Single:
|
case BfTypeCode_Single:
|
||||||
|
@ -9313,6 +9335,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
case BfTypeCode_UIntPtr:
|
case BfTypeCode_UIntPtr:
|
||||||
case BfTypeCode_UIntUnknown:
|
case BfTypeCode_UIntUnknown:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfTypeCode_Double:
|
case BfTypeCode_Double:
|
||||||
|
@ -9334,8 +9357,10 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
case BfTypeCode_Single:
|
case BfTypeCode_Single:
|
||||||
allowCast = true; break;
|
allowCast = true; break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (explicitCast)
|
if (explicitCast)
|
||||||
|
@ -10258,6 +10283,7 @@ void BfModule::VariantToString(StringImpl& str, const BfVariant& variant)
|
||||||
str += ".0";
|
str += ".0";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -653,6 +653,7 @@ bool BfParser::EvaluatePreprocessor(BfExpression* expr)
|
||||||
return EvaluatePreprocessor(binaryOp->mLeft) || EvaluatePreprocessor(binaryOp->mRight);
|
return EvaluatePreprocessor(binaryOp->mLeft) || EvaluatePreprocessor(binaryOp->mRight);
|
||||||
case BfBinaryOp_ConditionalAnd:
|
case BfBinaryOp_ConditionalAnd:
|
||||||
return EvaluatePreprocessor(binaryOp->mLeft) && EvaluatePreprocessor(binaryOp->mRight);
|
return EvaluatePreprocessor(binaryOp->mLeft) && EvaluatePreprocessor(binaryOp->mRight);
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -662,6 +663,7 @@ bool BfParser::EvaluatePreprocessor(BfExpression* expr)
|
||||||
{
|
{
|
||||||
case BfUnaryOp_Not:
|
case BfUnaryOp_Not:
|
||||||
return !EvaluatePreprocessor(unaryOp->mExpression);
|
return !EvaluatePreprocessor(unaryOp->mExpression);
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2154,7 +2156,7 @@ void BfParser::NextToken(int endIdx)
|
||||||
{
|
{
|
||||||
bool prevIsDot = (mSrcIdx > 1) && (mSrc[mSrcIdx - 2] == '.');
|
bool prevIsDot = (mSrcIdx > 1) && (mSrc[mSrcIdx - 2] == '.');
|
||||||
|
|
||||||
if ((c == '-') /*&& ((mSrc[mSrcIdx] < '0') || mSrc[mSrcIdx] > '9')*/)
|
if (c == '-')
|
||||||
{
|
{
|
||||||
// Not a number!
|
// Not a number!
|
||||||
if (mSrc[mSrcIdx] == '-')
|
if (mSrc[mSrcIdx] == '-')
|
||||||
|
@ -2258,7 +2260,7 @@ void BfParser::NextToken(int endIdx)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (expSign = -1)
|
if (expSign == -1)
|
||||||
expVal = -expVal;
|
expVal = -expVal;
|
||||||
mSrcIdx--;
|
mSrcIdx--;
|
||||||
break;
|
break;
|
||||||
|
@ -2938,6 +2940,7 @@ void BfParser::NextToken(int endIdx)
|
||||||
case UTF8PROC_CATEGORY_LO:
|
case UTF8PROC_CATEGORY_LO:
|
||||||
case UTF8PROC_CATEGORY_NL:
|
case UTF8PROC_CATEGORY_NL:
|
||||||
allowChar = true;
|
allowChar = true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2981,6 +2984,7 @@ void BfParser::NextToken(int endIdx)
|
||||||
case UTF8PROC_CATEGORY_PC:
|
case UTF8PROC_CATEGORY_PC:
|
||||||
case UTF8PROC_CATEGORY_CF:
|
case UTF8PROC_CATEGORY_CF:
|
||||||
isValidChar = true;
|
isValidChar = true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3157,6 +3161,7 @@ BfAstNode* BfParser::CreateNode()
|
||||||
mLiteral.mWarnType = 0;
|
mLiteral.mWarnType = 0;
|
||||||
return bfLiteralExpression;
|
return bfLiteralExpression;
|
||||||
}
|
}
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -150,7 +150,7 @@ public:
|
||||||
virtual void Visit(BfDynamicCastExpression* dynCastExpr) override;
|
virtual void Visit(BfDynamicCastExpression* dynCastExpr) override;
|
||||||
virtual void Visit(BfCastExpression* castExpr) override;
|
virtual void Visit(BfCastExpression* castExpr) override;
|
||||||
virtual void Visit(BfDelegateBindExpression* invocationExpr) override;
|
virtual void Visit(BfDelegateBindExpression* invocationExpr) override;
|
||||||
virtual void Visit(BfLambdaBindExpression* lambdaBindExpr);
|
virtual void Visit(BfLambdaBindExpression* lambdaBindExpr) override;
|
||||||
virtual void Visit(BfObjectCreateExpression* invocationExpr) override;
|
virtual void Visit(BfObjectCreateExpression* invocationExpr) override;
|
||||||
virtual void Visit(BfBoxExpression* boxExpr) override;
|
virtual void Visit(BfBoxExpression* boxExpr) override;
|
||||||
virtual void Visit(BfInvocationExpression* invocationExpr) override;
|
virtual void Visit(BfInvocationExpression* invocationExpr) override;
|
||||||
|
|
|
@ -439,6 +439,7 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
|
||||||
// Failed
|
// Failed
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (done)
|
if (done)
|
||||||
|
@ -1001,6 +1002,7 @@ bool BfReducer::IsLocalMethod(BfAstNode* nameNode)
|
||||||
return false;
|
return false;
|
||||||
case BfToken_Where: // Always denotes a local method
|
case BfToken_Where: // Always denotes a local method
|
||||||
return true;
|
return true;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1889,6 +1891,7 @@ BfExpression* BfReducer::CreateExpression(BfAstNode* node, CreateExprFlags creat
|
||||||
case BfToken_StrideOf:
|
case BfToken_StrideOf:
|
||||||
typeAttrExpr = mAlloc->Alloc<BfStrideOfExpression>();
|
typeAttrExpr = mAlloc->Alloc<BfStrideOfExpression>();
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReplaceNode(tokenNode, typeAttrExpr);
|
ReplaceNode(tokenNode, typeAttrExpr);
|
||||||
|
@ -2013,7 +2016,7 @@ BfExpression* BfReducer::CreateExpression(BfAstNode* node, CreateExprFlags creat
|
||||||
MEMBER_SET_CHECKED(delegateBindExpr, mTarget, expr);
|
MEMBER_SET_CHECKED(delegateBindExpr, mTarget, expr);
|
||||||
|
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_LChevron)
|
if (tokenNode->GetToken() == BfToken_LChevron)
|
||||||
{
|
{
|
||||||
|
@ -3313,7 +3316,8 @@ BfSwitchStatement* BfReducer::CreateSwitchStatement(BfTokenNode* tokenNode)
|
||||||
BfToken token = BfToken_None;
|
BfToken token = BfToken_None;
|
||||||
if (tokenNode != NULL)
|
if (tokenNode != NULL)
|
||||||
token = tokenNode->GetToken();
|
token = tokenNode->GetToken();
|
||||||
if ((tokenNode == NULL) || (token != BfToken_Case) && (token != BfToken_When) && (token != BfToken_Default))
|
if ((tokenNode == NULL) ||
|
||||||
|
((token != BfToken_Case) && (token != BfToken_When) && (token != BfToken_Default)))
|
||||||
{
|
{
|
||||||
Fail("Expected 'case'", child);
|
Fail("Expected 'case'", child);
|
||||||
return switchStatement;
|
return switchStatement;
|
||||||
|
@ -3618,7 +3622,7 @@ BfAstNode* BfReducer::DoCreateStatement(BfAstNode* node, CreateStmtFlags createS
|
||||||
MEMBER_SET(deleteStmt, mDeleteToken, tokenNode);
|
MEMBER_SET(deleteStmt, mDeleteToken, tokenNode);
|
||||||
|
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_Append)
|
if (tokenNode->GetToken() == BfToken_Append)
|
||||||
{
|
{
|
||||||
|
@ -3869,7 +3873,7 @@ BfAstNode* BfReducer::DoCreateStatement(BfAstNode* node, CreateStmtFlags createS
|
||||||
MEMBER_SET(methodDecl, mNameNode, nameNode);
|
MEMBER_SET(methodDecl, mNameNode, nameNode);
|
||||||
|
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_LChevron)
|
if (tokenNode->GetToken() == BfToken_LChevron)
|
||||||
{
|
{
|
||||||
|
@ -4087,7 +4091,7 @@ BfAstNode* BfReducer::DoCreateStatement(BfAstNode* node, CreateStmtFlags createS
|
||||||
bool isValidFinish = false;
|
bool isValidFinish = false;
|
||||||
|
|
||||||
BfTokenNode* tokenNode;
|
BfTokenNode* tokenNode;
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext()))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext())))
|
||||||
{
|
{
|
||||||
int token = tokenNode->GetToken();
|
int token = tokenNode->GetToken();
|
||||||
if ((token == BfToken_AssignEquals) || (token == BfToken_Semicolon) || (token == BfToken_Comma))
|
if ((token == BfToken_AssignEquals) || (token == BfToken_Semicolon) || (token == BfToken_Comma))
|
||||||
|
@ -4352,7 +4356,7 @@ BfAstNode* BfReducer::CreateStatement(BfAstNode* node, CreateStmtFlags createStm
|
||||||
mPrevStmtHadError = false;
|
mPrevStmtHadError = false;
|
||||||
|
|
||||||
// Must be an expression. Always set CreateExprFlags_NoCaseExpr, to keep ending statements in a switch case to look like case expressions
|
// Must be an expression. Always set CreateExprFlags_NoCaseExpr, to keep ending statements in a switch case to look like case expressions
|
||||||
auto expr = CreateExpression(node, (CreateExprFlags)(createStmtFlags & CreateStmtFlags_To_CreateExprFlags_Mask | CreateExprFlags_NoCaseExpr));
|
auto expr = CreateExpression(node, (CreateExprFlags)((createStmtFlags & CreateStmtFlags_To_CreateExprFlags_Mask) | CreateExprFlags_NoCaseExpr));
|
||||||
|
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (nextNode != NULL)
|
if (nextNode != NULL)
|
||||||
|
@ -4821,7 +4825,7 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, bool parseArra
|
||||||
MEMBER_SET(qualifiedTypeRef, mRight, typeRef);
|
MEMBER_SET(qualifiedTypeRef, mRight, typeRef);
|
||||||
|
|
||||||
nextNode = mVisitorPos.GetNext();
|
nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_Dot)
|
if (tokenNode->GetToken() == BfToken_Dot)
|
||||||
{
|
{
|
||||||
|
@ -5727,7 +5731,7 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth)
|
||||||
MEMBER_SET(methodDecl, mNameNode, nameNode);
|
MEMBER_SET(methodDecl, mNameNode, nameNode);
|
||||||
|
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_LChevron)
|
if (tokenNode->GetToken() == BfToken_LChevron)
|
||||||
{
|
{
|
||||||
|
@ -6903,7 +6907,7 @@ BfDelegateBindExpression* BfReducer::CreateDelegateBindExpression(BfAstNode* all
|
||||||
MEMBER_SET_CHECKED(delegateBindExpr, mTarget, expr);
|
MEMBER_SET_CHECKED(delegateBindExpr, mTarget, expr);
|
||||||
|
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_LChevron)
|
if (tokenNode->GetToken() == BfToken_LChevron)
|
||||||
{
|
{
|
||||||
|
@ -7446,7 +7450,7 @@ BfMemberReferenceExpression* BfReducer::CreateMemberReferenceExpression(BfAstNod
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext()))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext())))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_LBracket)
|
if (tokenNode->GetToken() == BfToken_LBracket)
|
||||||
{
|
{
|
||||||
|
@ -7507,7 +7511,7 @@ BfTupleExpression* BfReducer::CreateTupleExpression(BfTokenNode* node, BfExpress
|
||||||
{
|
{
|
||||||
// Failed, but can we pull in the closing rparen?
|
// Failed, but can we pull in the closing rparen?
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (closeParenToken = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((closeParenToken = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (closeParenToken->GetToken() == BfToken_RParen)
|
if (closeParenToken->GetToken() == BfToken_RParen)
|
||||||
{
|
{
|
||||||
|
@ -7691,7 +7695,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
|
||||||
{
|
{
|
||||||
// Failure, but eat any following dot for autocompletion purposes
|
// Failure, but eat any following dot for autocompletion purposes
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_Dot)
|
if (tokenNode->GetToken() == BfToken_Dot)
|
||||||
{
|
{
|
||||||
|
@ -7916,7 +7920,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
|
||||||
MEMBER_SET_CHECKED(typeDeclaration, mNameNode, name);
|
MEMBER_SET_CHECKED(typeDeclaration, mNameNode, name);
|
||||||
|
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_LChevron)
|
if (tokenNode->GetToken() == BfToken_LChevron)
|
||||||
{
|
{
|
||||||
|
@ -8103,6 +8107,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
|
||||||
return typeDeclaration;
|
return typeDeclaration;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSimpleEnum)
|
if (isSimpleEnum)
|
||||||
|
@ -8807,7 +8812,7 @@ bool BfReducer::ParseMethod(BfMethodDeclaration* methodDeclaration, SizedArrayIm
|
||||||
|
|
||||||
auto typeDecl = mCurTypeDecl;
|
auto typeDecl = mCurTypeDecl;
|
||||||
auto nextNode = mVisitorPos.GetNext();
|
auto nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_Mut)
|
if (tokenNode->GetToken() == BfToken_Mut)
|
||||||
{
|
{
|
||||||
|
@ -8822,7 +8827,7 @@ bool BfReducer::ParseMethod(BfMethodDeclaration* methodDeclaration, SizedArrayIm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_Where)
|
if (tokenNode->GetToken() == BfToken_Where)
|
||||||
{
|
{
|
||||||
|
@ -9102,6 +9107,7 @@ BfGenericConstraintsDeclaration* BfReducer::CreateGenericConstraintsDeclaration(
|
||||||
case BfToken_Var:
|
case BfToken_Var:
|
||||||
addToConstraint = true;
|
addToConstraint = true;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (addToConstraint)
|
if (addToConstraint)
|
||||||
|
@ -9115,7 +9121,7 @@ BfGenericConstraintsDeclaration* BfReducer::CreateGenericConstraintsDeclaration(
|
||||||
{
|
{
|
||||||
addToConstraint = true;
|
addToConstraint = true;
|
||||||
nextNode = mVisitorPos.GetNext();
|
nextNode = mVisitorPos.GetNext();
|
||||||
if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
|
if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
|
||||||
{
|
{
|
||||||
if (tokenNode->GetToken() == BfToken_Star)
|
if (tokenNode->GetToken() == BfToken_Star)
|
||||||
{
|
{
|
||||||
|
|
|
@ -538,11 +538,11 @@ public:
|
||||||
(mTypeDef->mTypeCode == BfTypeCode_Int32) || (mTypeDef->mTypeCode == BfTypeCode_Int64) || (mTypeDef->mTypeCode == BfTypeCode_IntPtr) ||
|
(mTypeDef->mTypeCode == BfTypeCode_Int32) || (mTypeDef->mTypeCode == BfTypeCode_Int64) || (mTypeDef->mTypeCode == BfTypeCode_IntPtr) ||
|
||||||
(mTypeDef->mTypeCode == BfTypeCode_IntUnknown); }
|
(mTypeDef->mTypeCode == BfTypeCode_IntUnknown); }
|
||||||
virtual bool IsIntUnknown() override { return (mTypeDef->mTypeCode == BfTypeCode_IntUnknown) || (mTypeDef->mTypeCode == BfTypeCode_UIntUnknown); }
|
virtual bool IsIntUnknown() override { return (mTypeDef->mTypeCode == BfTypeCode_IntUnknown) || (mTypeDef->mTypeCode == BfTypeCode_UIntUnknown); }
|
||||||
virtual bool IsChar() { return (mTypeDef->mTypeCode == BfTypeCode_Char8) || (mTypeDef->mTypeCode == BfTypeCode_Char16) || (mTypeDef->mTypeCode == BfTypeCode_Char32); }
|
virtual bool IsChar() override { return (mTypeDef->mTypeCode == BfTypeCode_Char8) || (mTypeDef->mTypeCode == BfTypeCode_Char16) || (mTypeDef->mTypeCode == BfTypeCode_Char32); }
|
||||||
virtual bool IsFloat() override { return (mTypeDef->mTypeCode == BfTypeCode_Single) || (mTypeDef->mTypeCode == BfTypeCode_Double); }
|
virtual bool IsFloat() override { return (mTypeDef->mTypeCode == BfTypeCode_Single) || (mTypeDef->mTypeCode == BfTypeCode_Double); }
|
||||||
virtual bool IsNull() override { return mTypeDef->mTypeCode == BfTypeCode_NullPtr; }
|
virtual bool IsNull() override { return mTypeDef->mTypeCode == BfTypeCode_NullPtr; }
|
||||||
virtual bool IsVoid() override { return mTypeDef->mTypeCode == BfTypeCode_None; }
|
virtual bool IsVoid() override { return mTypeDef->mTypeCode == BfTypeCode_None; }
|
||||||
virtual bool CanBeValuelessType() { return mTypeDef->mTypeCode == BfTypeCode_None; }
|
virtual bool CanBeValuelessType() override { return mTypeDef->mTypeCode == BfTypeCode_None; }
|
||||||
virtual bool IsValuelessType() override { return mTypeDef->mTypeCode == BfTypeCode_None; }
|
virtual bool IsValuelessType() override { return mTypeDef->mTypeCode == BfTypeCode_None; }
|
||||||
virtual bool IsSelf() override { return mTypeDef->mTypeCode == BfTypeCode_Self; }
|
virtual bool IsSelf() override { return mTypeDef->mTypeCode == BfTypeCode_Self; }
|
||||||
virtual bool IsDot() override { return mTypeDef->mTypeCode == BfTypeCode_Dot; }
|
virtual bool IsDot() override { return mTypeDef->mTypeCode == BfTypeCode_Dot; }
|
||||||
|
@ -921,7 +921,7 @@ public:
|
||||||
BfType* mElementType;
|
BfType* mElementType;
|
||||||
|
|
||||||
virtual bool IsRetTypeType() override { return true; }
|
virtual bool IsRetTypeType() override { return true; }
|
||||||
virtual bool CanBeValuelessType() { return true; }
|
virtual bool CanBeValuelessType() override { return true; }
|
||||||
virtual bool IsValuelessType() override { return true; }
|
virtual bool IsValuelessType() override { return true; }
|
||||||
|
|
||||||
virtual bool IsUnspecializedType() override { return mElementType->IsUnspecializedType(); }
|
virtual bool IsUnspecializedType() override { return mElementType->IsUnspecializedType(); }
|
||||||
|
@ -1581,16 +1581,16 @@ public:
|
||||||
|
|
||||||
~BfTypeInstance();
|
~BfTypeInstance();
|
||||||
|
|
||||||
virtual BfModule* GetModule() { return mModule; }
|
virtual BfModule* GetModule() override { return mModule; }
|
||||||
virtual BfTypeInstance* ToTypeInstance() override { return this; }
|
virtual BfTypeInstance* ToTypeInstance() override { return this; }
|
||||||
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
||||||
virtual BfPrimitiveType* ToPrimitiveType() override { return GetUnderlyingType()->ToPrimitiveType(); }
|
virtual BfPrimitiveType* ToPrimitiveType() override { return GetUnderlyingType()->ToPrimitiveType(); }
|
||||||
virtual bool HasWrappedRepresentation() { return IsTypedPrimitive(); }
|
virtual bool HasWrappedRepresentation() override { return IsTypedPrimitive(); }
|
||||||
|
|
||||||
int GetEndingInstanceAlignment() { if (mInstSize % mInstAlign == 0) return mInstAlign; return mInstSize % mInstAlign; }
|
int GetEndingInstanceAlignment() { if (mInstSize % mInstAlign == 0) return mInstAlign; return mInstSize % mInstAlign; }
|
||||||
virtual bool HasTypeFailed() override { return mTypeFailed; }
|
virtual bool HasTypeFailed() override { return mTypeFailed; }
|
||||||
virtual bool IsReified() override { return mIsReified; }
|
virtual bool IsReified() override { return mIsReified; }
|
||||||
virtual bool NeedsExplicitAlignment() { return !IsSizeAligned() || mIsPacked; }
|
virtual bool NeedsExplicitAlignment() override { return !IsSizeAligned() || mIsPacked; }
|
||||||
virtual bool IsDataIncomplete() override { return ((mTypeIncomplete) || (mBaseTypeMayBeIncomplete)) && (!mNeedsMethodProcessing); }
|
virtual bool IsDataIncomplete() override { return ((mTypeIncomplete) || (mBaseTypeMayBeIncomplete)) && (!mNeedsMethodProcessing); }
|
||||||
virtual bool IsIncomplete() override { return (mTypeIncomplete) || (mBaseTypeMayBeIncomplete); }
|
virtual bool IsIncomplete() override { return (mTypeIncomplete) || (mBaseTypeMayBeIncomplete); }
|
||||||
virtual bool IsSplattable() override { BF_ASSERT((mInstSize >= 0) || (!IsComposite())); return mIsSplattable; }
|
virtual bool IsSplattable() override { BF_ASSERT((mInstSize >= 0) || (!IsComposite())); return mIsSplattable; }
|
||||||
|
@ -1616,7 +1616,7 @@ public:
|
||||||
//virtual bool IsValuelessType() override { return (mIsTypedPrimitive) && (mInstSize == 0); }
|
//virtual bool IsValuelessType() override { return (mIsTypedPrimitive) && (mInstSize == 0); }
|
||||||
virtual bool CanBeValuelessType() override { return (mTypeDef->mTypeCode == BfTypeCode_Struct) || (mTypeDef->mTypeCode == BfTypeCode_Enum); }
|
virtual bool CanBeValuelessType() override { return (mTypeDef->mTypeCode == BfTypeCode_Struct) || (mTypeDef->mTypeCode == BfTypeCode_Enum); }
|
||||||
virtual bool IsValuelessType() override;
|
virtual bool IsValuelessType() override;
|
||||||
virtual bool HasPackingHoles() { return mHasPackingHoles; }
|
virtual bool HasPackingHoles() override { return mHasPackingHoles; }
|
||||||
virtual bool IsTypeMemberAccessible(BfTypeDef* declaringTypeDef, BfTypeDef* activeTypeDef) override;
|
virtual bool IsTypeMemberAccessible(BfTypeDef* declaringTypeDef, BfTypeDef* activeTypeDef) override;
|
||||||
virtual bool IsTypeMemberAccessible(BfTypeDef* declaringTypeDef, BfProject* curProject) override;
|
virtual bool IsTypeMemberAccessible(BfTypeDef* declaringTypeDef, BfProject* curProject) override;
|
||||||
virtual bool WantsGCMarking() override;
|
virtual bool WantsGCMarking() override;
|
||||||
|
@ -1684,7 +1684,7 @@ public:
|
||||||
virtual bool IsUnspecializedType() override { return mElementType->IsUnspecializedType(); }
|
virtual bool IsUnspecializedType() override { return mElementType->IsUnspecializedType(); }
|
||||||
virtual bool IsUnspecializedTypeVariation() override { return mElementType->IsUnspecializedTypeVariation(); }
|
virtual bool IsUnspecializedTypeVariation() override { return mElementType->IsUnspecializedTypeVariation(); }
|
||||||
|
|
||||||
virtual BfTypeInstance* GetImplBaseType() { return (mBoxedBaseType != NULL) ? mBoxedBaseType : mBaseType; }
|
virtual BfTypeInstance* GetImplBaseType() override { return (mBoxedBaseType != NULL) ? mBoxedBaseType : mBaseType; }
|
||||||
|
|
||||||
bool IsBoxedStructPtr()
|
bool IsBoxedStructPtr()
|
||||||
{
|
{
|
||||||
|
@ -1906,7 +1906,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool IsWrappableType() override { return true; }
|
virtual bool IsWrappableType() override { return true; }
|
||||||
virtual bool IsReified() { return mElementType->IsReified(); }
|
virtual bool IsReified() override { return mElementType->IsReified(); }
|
||||||
virtual bool IsPointer() override { return true; }
|
virtual bool IsPointer() override { return true; }
|
||||||
virtual bool IsIntPtrable() override { return true; }
|
virtual bool IsIntPtrable() override { return true; }
|
||||||
virtual bool IsStructPtr() override { return mElementType->IsStruct(); }
|
virtual bool IsStructPtr() override { return mElementType->IsStruct(); }
|
||||||
|
@ -1951,7 +1951,7 @@ public:
|
||||||
virtual bool IsComposite() override { return true; }
|
virtual bool IsComposite() override { return true; }
|
||||||
virtual bool IsMethodRef() override { return true; }
|
virtual bool IsMethodRef() override { return true; }
|
||||||
virtual bool IsSplattable() override { return true; }
|
virtual bool IsSplattable() override { return true; }
|
||||||
virtual int GetSplatCount() { return (int)mDataToParamIdx.mSize; }
|
virtual int GetSplatCount() override { return (int)mDataToParamIdx.mSize; }
|
||||||
|
|
||||||
virtual bool IsOnDemand() override { return true; }
|
virtual bool IsOnDemand() override { return true; }
|
||||||
virtual bool IsTemporary() override { return true; }
|
virtual bool IsTemporary() override { return true; }
|
||||||
|
@ -1990,7 +1990,7 @@ public:
|
||||||
|
|
||||||
virtual bool IsDataIncomplete() override { CheckElement(); return mDefineState < BfTypeDefineState_Defined; }
|
virtual bool IsDataIncomplete() override { CheckElement(); return mDefineState < BfTypeDefineState_Defined; }
|
||||||
virtual bool IsIncomplete() override { CheckElement(); return mDefineState < BfTypeDefineState_Defined; }
|
virtual bool IsIncomplete() override { CheckElement(); return mDefineState < BfTypeDefineState_Defined; }
|
||||||
virtual bool IsReified() { return mElementType->IsReified(); }
|
virtual bool IsReified() override { return mElementType->IsReified(); }
|
||||||
|
|
||||||
virtual bool IsRef() override { return true; }
|
virtual bool IsRef() override { return true; }
|
||||||
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
||||||
|
@ -2027,17 +2027,17 @@ public:
|
||||||
bool mWantsGCMarking;
|
bool mWantsGCMarking;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool NeedsExplicitAlignment() { return mElementType->NeedsExplicitAlignment(); }
|
virtual bool NeedsExplicitAlignment() override { return mElementType->NeedsExplicitAlignment(); }
|
||||||
|
|
||||||
virtual bool IsSizedArray() override { return true; }
|
virtual bool IsSizedArray() override { return true; }
|
||||||
|
|
||||||
virtual bool IsWrappableType() override { return true; }
|
virtual bool IsWrappableType() override { return true; }
|
||||||
virtual bool IsValueType() override { return true; } // Is a type of struct
|
virtual bool IsValueType() override { return true; } // Is a type of struct
|
||||||
virtual bool IsValueTypeOrValueTypePtr() { return true; }
|
virtual bool IsValueTypeOrValueTypePtr() override { return true; }
|
||||||
virtual bool IsComposite() override { return true; }
|
virtual bool IsComposite() override { return true; }
|
||||||
virtual bool IsStruct() override { return false; } // But IsStruct infers a definition, which it does not have
|
virtual bool IsStruct() override { return false; } // But IsStruct infers a definition, which it does not have
|
||||||
virtual bool IsStructOrStructPtr() override { return false; }
|
virtual bool IsStructOrStructPtr() override { return false; }
|
||||||
virtual bool IsReified() { return mElementType->IsReified(); }
|
virtual bool IsReified() override { return mElementType->IsReified(); }
|
||||||
|
|
||||||
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
||||||
virtual BfType* GetUnderlyingType() override { return mElementType; }
|
virtual BfType* GetUnderlyingType() override { return mElementType; }
|
||||||
|
@ -2056,17 +2056,17 @@ public:
|
||||||
BfType* mElementCountSource;
|
BfType* mElementCountSource;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool NeedsExplicitAlignment() { return mElementType->NeedsExplicitAlignment(); }
|
virtual bool NeedsExplicitAlignment() override { return mElementType->NeedsExplicitAlignment(); }
|
||||||
|
|
||||||
virtual bool IsUnknownSizedArray() override { return true; }
|
virtual bool IsUnknownSizedArray() override { return true; }
|
||||||
|
|
||||||
virtual bool IsWrappableType() override { return true; }
|
virtual bool IsWrappableType() override { return true; }
|
||||||
virtual bool IsValueType() override { return true; } // Is a type of struct
|
virtual bool IsValueType() override { return true; } // Is a type of struct
|
||||||
virtual bool IsValueTypeOrValueTypePtr() { return true; }
|
virtual bool IsValueTypeOrValueTypePtr() override { return true; }
|
||||||
virtual bool IsComposite() override { return true; }
|
virtual bool IsComposite() override { return true; }
|
||||||
virtual bool IsStruct() override { return false; } // But IsStruct infers a definition, which it does not have
|
virtual bool IsStruct() override { return false; } // But IsStruct infers a definition, which it does not have
|
||||||
virtual bool IsStructOrStructPtr() override { return false; }
|
virtual bool IsStructOrStructPtr() override { return false; }
|
||||||
virtual bool IsReified() { return mElementType->IsReified(); }
|
virtual bool IsReified() override { return mElementType->IsReified(); }
|
||||||
|
|
||||||
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
virtual bool IsDependentOnUnderlyingType() override { return true; }
|
||||||
virtual BfType* GetUnderlyingType() override { return mElementType; }
|
virtual BfType* GetUnderlyingType() override { return mElementType; }
|
||||||
|
|
|
@ -382,7 +382,7 @@ void BfSourceClassifier::Visit(BfInvocationExpression* invocationExpr)
|
||||||
VisitChild(qualifiedName->mDot);
|
VisitChild(qualifiedName->mDot);
|
||||||
identifier = qualifiedName->mRight;
|
identifier = qualifiedName->mRight;
|
||||||
}
|
}
|
||||||
else if (identifier = BfNodeDynCast<BfIdentifierNode>(target))
|
else if ((identifier = BfNodeDynCast<BfIdentifierNode>(target)))
|
||||||
{
|
{
|
||||||
// Leave as BfAttributedIdentifierNode if that's the case
|
// Leave as BfAttributedIdentifierNode if that's the case
|
||||||
identifier = target;
|
identifier = target;
|
||||||
|
|
|
@ -2043,6 +2043,7 @@ bool BfSystem::DoesLiteralFit(BfTypeCode typeCode, int64 value)
|
||||||
return (value >= 0) && (value < 0x100000000LL);
|
return (value >= 0) && (value < 0x100000000LL);
|
||||||
case BfTypeCode_UInt64:
|
case BfTypeCode_UInt64:
|
||||||
return (value >= 0);
|
return (value >= 0);
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -10,8 +10,6 @@ namespace Beefy
|
||||||
|
|
||||||
USING_NS_BF_DBG;
|
USING_NS_BF_DBG;
|
||||||
USING_NS_BF;
|
USING_NS_BF;
|
||||||
|
|
||||||
|
|
||||||
NS_BF_BEGIN
|
NS_BF_BEGIN
|
||||||
|
|
||||||
Beefy::Debugger* CreateDebugger32(DebugManager* debugManager, DbgMiniDump* miniDump)
|
Beefy::Debugger* CreateDebugger32(DebugManager* debugManager, DbgMiniDump* miniDump)
|
||||||
|
|
27
bin/build.sh
27
bin/build.sh
|
@ -39,20 +39,29 @@ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ../
|
||||||
cmake --build .
|
cmake --build .
|
||||||
|
|
||||||
cd ../IDE/dist
|
cd ../IDE/dist
|
||||||
if [ ! -L libBeefRT_d.so ]; then
|
|
||||||
ln -s ../../jbuild_d/Debug/bin/libBeefRT_d.so libBeefRT_d.so
|
|
||||||
ln -s ../../jbuild_d/Debug/bin/libBeefySysLib_d.so libBeefySysLib_d.so
|
|
||||||
ln -s ../../jbuild_d/Debug/bin/libIDEHelper_d.so libIDEHelper_d.so
|
|
||||||
|
|
||||||
ln -s ../../jbuild/Release/bin/libBeefRT.so libBeefRT.so
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
ln -s ../../jbuild/Release/bin/libBeefySysLib.so libBeefySysLib.so
|
LIBEXT=dylib
|
||||||
ln -s ../../jbuild/Release/bin/libIDEHelper.so libIDEHelper.so
|
LINKOPTS=
|
||||||
|
else
|
||||||
|
LIBEXT=so
|
||||||
|
LINKOPTS=-ltinfo
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -L libBeefRT_d.$LIBEXT ]; then
|
||||||
|
ln -s ../../jbuild_d/Debug/bin/libBeefRT_d.$LIBEXT libBeefRT_d.$LIBEXT
|
||||||
|
ln -s ../../jbuild_d/Debug/bin/libBeefySysLib_d.$LIBEXT libBeefySysLib_d.$LIBEXT
|
||||||
|
ln -s ../../jbuild_d/Debug/bin/libIDEHelper_d.$LIBEXT libIDEHelper_d.$LIBEXT
|
||||||
|
|
||||||
|
ln -s ../../jbuild/Release/bin/libBeefRT.$LIBEXT libBeefRT.$LIBEXT
|
||||||
|
ln -s ../../jbuild/Release/bin/libBeefySysLib.$LIBEXT libBeefySysLib.$LIBEXT
|
||||||
|
ln -s ../../jbuild/Release/bin/libIDEHelper.$LIBEXT libIDEHelper.$LIBEXT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### DEBUG ###
|
### DEBUG ###
|
||||||
|
|
||||||
echo Building BeefBuild_bootd
|
echo Building BeefBuild_bootd
|
||||||
../../jbuild_d/Debug/bin/BeefBoot --out="BeefBuild_bootd" --src=../src --src=../../BeefBuild/src --src=../../BeefLibs/corlib/src --src=../../BeefLibs/Beefy2D/src --define=CLI --define=DEBUG --startup=BeefBuild.Program --linkparams="./libBeefRT_d.so ./libIDEHelper_d.so ./libBeefySysLib_d.so ../../extern/llvm_linux_8_0_0/lib/libLLVMCore.a ../../extern/llvm_linux_8_0_0/lib/libLLVMMC.a ../../extern/llvm_linux_8_0_0/lib/libLLVMMCParser.a ../../extern/llvm_linux_8_0_0/lib/libLLVMCodeGen.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Disassembler.a ../../extern/llvm_linux_8_0_0/lib/libLLVMMCDisassembler.a ../../extern/llvm_linux_8_0_0/lib/libLLVMSupport.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Info.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Utils.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86AsmPrinter.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Desc.a ../../extern/llvm_linux_8_0_0/lib/libLLVMObject.a ../../extern/llvm_linux_8_0_0/lib/libLLVMBitReader.a ../../extern/llvm_linux_8_0_0/lib/libLLVMAsmParser.a ../../extern/llvm_linux_8_0_0/lib/libLLVMTarget.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86CodeGen.a ../../extern/llvm_linux_8_0_0/lib/libLLVMScalarOpts.a ../../extern/llvm_linux_8_0_0/lib/libLLVMInstCombine.a ../../extern/llvm_linux_8_0_0/lib/libLLVMSelectionDAG.a ../../extern/llvm_linux_8_0_0/lib/libLLVMProfileData.a ../../extern/llvm_linux_8_0_0/lib/libLLVMTransformUtils.a ../../extern/llvm_linux_8_0_0/lib/libLLVMAnalysis.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86AsmParser.a ../../extern/llvm_linux_8_0_0/lib/libLLVMAsmPrinter.a ../../extern/llvm_linux_8_0_0/lib/libLLVMBitWriter.a ../../extern/llvm_linux_8_0_0/lib/libLLVMVectorize.a ../../extern/llvm_linux_8_0_0/lib/libLLVMipo.a ../../extern/llvm_linux_8_0_0/lib/libLLVMInstrumentation.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDebugInfoDWARF.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDebugInfoPDB.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDebugInfoCodeView.a ../../extern/llvm_linux_8_0_0/lib/libLLVMGlobalISel.a ../../extern/llvm_linux_8_0_0/lib/libLLVMBinaryFormat.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDemangle.a -ltinfo -Wl,-rpath -Wl,\$ORIGIN"
|
../../jbuild_d/Debug/bin/BeefBoot --out="BeefBuild_bootd" --src=../src --src=../../BeefBuild/src --src=../../BeefLibs/corlib/src --src=../../BeefLibs/Beefy2D/src --define=CLI --define=DEBUG --startup=BeefBuild.Program --linkparams="./libBeefRT_d.$LIBEXT ./libIDEHelper_d.$LIBEXT ./libBeefySysLib_d.$LIBEXT ../../extern/llvm_linux_8_0_0/lib/libLLVMCore.a ../../extern/llvm_linux_8_0_0/lib/libLLVMMC.a ../../extern/llvm_linux_8_0_0/lib/libLLVMMCParser.a ../../extern/llvm_linux_8_0_0/lib/libLLVMCodeGen.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Disassembler.a ../../extern/llvm_linux_8_0_0/lib/libLLVMMCDisassembler.a ../../extern/llvm_linux_8_0_0/lib/libLLVMSupport.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Info.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Utils.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86AsmPrinter.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86Desc.a ../../extern/llvm_linux_8_0_0/lib/libLLVMObject.a ../../extern/llvm_linux_8_0_0/lib/libLLVMBitReader.a ../../extern/llvm_linux_8_0_0/lib/libLLVMAsmParser.a ../../extern/llvm_linux_8_0_0/lib/libLLVMTarget.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86CodeGen.a ../../extern/llvm_linux_8_0_0/lib/libLLVMScalarOpts.a ../../extern/llvm_linux_8_0_0/lib/libLLVMInstCombine.a ../../extern/llvm_linux_8_0_0/lib/libLLVMSelectionDAG.a ../../extern/llvm_linux_8_0_0/lib/libLLVMProfileData.a ../../extern/llvm_linux_8_0_0/lib/libLLVMTransformUtils.a ../../extern/llvm_linux_8_0_0/lib/libLLVMAnalysis.a ../../extern/llvm_linux_8_0_0/lib/libLLVMX86AsmParser.a ../../extern/llvm_linux_8_0_0/lib/libLLVMAsmPrinter.a ../../extern/llvm_linux_8_0_0/lib/libLLVMBitWriter.a ../../extern/llvm_linux_8_0_0/lib/libLLVMVectorize.a ../../extern/llvm_linux_8_0_0/lib/libLLVMipo.a ../../extern/llvm_linux_8_0_0/lib/libLLVMInstrumentation.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDebugInfoDWARF.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDebugInfoPDB.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDebugInfoCodeView.a ../../extern/llvm_linux_8_0_0/lib/libLLVMGlobalISel.a ../../extern/llvm_linux_8_0_0/lib/libLLVMBinaryFormat.a ../../extern/llvm_linux_8_0_0/lib/libLLVMDemangle.a $LINKOPTS -Wl,-rpath -Wl,\$ORIGIN"
|
||||||
echo Building BeefBuild_d
|
echo Building BeefBuild_d
|
||||||
./BeefBuild_bootd -clean -proddir=../../BeefBuild -config=Debug -platform=Linux64
|
./BeefBuild_bootd -clean -proddir=../../BeefBuild -config=Debug -platform=Linux64
|
||||||
#./BeefBuild_d -proddir=../../TestApp
|
#./BeefBuild_d -proddir=../../TestApp
|
||||||
|
@ -63,7 +72,7 @@ echo Testing IDEHelper/Tests in BeefBuild_d
|
||||||
### RELEASE ###
|
### RELEASE ###
|
||||||
|
|
||||||
echo Building BeefBuild_boot
|
echo Building BeefBuild_boot
|
||||||
../../jbuild/Release/bin/BeefBoot --out="BeefBuild_boot" --src=../src --src=../../BeefBuild/src --src=../../BeefLibs/corlib/src --src=../../BeefLibs/Beefy2D/src --define=CLI --define=DEBUG --startup=BeefBuild.Program --linkparams="./libBeefRT.so ./libIDEHelper.so ./libBeefySysLib.so ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMCore.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMMC.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMMCParser.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMCodeGen.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Disassembler.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMMCDisassembler.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMSupport.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Info.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Utils.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86AsmPrinter.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Desc.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMObject.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMBitReader.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMAsmParser.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMTarget.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86CodeGen.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMScalarOpts.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMInstCombine.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMSelectionDAG.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMProfileData.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMTransformUtils.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMAnalysis.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86AsmParser.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMAsmPrinter.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMBitWriter.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMVectorize.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMipo.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMInstrumentation.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDebugInfoDWARF.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDebugInfoPDB.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDebugInfoCodeView.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMGlobalISel.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMBinaryFormat.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDemangle.a -ltinfo -Wl,-rpath -Wl,\$ORIGIN"
|
../../jbuild/Release/bin/BeefBoot --out="BeefBuild_boot" --src=../src --src=../../BeefBuild/src --src=../../BeefLibs/corlib/src --src=../../BeefLibs/Beefy2D/src --define=CLI --define=DEBUG --startup=BeefBuild.Program --linkparams="./libBeefRT.$LIBEXT ./libIDEHelper.$LIBEXT ./libBeefySysLib.$LIBEXT ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMCore.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMMC.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMMCParser.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMCodeGen.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Disassembler.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMMCDisassembler.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMSupport.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Info.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Utils.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86AsmPrinter.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86Desc.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMObject.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMBitReader.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMAsmParser.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMTarget.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86CodeGen.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMScalarOpts.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMInstCombine.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMSelectionDAG.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMProfileData.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMTransformUtils.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMAnalysis.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMX86AsmParser.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMAsmPrinter.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMBitWriter.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMVectorize.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMipo.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMInstrumentation.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDebugInfoDWARF.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDebugInfoPDB.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDebugInfoCodeView.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMGlobalISel.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMBinaryFormat.a ../../extern/llvm_linux_rel_8_0_0/lib/libLLVMDemangle.a $LINKOPTS -Wl,-rpath -Wl,\$ORIGIN"
|
||||||
echo Building BeedBuild
|
echo Building BeedBuild
|
||||||
./BeefBuild_boot -clean -proddir=../../BeefBuild -config=Release -platform=Linux64
|
./BeefBuild_boot -clean -proddir=../../BeefBuild -config=Release -platform=Linux64
|
||||||
#./BeefBuild_d -proddir=../../TestApp
|
#./BeefBuild_d -proddir=../../TestApp
|
||||||
|
|
BIN
extern/.DS_Store
vendored
Normal file
BIN
extern/.DS_Store
vendored
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue