Merge branch 'master' into develop

This commit is contained in:
Jason Turner 2015-03-21 14:15:31 -06:00
commit ec47a35e9f
17 changed files with 261 additions and 247 deletions

View File

@ -1,5 +1,11 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
IF(BIICODE)
INIT_BIICODE_BLOCK()
ADD_BIICODE_TARGETS()
ELSE()
# Your regular CMakeLists configuration here
project(chaiscript) project(chaiscript)
# MINGW does not yet support C++11's concurrency features # MINGW does not yet support C++11's concurrency features
@ -409,3 +415,6 @@ configure_file(contrib/pkgconfig/chaiscript.pc.in lib/pkgconfig/chaiscript.pc @O
install(FILES "${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc" install(FILES "${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc"
DESTINATION lib/pkgconfig) DESTINATION lib/pkgconfig)
ENDIF()

5
biicode.conf Normal file
View File

@ -0,0 +1,5 @@
[paths]
include
[parent]
ChaiScript/ChaiScript: 0

View File

@ -1,103 +1,103 @@
# Checks for C++11 features # Checks for C++11 features
# CXX11_FEATURE_LIST - a list containing all supported features # CXX11_FEATURE_LIST - a list containing all supported features
# HAS_CXX11_AUTO - auto keyword # HAS_CXX11_AUTO - auto keyword
# HAS_CXX11_NULLPTR - nullptr # HAS_CXX11_NULLPTR - nullptr
# HAS_CXX11_LAMBDA - lambdas # HAS_CXX11_LAMBDA - lambdas
# HAS_CXX11_STATIC_ASSERT - static_assert() # HAS_CXX11_STATIC_ASSERT - static_assert()
# HAS_CXX11_RVALUE_REFERENCES - rvalue references # HAS_CXX11_RVALUE_REFERENCES - rvalue references
# HAS_CXX11_DECLTYPE - decltype keyword # HAS_CXX11_DECLTYPE - decltype keyword
# HAS_CXX11_CSTDINT_H - cstdint header # HAS_CXX11_CSTDINT_H - cstdint header
# HAS_CXX11_LONG_LONG - long long signed & unsigned types # HAS_CXX11_LONG_LONG - long long signed & unsigned types
# HAS_CXX11_VARIADIC_TEMPLATES - variadic templates # HAS_CXX11_VARIADIC_TEMPLATES - variadic templates
# HAS_CXX11_CONSTEXPR - constexpr keyword # HAS_CXX11_CONSTEXPR - constexpr keyword
# HAS_CXX11_SIZEOF_MEMBER - sizeof() non-static members # HAS_CXX11_SIZEOF_MEMBER - sizeof() non-static members
# HAS_CXX11_FUNC - __func__ preprocessor constant # HAS_CXX11_FUNC - __func__ preprocessor constant
# #
# Original script by Rolf Eike Beer # Original script by Rolf Eike Beer
# Modifications by Andreas Weis # Modifications by Andreas Weis
# #
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
SET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) SET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
IF(CMAKE_COMPILER_IS_GNUCXX) IF(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_CXX_FLAGS "-std=c++0x") SET(CMAKE_CXX_FLAGS "-std=c++0x")
endif() endif()
MACRO(CXX11_CHECK_FEATURE FEATURE_NAME FEATURE_NUMBER RESULT_VAR) MACRO(CXX11_CHECK_FEATURE FEATURE_NAME FEATURE_NUMBER RESULT_VAR)
IF (NOT DEFINED ${RESULT_VAR}) IF (NOT DEFINED ${RESULT_VAR})
SET(_bindir "${CMAKE_CURRENT_BINARY_DIR}/cxx11/cxx11_${FEATURE_NAME}") SET(_bindir "${CMAKE_CURRENT_BINARY_DIR}/cxx11/cxx11_${FEATURE_NAME}")
IF (${FEATURE_NUMBER}) IF (${FEATURE_NUMBER})
SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME}-N${FEATURE_NUMBER}) SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME}-N${FEATURE_NUMBER})
SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})") SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
ELSE (${FEATURE_NUMBER}) ELSE (${FEATURE_NUMBER})
SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME}) SET(_SRCFILE_BASE ${CMAKE_CURRENT_LIST_DIR}/c++11-test-${FEATURE_NAME})
SET(_LOG_NAME "\"${FEATURE_NAME}\"") SET(_LOG_NAME "\"${FEATURE_NAME}\"")
ENDIF (${FEATURE_NUMBER}) ENDIF (${FEATURE_NUMBER})
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME}") MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME}")
SET(_SRCFILE "${_SRCFILE_BASE}.cpp") SET(_SRCFILE "${_SRCFILE_BASE}.cpp")
SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp") SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp")
SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp") SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp")
IF (CROSS_COMPILING) IF (CROSS_COMPILING)
try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}") try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL}) IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}") try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL}) ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
ELSE (CROSS_COMPILING) ELSE (CROSS_COMPILING)
try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
"${_bindir}" "${_SRCFILE}") "${_bindir}" "${_SRCFILE}")
IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR) IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
SET(${RESULT_VAR} TRUE) SET(${RESULT_VAR} TRUE)
ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR) ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
SET(${RESULT_VAR} FALSE) SET(${RESULT_VAR} FALSE)
ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR) ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL}) IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
"${_bindir}_fail" "${_SRCFILE_FAIL}") "${_bindir}_fail" "${_SRCFILE_FAIL}")
IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR) IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
SET(${RESULT_VAR} TRUE) SET(${RESULT_VAR} TRUE)
ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR) ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
SET(${RESULT_VAR} FALSE) SET(${RESULT_VAR} FALSE)
ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR) ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL}) ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
ENDIF (CROSS_COMPILING) ENDIF (CROSS_COMPILING)
IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE}) IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}") try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
IF (_TMP_RESULT) IF (_TMP_RESULT)
SET(${RESULT_VAR} FALSE) SET(${RESULT_VAR} FALSE)
ELSE (_TMP_RESULT) ELSE (_TMP_RESULT)
SET(${RESULT_VAR} TRUE) SET(${RESULT_VAR} TRUE)
ENDIF (_TMP_RESULT) ENDIF (_TMP_RESULT)
ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE}) ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
IF (${RESULT_VAR}) IF (${RESULT_VAR})
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- works") MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- works")
LIST(APPEND CXX11_FEATURE_LIST ${RESULT_VAR}) LIST(APPEND CXX11_FEATURE_LIST ${RESULT_VAR})
ELSE (${RESULT_VAR}) ELSE (${RESULT_VAR})
MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- not supported") MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- not supported")
ENDIF (${RESULT_VAR}) ENDIF (${RESULT_VAR})
SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}") SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}")
ENDIF (NOT DEFINED ${RESULT_VAR}) ENDIF (NOT DEFINED ${RESULT_VAR})
ENDMACRO(CXX11_CHECK_FEATURE) ENDMACRO(CXX11_CHECK_FEATURE)
CXX11_CHECK_FEATURE("auto" 2546 HAS_CXX11_AUTO) CXX11_CHECK_FEATURE("auto" 2546 HAS_CXX11_AUTO)
CXX11_CHECK_FEATURE("nullptr" 2431 HAS_CXX11_NULLPTR) CXX11_CHECK_FEATURE("nullptr" 2431 HAS_CXX11_NULLPTR)
CXX11_CHECK_FEATURE("lambda" 2927 HAS_CXX11_LAMBDA) CXX11_CHECK_FEATURE("lambda" 2927 HAS_CXX11_LAMBDA)
CXX11_CHECK_FEATURE("static_assert" 1720 HAS_CXX11_STATIC_ASSERT) CXX11_CHECK_FEATURE("static_assert" 1720 HAS_CXX11_STATIC_ASSERT)
CXX11_CHECK_FEATURE("rvalue_references" 2118 HAS_CXX11_RVALUE_REFERENCES) CXX11_CHECK_FEATURE("rvalue_references" 2118 HAS_CXX11_RVALUE_REFERENCES)
CXX11_CHECK_FEATURE("decltype" 2343 HAS_CXX11_DECLTYPE) CXX11_CHECK_FEATURE("decltype" 2343 HAS_CXX11_DECLTYPE)
CXX11_CHECK_FEATURE("cstdint" "" HAS_CXX11_CSTDINT_H) CXX11_CHECK_FEATURE("cstdint" "" HAS_CXX11_CSTDINT_H)
CXX11_CHECK_FEATURE("long_long" 1811 HAS_CXX11_LONG_LONG) CXX11_CHECK_FEATURE("long_long" 1811 HAS_CXX11_LONG_LONG)
CXX11_CHECK_FEATURE("variadic_templates" 2555 HAS_CXX11_VARIADIC_TEMPLATES) CXX11_CHECK_FEATURE("variadic_templates" 2555 HAS_CXX11_VARIADIC_TEMPLATES)
CXX11_CHECK_FEATURE("constexpr" 2235 HAS_CXX11_CONSTEXPR) CXX11_CHECK_FEATURE("constexpr" 2235 HAS_CXX11_CONSTEXPR)
CXX11_CHECK_FEATURE("sizeof_member" 2253 HAS_CXX11_SIZEOF_MEMBER) CXX11_CHECK_FEATURE("sizeof_member" 2253 HAS_CXX11_SIZEOF_MEMBER)
CXX11_CHECK_FEATURE("__func__" 2340 HAS_CXX11_FUNC) CXX11_CHECK_FEATURE("__func__" 2340 HAS_CXX11_FUNC)
SET(CXX11_FEATURE_LIST ${CXX11_FEATURE_LIST} CACHE STRING "C++11 feature support list") SET(CXX11_FEATURE_LIST ${CXX11_FEATURE_LIST} CACHE STRING "C++11 feature support list")
MARK_AS_ADVANCED(FORCE CXX11_FEATURE_LIST) MARK_AS_ADVANCED(FORCE CXX11_FEATURE_LIST)
SET(CMAKE_CXX_FLAGS ${CHECK_CXX11_OLD_CMAKE_CXX_FLAGS}) SET(CMAKE_CXX_FLAGS ${CHECK_CXX11_OLD_CMAKE_CXX_FLAGS})
UNSET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS) UNSET(CHECK_CXX11_OLD_CMAKE_CXX_FLAGS)

View File

@ -1,8 +1,8 @@
#include <cstring> #include <cstring>
int main() int main()
{ {
if (!__func__) { return 1; } if (!__func__) { return 1; }
if(std::strlen(__func__) <= 0) { return 1; } if(std::strlen(__func__) <= 0) { return 1; }
return 0; return 0;
} }

View File

@ -1,12 +1,12 @@
int main() int main()
{ {
auto i = 5; auto i = 5;
auto f = 3.14159f; auto f = 3.14159f;
auto d = 3.14159; auto d = 3.14159;
bool ret = ( bool ret = (
(sizeof(f) < sizeof(d)) && (sizeof(f) < sizeof(d)) &&
(sizeof(i) == sizeof(int)) (sizeof(i) == sizeof(int))
); );
return ret ? 0 : 1; return ret ? 0 : 1;
} }

View File

@ -1,19 +1,19 @@
constexpr int square(int x) constexpr int square(int x)
{ {
return x*x; return x*x;
} }
constexpr int the_answer() constexpr int the_answer()
{ {
return 42; return 42;
} }
int main() int main()
{ {
int test_arr[square(3)]; int test_arr[square(3)];
bool ret = ( bool ret = (
(square(the_answer()) == 1764) && (square(the_answer()) == 1764) &&
(sizeof(test_arr)/sizeof(test_arr[0]) == 9) (sizeof(test_arr)/sizeof(test_arr[0]) == 9)
); );
return ret ? 0 : 1; return ret ? 0 : 1;
} }

View File

@ -1,10 +1,10 @@
#include <cstdint> #include <cstdint>
int main() int main()
{ {
bool test = bool test =
(sizeof(int8_t) == 1) && (sizeof(int8_t) == 1) &&
(sizeof(int16_t) == 2) && (sizeof(int16_t) == 2) &&
(sizeof(int32_t) == 4) && (sizeof(int32_t) == 4) &&
(sizeof(int64_t) == 8); (sizeof(int64_t) == 8);
return test ? 0 : 1; return test ? 0 : 1;
} }

View File

@ -1,11 +1,11 @@
bool check_size(int i) bool check_size(int i)
{ {
return sizeof(int) == sizeof(decltype(i)); return sizeof(int) == sizeof(decltype(i));
} }
int main() int main()
{ {
bool ret = check_size(42); bool ret = check_size(42);
return ret ? 0 : 1; return ret ? 0 : 1;
} }

View File

@ -1,5 +1,5 @@
int main() int main()
{ {
int ret = 0; int ret = 0;
return ([&ret]() -> int { return ret; })(); return ([&ret]() -> int { return ret; })();
} }

View File

@ -1,7 +1,7 @@
int main(void) int main(void)
{ {
long long l; long long l;
unsigned long long ul; unsigned long long ul;
return ((sizeof(l) >= 8) && (sizeof(ul) >= 8)) ? 0 : 1; return ((sizeof(l) >= 8) && (sizeof(ul) >= 8)) ? 0 : 1;
} }

View File

@ -1,5 +1,5 @@
int main() int main()
{ {
int* test = nullptr; int* test = nullptr;
return test ? 1 : 0; return test ? 1 : 0;
} }

View File

@ -1,5 +1,5 @@
int main() int main()
{ {
int i = nullptr; int i = nullptr;
return 1; return 1;
} }

View File

@ -1,15 +1,15 @@
int foo(int& lvalue) int foo(int& lvalue)
{ {
return 123; return 123;
} }
int foo(int&& rvalue) int foo(int&& rvalue)
{ {
return 321; return 321;
} }
int main() int main()
{ {
int i = 42; int i = 42;
return ((foo(i) == 123) && (foo(42) == 321)) ? 0 : 1; return ((foo(i) == 123) && (foo(42) == 321)) ? 0 : 1;
} }

View File

@ -1,14 +1,14 @@
struct foo { struct foo {
char bar; char bar;
int baz; int baz;
}; };
int main(void) int main(void)
{ {
bool ret = ( bool ret = (
(sizeof(foo::bar) == 1) && (sizeof(foo::bar) == 1) &&
(sizeof(foo::baz) >= sizeof(foo::bar)) && (sizeof(foo::baz) >= sizeof(foo::bar)) &&
(sizeof(foo) >= sizeof(foo::bar)+sizeof(foo::baz)) (sizeof(foo) >= sizeof(foo::bar)+sizeof(foo::baz))
); );
return ret ? 0 : 1; return ret ? 0 : 1;
} }

View File

@ -1,5 +1,5 @@
int main() int main()
{ {
static_assert(0 < 1, "your ordering of integers is screwed"); static_assert(0 < 1, "your ordering of integers is screwed");
return 0; return 0;
} }

View File

@ -1,5 +1,5 @@
int main() int main()
{ {
static_assert(1 < 0, "this should fail"); static_assert(1 < 0, "this should fail");
return 0; return 0;
} }

View File

@ -1,23 +1,23 @@
int Accumulate() int Accumulate()
{ {
return 0; return 0;
} }
template<typename T, typename... Ts> template<typename T, typename... Ts>
int Accumulate(T v, Ts... vs) int Accumulate(T v, Ts... vs)
{ {
return v + Accumulate(vs...); return v + Accumulate(vs...);
} }
template<int... Is> template<int... Is>
int CountElements() int CountElements()
{ {
return sizeof...(Is); return sizeof...(Is);
} }
int main() int main()
{ {
int acc = Accumulate(1, 2, 3, 4, -5); int acc = Accumulate(1, 2, 3, 4, -5);
int count = CountElements<1,2,3,4,5>(); int count = CountElements<1,2,3,4,5>();
return ((acc == 5) && (count == 5)) ? 0 : 1; return ((acc == 5) && (count == 5)) ? 0 : 1;
} }