170 Commits

Author SHA1 Message Date
Dmitry Marakasov
ee5805e773 Use more appropriate variable name for c++ standard 2014-12-26 16:19:23 +03:00
Dmitry Marakasov
92b225c928 Merge branch 'use_optional'
Conflicts:
	.travis.yml
2014-12-26 16:19:05 +03:00
Dmitry Marakasov
b1e989c835 Merge branch 'optional' 2014-12-26 16:17:57 +03:00
Dmitry Marakasov
7fd9137239 Fix uninitialized member vars 2014-12-26 01:46:08 +03:00
Dmitry Marakasov
dfc1b0b2ee Enable cppcheck in travis 2014-12-26 01:43:29 +03:00
Dmitry Marakasov
dda468ae62 Mark deprecated functions as such 2014-12-25 22:34:16 +03:00
Dmitry Marakasov
0ff5d3cf33 Merge branch 'c++1y-checks' into use_optional 2014-12-25 22:28:08 +03:00
Dmitry Marakasov
f5a2b5fb57 Define a macro for deprecated attribute 2014-12-25 22:26:51 +03:00
Dmitry Marakasov
19154ec765 Ident nested preprocessor 2014-12-25 22:25:44 +03:00
Dmitry Marakasov
f31497f9a7 Add c++1y test to travis 2014-12-25 22:19:34 +03:00
Dmitry Marakasov
74bff27f86 Use experimental/optional if available 2014-12-25 22:17:44 +03:00
Dmitry Marakasov
e8c0218fe4 Allow to set c++ standard 2014-12-25 22:17:09 +03:00
Dmitry Marakasov
96c59ff7ed Add checks for useful c++1y features 2014-12-25 22:16:41 +03:00
Dmitry Marakasov
76f2d746ca Add Optional to library headers 2014-12-25 19:41:32 +03:00
Dmitry Marakasov
17053c2bab Move cpp_optional into separate directory 2014-12-25 19:40:50 +03:00
Dmitry Marakasov
853c159257 No need to use accessors here 2014-12-25 19:32:55 +03:00
Dmitry Marakasov
65b5446fd1 Axe out remaining uses of old Point/Rect API 2014-12-25 19:30:37 +03:00
Dmitry Marakasov
3796a6d246 Switch AudioDevice to Optional
No compatibility here, as API is broken anyway (Optional<std::string>
ctor won't accept const char*)
2014-12-25 19:15:28 +03:00
Dmitry Marakasov
6d0213810b Switch to Optional
Remove "valid" flag from Rect and Point, derive them directly from
SDL_Rect and SDL_Point structures, simplify logic. Now x/y/w/h member
variables are directly accessible and Rect/Point may be passed as
SDL_Rect/SDL_Point via pointer or reference.

Change all cases where Null Rects and Points were used to Optional.

invalid state related functions like Null(), IsNull() and Get() are
now deprecated but are not removed yet for compatibility sake.
2014-12-25 19:10:41 +03:00
Dmitry Marakasov
c576b6bc67 Fix build with broken libstdc++ 2014-12-25 17:39:43 +03:00
Dmitry Marakasov
e6b31930b6 Add test for optional 2014-12-25 17:31:14 +03:00
Dmitry Marakasov
d4736c2a0d Add SDL2pp wrapper for optional
With future C++ standards, library will switch to std::optional, however
for now we need a wrapper to choose between our bundled implementation,
std::experimental::optional (if that's available) and std::optional
(when that's available)
2014-12-25 17:28:23 +03:00
Dmitry Marakasov
bd81462de1 Untie optional from libc++
Style changes:
* Change namespace: std::experimental -> SDL2pp::cpp_optional
* Change _LIBCPP_BEGIN_NAMESPACE_STD to plain "namespace std {"
* Remove _LIBCPP_INLINE_VISIBILITY, _LIBCPP_EXCEPTION_ABI
* Change _NOEXEPT to noexcept
* Address all c++ standard library primitives via std::

Functional changes:
* Change _LIBCPP_ASSERT() to plain assert()
* Remove constexpr from functions which require c++1y relaxed constexpr
  requirements
* Change __is_nothrow_swappable condition for noexcept of swap(), to
  noexcept(std::swap) (idea taken from libstdc++)
* Remove constexpr from operator-> const to not require
  internal __has_operator_addressof
2014-12-25 17:26:52 +03:00
Dmitry Marakasov
f35c7c9cba Remove limit in c++ standard version 2014-12-25 15:48:34 +03:00
Dmitry Marakasov
2dca69320e Fix include guards 2014-12-25 15:44:46 +03:00
Dmitry Marakasov
82a91b3afe Import experimental/optional from libc++ 3.5, under MIT license 2014-12-25 15:43:24 +03:00
Dmitry Marakasov
f8c6b2a9fb Add operators to offset a Rect by a Point 2014-12-20 18:04:28 +03:00
Dmitry Marakasov
18fe309309 Remove demos into more suitable examples
Also add options for conditional build of tests and examples
2014-12-20 18:04:22 +03:00
Dmitry Marakasov
5c0dfc3824 Add note on installation 2014-12-20 03:18:00 +03:00
Dmitry Marakasov
ae2968e2fe Use SDL2 seek whence flags, not ones from stdio 2014-12-20 00:21:35 +03:00
Dmitry Marakasov
486dbb7bf4 Provide copy operations for AudioDevice::LockHandle 2014-12-19 19:33:30 +03:00
Dmitry Marakasov
3dd739d4a3 Provide default argument for Texture::Lock() 2014-12-19 19:26:53 +03:00
Dmitry Marakasov
eea2b2989b Install pkg-config file 0.4.0 2014-12-19 00:51:57 +03:00
Dmitry Marakasov
3660efab44 Provide version information 2014-12-19 00:48:48 +03:00
Dmitry Marakasov
ed5ad9faf8 Update project comment 2014-12-19 00:17:17 +03:00
Dmitry Marakasov
a6ef469487 Split AudioSpec into separate header 2014-12-18 18:26:11 +03:00
Dmitry Marakasov
c14ec31ed8 Use finer-grained includes in demos 2014-12-18 18:11:20 +03:00
Dmitry Marakasov
f51013cf6a Bump soname after incompatible ABI changes in audio 2014-12-18 17:42:42 +03:00
Dmitry Marakasov
ef152c2a84 Merge branch 'header-tests'
Conflicts:
	tests/CMakeLists.txt
2014-12-18 17:30:00 +03:00
Dmitry Marakasov
95f43d8478 Merge branch 'rwops-improvements' 2014-12-18 17:28:27 +03:00
Dmitry Marakasov
7e61a4aa7d Merge branch 'texture-lock' 2014-12-18 17:28:08 +03:00
Dmitry Marakasov
9a245e073a Merge branch 'audio-fixes' 2014-12-18 17:28:02 +03:00
Dmitry Marakasov
b8d3b08f10 Implement fixed integer r/w methods 2014-12-18 17:24:19 +03:00
Dmitry Marakasov
6813606086 Fix build on older CMake versions
MAKE_C_IDENTIFIER seem to only be available on relatively new CMake
versions, so replace it with similar REGEX REPLACE.
2014-12-18 16:55:27 +03:00
Dmitry Marakasov
d7987b33da Allow ContainerRWops to work with both const and non-const containers
Analogus to how StreamRWops work. Also add more tests for
ContainerRWops.
2014-12-18 16:48:48 +03:00
Dmitry Marakasov
53aa26dec5 Make StreamRWops work with istream/ostream
Streams do not generally work well with RWops because
* streams have separate read and write pointers
* ostream doesn't allow you to determine how many bytes were actually written
* istream and ostream have separate set of functions

Try my best to support streams in RWops though, engaging some template
magic:
* provide separate template implementations of all operations which
  depend on whether stream is an istream or ostream. This allows to
  e.g. return 0 immediately for an attempt to write() to istream.
* disallow StreamRWops for classes which are both istream and ostream
  to not run into ambiguity of separate read/write pointers
* for read failure, but partially read object back to the stream to not
  lose data for following read (not sure that e.g. fread behaves so
  though; I'll anyway expect user to Seek() after read or write failure)
* for write failure, there's no way to avoid leaking partial data to the
  stream

In general, it is best to use this container as read-only.

Also add tests for StreamRWops
2014-12-18 16:23:22 +03:00
Dmitry Marakasov
c5f7de0c46 Make header tests completely automatic 2014-12-18 14:54:53 +03:00
Dmitry Marakasov
7ba131a913 Add StreamRWops class 2014-12-18 14:32:27 +03:00
Dmitry Marakasov
c73bd885c5 Name header file after class it defines 2014-12-18 14:29:45 +03:00
Dmitry Marakasov
9d2097cdea Silence warning on Release build 2014-12-18 13:16:12 +03:00