Lioncash
450c84c990
emitter: Remove unimplemented prototype
2016-03-09 02:20:00 -05:00
Lioncash
88d604383e
Common: Get rid of alignment macros
...
The gl rasterizer already uses alignas,
so we may as well move everything over.
2016-03-09 01:31:14 -05:00
bunnei
cddb9bd2aa
Merge pull request #1297 from Subv/saves
...
DiskDirectory: Initialize the directory member with valid info.
2016-03-01 17:16:05 -05:00
Yuri Kunde Schlesner
ddcf2ef32a
Merge pull request #1427 from MerryMage/emit-lbit
...
x64 Emitter: Fix L bit in VEX prefix
2016-02-28 03:12:57 -08:00
MerryMage
f73c39d573
x64 Emitter: Fix L bit in VEX prefix
2016-02-27 12:45:26 +00:00
mailwl
2e13b7f3ca
Initial implementation ir:user
2016-02-26 18:39:28 +03:00
MerryMage
8b00954ec7
AudioCore: Skeleton Implementation
...
This commit:
* Adds a new subproject, audio_core.
* Defines structures that exist in DSP shared memory.
* Hooks up various other parts of the emulator into audio core.
This sets the foundation for a later HLE DSP implementation.
2016-02-21 13:13:52 +00:00
MerryMage
6c71858c5c
BitField: Make trivially copyable and remove assignment operator
2016-02-12 19:51:16 +00:00
Lioncash
c89e3d5951
backend: defaulted move constructor/assignment
2016-02-04 22:39:33 -05:00
Lioncash
60fe45813b
color: Make trivial helpers constexpr
2016-01-27 22:14:17 -05:00
Lioncash
3933b68c59
key_map: Use std::tie for comparisons
2016-01-25 01:19:21 -05:00
Subv
922b31ebbd
DiskDirectory: Initialize the directory member with valid info.
2016-01-16 09:30:29 -05:00
LFsWang
8376821776
Add missing return values in ForeachDirectoryEntry
...
ForeachDirectoryEntry is changed by #1256 ,but return value at last line
was missing.
2015-12-23 16:26:38 +08:00
bunnei
87df493b5b
Merge pull request #1252 from Subv/cam
...
Services/Cam: Added new log type and camera enums from 3dbrew.
2015-12-03 22:01:45 -05:00
archshift
b3cfcf55ea
Refactor ScanDirectoryTreeAndCallback to separate errors and retvals
...
ScanDirectoryTreeAndCallback, before this change, coupled error/return
codes and actual return values (number of entries found). This caused
confusion and difficulty interpreting the precise way the function
worked.
Supersedes, and closes #1255 .
2015-11-27 13:33:38 -08:00
Subv
434ae89a6a
Services/Cam: Added new log type and camera enums from 3dbrew.
...
Followup to #1102
Original author @mailwl
2015-11-23 17:17:28 -05:00
wwylele
1f89d5d184
fix failure on gcc and clang
2015-11-12 20:39:30 +02:00
wwylele
8de154893c
disable unary minus when the type is not signed
...
silent warning C4146 on msvc
2015-11-12 20:39:28 +02:00
polaris-
31dee93e84
Implement gdbstub
2015-10-04 11:16:59 -04:00
bunnei
5d635986bf
Merge pull request #1176 from lioncash/vs2015-code-junking-day
...
Obligatory "Throw out workarounds VS2013 once limited us to" PR
2015-10-03 13:19:03 -04:00
bunnei
11a64acf23
Merge pull request #1095 from archshift/game-list
...
Initial implementation of a game list
2015-10-01 23:35:19 -04:00
Lioncash
845ac621b3
bit_field: Re-enable code on MSVC
2015-10-01 15:43:42 -04:00
archshift
7134a17fc6
Split up FileUtil::ScanDirectoryTree to be able to use callbacks for custom behavior
...
Converted FileUtil::ScanDirectoryTree and FileUtil::DeleteDirRecursively
to use the new ScanDirectoryTreeAndCallback function internally.
2015-09-30 21:04:47 -07:00
Lioncash
8cb2bc748d
symbols: Replace an insert call with emplace
2015-09-30 11:55:58 -04:00
Lioncash
65d7a82db4
symbols: Get rid of initial underscores in variable names
2015-09-30 11:54:44 -04:00
Lioncash
7e143d4422
symbols: Directly initialize TSymbol members
2015-09-30 11:53:01 -04:00
Lioncash
052eacc3b9
symbols: Simplify GetSymbol
2015-09-30 11:51:06 -04:00
Lioncash
543192e045
hash: Get rid of unused functions
2015-09-16 08:54:28 -04:00
Lioncash
751fbfdcc3
general: Silence some warnings when using clang
2015-09-16 08:51:53 -04:00
Lioncash
13683a6a11
memory_util: Remove unnecessary assignment in FreeMemoryPages
2015-09-11 23:16:34 -04:00
Lioncash
3972ac40ef
memory_util: Remove commented out printf statements
2015-09-11 23:12:28 -04:00
Lioncash
07bfe0abbb
general: Replace 0 literals with nullptr where applicable
2015-09-11 23:11:01 -04:00
Lioncash
b9fb46ac9d
synchronized_wrapper: Add missing return in SynchronizedRef move assignment operator
2015-09-11 22:00:21 -04:00
bunnei
ef622a07ff
Merge pull request #1144 from lioncash/remove
...
common: Get rid of debug_interface.h
2015-09-11 09:47:36 -04:00
Lioncash
bc886a7a03
common: Get rid of a cast in swap.h
2015-09-11 08:54:33 -04:00
Lioncash
5dc9950772
common: Get rid of debug_interface.h
...
This is technically unused. Also removes TMemChecks because it relies on this.
Whenever memory breakpoints are implemented for real, it should be designed to
match the codebase debugging mechanisms.
2015-09-11 08:12:08 -04:00
aroulin
179ad35c2e
x64: Proper stack alignment in shader JIT function calls
...
Import Dolphin stack handling and register saving routines
Also removes the x86 parts from abi files
2015-09-01 23:39:52 +02:00
aroulin
0b6c0afeb7
Common: Import BitSet from Dolphin
2015-09-01 23:39:52 +02:00
Yuri Kunde Schlesner
656d824b20
Common: Fix MicroProfile compilation in MSVC2015
2015-08-28 06:12:12 -03:00
Yuri Kunde Schlesner
0fcabd2b11
Integrate the MicroProfile profiling library
...
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
2015-08-24 22:16:28 -03:00
aroulin
16f39aa452
x64-emitter: add RCPSS SSE instruction
2015-08-23 15:42:58 +02:00
Lioncash
250d474280
Merge pull request #1058 from lioncash/ptr
...
emitter: Remove pointer casts
2015-08-22 18:42:47 -04:00
Yuri Kunde Schlesner
3efb205a68
Merge pull request #1025 from yuriks/heap-management
...
Kernel: Correct(er) handling of Heap and Linear Heap allocations
2015-08-22 14:01:57 -07:00
Lioncash
78e7c77ff5
emitter: Remove pointer casts
...
This should also technically silence quite a few ubsan warnings.
2015-08-21 17:09:33 -04:00
Lioncash
e85c5dbb54
emitter: Remove unnecessary defines
2015-08-20 04:45:32 -04:00
Lioncash
a796149c42
emitter: Remove unnecessary else keywords
2015-08-20 04:45:31 -04:00
Lioncash
e88dc7fc6d
emitter: Remove unused code
2015-08-20 04:45:30 -04:00
Lioncash
8738963bce
emitter: Remove unimplemented JMP prototype
2015-08-20 04:45:29 -04:00
Lioncash
55461125ba
emitter: Pass OpArg by reference where possible
2015-08-20 04:45:28 -04:00
Lioncash
0609b89f74
emitter: Remove unnecessary inline specifiers
...
Functions implemented in a class definition are already implicitly inline.
2015-08-20 04:45:22 -04:00
bunnei
21ba05e5f1
Merge pull request #1035 from darkf/mingw-fix
...
Fix building under MinGW
2015-08-19 20:40:31 -04:00
darkf
e053d30bf7
Fix building under MinGW
2015-08-17 22:21:14 -07:00
Patrick Martin
5b65d95310
videocore: Added RG8 texture support
2015-08-16 02:21:50 -03:00
Yuri Kunde Schlesner
b9a9ad9742
VMManager: Make LogLayout log level configurable as a parameter
2015-08-16 01:03:43 -03:00
Yuri Kunde Schlesner
2e5696dba4
Merge pull request #1031 from bbarenblat/master
...
Handle invalid `Log::Class`
2015-08-15 15:34:12 -07:00
bunnei
b39c053785
Rename ARCHITECTURE_X64 definition to ARCHITECTURE_x86_64.
2015-08-15 18:03:27 -04:00
bunnei
0ee00861f6
Common: Cleanup CPU capability detection code.
2015-08-15 18:03:26 -04:00
bunnei
a1942238f5
Common: Move cpu_detect to x64 directory.
2015-08-15 18:03:26 -04:00
bunnei
bd7e691f78
x64: Refactor to remove fake interfaces and general cleanups.
2015-08-15 18:03:25 -04:00
bunnei
d67e2f78b7
Common: Added MurmurHash3 hash function for general-purpose use.
2015-08-15 17:33:46 -04:00
bunnei
ddbeebb887
Common: Ported over boilerplate x86 JIT code from Dolphin/PPSSPP.
2015-08-15 17:33:45 -04:00
bunnei
4d51792285
Common: Ported over Dolphin's code for x86 CPU capability detection.
2015-08-15 17:33:44 -04:00
Benjamin Barenblat
7cd5a653ff
Handle invalid Log::Class
...
Add a case of `Log::Class::Count` to the switch statement that
dispatches on `Log::Class`. The case simply calls the `UNREACHABLE`
macro.
2015-08-15 15:39:45 -04:00
archshift
d1ae413ffd
Stop defining GCC always_inline attributes as __forceinline
...
__forceinline is a MSVC extension, which may confuse some people working on the codebase.
Furthermore, the C++ standard dictates that all names which contain adjacent underscores are reserved.
2015-08-11 19:45:15 -07:00
bunnei
b6c241d667
Merge pull request #1018 from bbarenblat/master
...
Handle invalid `Log::Level::Count`
2015-08-05 11:59:06 -04:00
Benjamin Barenblat
0298b7bedd
Use UNREACHABLE macro for impossible cases in previous commit
...
Use the UNREACHABLE macro instead of `ASSERT(false, ...);`.
2015-08-02 18:30:24 -04:00
Yuri Kunde Schlesner
48393d452c
Common: Work around bug in MSVC2015 standard library
...
The char16_t/char32_t implementations aren't present in the library and
cause linker errors. This is a known issue that wasn't fixed in VS2015
RTM.
2015-08-02 19:03:55 -03:00
Benjamin Barenblat
9ff23da255
Handle invalid Log::Level::Count
...
Add a case of `Log::Level::Count` to all switch statements that
dispatch on `Log::Level`. The case simply asserts `false` and notes
the invalid log level.
2015-08-02 12:55:31 -04:00
zawata
6e9a6ca6bf
Common : Fix Conversion Warnings
2015-07-19 03:59:46 -07:00
Emmanuel Gil Peyrot
fcdc8118eb
Common: Remove the unused and commented GetThemeDir prototype from FileUtil.
2015-07-18 13:08:19 +01:00
Tony Wasserka
5e79706db2
Pica: Implement stencil testing.
2015-07-13 23:54:39 +02:00
Tony Wasserka
279e19732c
FileUtil: Add a WriteObject method for writing a single, POD-type object.
2015-07-13 22:27:20 +02:00
Apology11
af18572491
don´t define snprintf on Visual Studio 2015
...
Visual Studio 2015 defines this in stdio now
2015-07-12 13:12:14 +02:00
Yuri Kunde Schlesner
b0d72e3de1
Merge pull request #914 from yuriks/bitfield-mask
...
Common: Fix mask generation in BitField
2015-07-11 19:01:57 -07:00
Lioncash
e5d90b5797
Common: Remove thunk.h
...
This isn't used, and there's no implementations of the member functions.
2015-07-10 20:09:41 -04:00
Yuri Kunde Schlesner
867c28ae03
Merge pull request #876 from linkmauve/include-cleanups
...
Cleanup includes, mostly in common
2015-07-10 16:36:12 -07:00
Yuri Kunde Schlesner
d5b5280501
Common: Remove redundant masking in BitField
...
For the signed case, the shifts already remove the rest of the value, so
ANDing by the mask is redundant.
2015-07-10 18:43:41 -03:00
Yuri Kunde Schlesner
d7f9529bdd
Common: Fix mask generation in BitField
...
Fixes #913
2015-07-10 18:43:40 -03:00
Emmanuel Gil Peyrot
ab61e67c09
Common: Remove unused type unions breaking aliasing rules in horrible ways.
2015-06-28 10:48:42 +01:00
Emmanuel Gil Peyrot
e5fcabdd69
Core: Cleanup file_sys includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
aea15f5c73
Core: Cleanup core includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
45c4781544
CitraQt: Cleanup includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
22ae87530b
Common: Cleanup emu_window includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
1775adc34c
Common: Remove unused ROUND_UP_POW2 macro.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
596b7c4f63
Common: Cleanup key_map includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
2d044a67c9
Common: Cleanup memory and misc includes.
2015-06-28 00:36:54 +01:00
Emmanuel Gil Peyrot
3a771a13dc
Common: Cleanup profiler includes.
2015-06-28 00:36:53 +01:00
Emmanuel Gil Peyrot
2a36edfd86
Common: Cleanup thread includes.
2015-06-28 00:36:53 +01:00
Emmanuel Gil Peyrot
13e6876463
Common: Fix string_util includes.
2015-06-28 00:36:53 +01:00
Emmanuel Gil Peyrot
8cf9eb7f43
Common: Fix FileUtil includes, and everything relying on those.
2015-06-28 00:36:53 +01:00
Emmanuel Gil Peyrot
ce0cfd62d9
Common: Remove now-unused EMU_PLATFORM define, fixes issue #373 .
2015-06-27 14:43:57 +01:00
Emmanuel Gil Peyrot
82718c4a41
Common: Remove unused SSE version checking and a GCC macro.
2015-06-27 14:43:57 +01:00
Emmanuel Gil Peyrot
0aade9ad63
Common: Remove unused fifo_queue.h.
2015-06-27 14:43:56 +01:00
bunnei
9850f98339
Merge pull request #855 from purpasmart96/service_rearrangment
...
Services: Continue separation of services into their own folders
2015-06-21 10:55:02 -04:00
purpasmart96
7933dbe6a0
Services: Continue separation of services into their own folders
2015-06-11 20:41:59 -07:00
tfarley
66b0d799ee
Render-to-texture flush, interval math fix
2015-06-08 19:18:20 -04:00
archshift
76690392bf
Move video_core/color.h to common/color.h
2015-05-30 11:17:37 -07:00
archshift
5df2d1b5f7
Move video_core/math.h to common/vector_math.h
...
The file only contained vector manipulation code, and such widely-useable code doesn't belong in video_core.
2015-05-30 11:17:36 -07:00
Emmanuel Gil Peyrot
b1503b2020
Remove every trailing whitespace from the project (but externals).
2015-05-29 21:59:29 +01:00
tfarley
05dc633a8c
OpenGL renderer
2015-05-22 15:51:18 -07:00
Yuri Kunde Schlesner
9108482888
Service::Y2R: Support for grayscale decoding of specific formats
...
Implements unrotated planar YUV 4:2:0 -> RGB24 conversions in Y2R.
Currently only the Y (luma) channel is used, so the results don't
contain color. This will be added in a later PR at some point.
This is enough to get all currently know Moflex videos to decode. (Some
don't display on-screen due to seemingly unrelated reasons.)
Thanks to @archshift for doing the initial implementation which I
cleaned up and then fixed the 8x8 block mode.
2015-05-22 17:57:21 -03:00
Yuri Kunde Schlesner
ba2fe7f795
Merge pull request #758 from yuriks/sync-logging
...
Common: Remove async logging
2015-05-15 20:54:48 -07:00
Yuri Kunde Schlesner
7dbc27ff57
Remove unused concurrent_ring_buffer.h
2015-05-15 23:57:53 -03:00
Emmanuel Gil Peyrot
a31fd7f86b
Common: Remove unused cruft from math_util, and remove a duplicated Rect class in common_types.
2015-05-14 16:16:15 +02:00
Yuri Kunde Schlesner
c8eae338a8
Common: Use the log system to print assert messages
2015-05-12 02:52:31 -03:00
Yuri Kunde Schlesner
b88c91dd3d
Common: Remove async logging
...
It provided a large increase in complexity of the logging system while
having a negligible performance impact: the usage patterns of the ring
buffer meant that each log contended with the logging thread, causing
it to effectively act as a synchronous extra buffering.
Also removed some broken code related to filtering of subclasses which
was broken since it was introduced. (Which means no one ever used that
feature anyway, since, 8 months later, no one ever complained.)
2015-05-12 02:31:04 -03:00
Yuri Kunde Schlesner
b700b55696
Common: Remove the BIT macro
...
When the macro was introduced in 326ec51261
it wasn't noticed that it conflicted in name with a heavily used macro
inside of dyncom. This causes some compiler warnings. Since it's only
lightly used, it was opted to simply remove the new macro.
2015-05-09 18:16:46 -03:00
Yuri Kunde Schlesner
326ec51261
Common: Add BIT macro
2015-05-08 22:11:04 -03:00
Yuri Kunde Schlesner
8809d02db3
Common: Add StringFromFixedZeroTerminatedBuffer
2015-05-08 03:03:06 -03:00
Yuri Kunde Schlesner
4560178f66
Merge pull request #725 from yuriks/remove-common-crap
...
Remove unused hash and mem_arena from common
2015-05-07 16:18:03 -07:00
bunnei
10ef39624a
Merge pull request #723 from lioncash/commonstr
...
string_util: Get rid of UriDecode/UriEncode
2015-05-07 18:55:18 -04:00
Yuri Kunde Schlesner
ed12b08e7a
Profiler: Fix off-by-one error when computing average.
2015-05-07 19:48:31 -03:00
Yuri Kunde Schlesner
3396f352cb
Common: Remove mem_arena.cpp/h
...
It is superfluous for Citra. (It's only really necessary if you're doing
JIT. We were using it but not taking any advantage from it.) This should
make 32-bit builds work again.
2015-05-07 19:01:09 -03:00
Yuri Kunde Schlesner
d9df5b575a
Common: Remove hash.cpp/h
...
Currently unused and the code quality is pretty questionable.
2015-05-07 18:31:18 -03:00
Yuri Kunde Schlesner
fae5933ad6
Common: Add proper macros to test for architecture pointer size
...
The old system of just defining macros available in some other platform
was susceptible to silently using the wrong code if you forgot to
include a particular header. This fixes a crash on non-Windows platforms
introduced by e1fbac3ca1
.
2015-05-07 18:22:36 -03:00
Lioncash
9adad45b0f
string_util: Get rid of UriDecode/UriEncode
2015-05-07 17:10:55 -04:00
Yuri Kunde Schlesner
e1fbac3ca1
Common: Remove common.h
2015-05-07 15:45:22 -03:00
Yuri Kunde Schlesner
1bd1a13a02
Common: Move alignment macros to common_funcs.h
2015-05-07 15:45:21 -03:00
Yuri Kunde Schlesner
ae963d75f8
Common: Move SSE detection ifdefs to platform.h
2015-05-07 15:45:20 -03:00
Yuri Kunde Schlesner
a594fdb66e
Common: Remove more unused compatibility defines
2015-05-07 15:45:20 -03:00
Yuri Kunde Schlesner
f3c096951b
Common: Move IO-specific compatibility macros to file_util.cpp
2015-05-07 15:45:20 -03:00
Yuri Kunde Schlesner
bf12f270b3
Common: Remove many unnecessary cross-platform compatibility macros
2015-05-06 23:50:08 -03:00
Yuri Kunde Schlesner
c0eaa662d4
Clean-up includes
2015-05-06 23:45:06 -03:00
Yuri Kunde Schlesner
c916bcf7b5
Move typedefs from kernel.h to more appropriate places
2015-05-06 23:45:05 -03:00
Yuri Kunde Schlesner
6ad71c216b
Common: Move NonCopyable to common_types.h
2015-05-06 23:45:05 -03:00
Yuri Kunde Schlesner
7a4b717772
Common: Use C++11 deleted functions for NonCopyable
2015-05-06 23:45:04 -03:00
Yuri Kunde Schlesner
1fee769aa0
Common: Remove unused enums
2015-05-06 23:45:04 -03:00
Zaneo
b8328593fe
EmuWindow: Clip mouse input coordinates to emulated screen dimensions.
...
If the mouse position for a mouse move/drag would take it outside the emulated screen dimensions, clip the coordinates to
the emulated screen dimensions.
Qt and GLFW will report negative coordinates for mouse positions to the left, or above citra window. Added restriction
to mouse coordinates passed to touchmoved by Qt/GLFW to be greater or equal to zero.
2015-05-01 23:52:33 -04:00
Yuri Kunde Schlesner
6402de9ae7
Common: thread.h cleanups
...
The helper classes are rendered obsolete by C++11 lambdas. Also made
formatting conform to our code style.
2015-04-16 17:55:30 -03:00
bunnei
7b9f428b23
Thread: Implement priority boost for starved threads.
...
SVC: Return correct error code on invalid CreateThread processor ID.
SVC: Assert when creating a thread with an invalid userland priority.
2015-04-09 19:05:21 -04:00
bunnei
3fd2cc566b
Merge pull request #641 from purpasmart96/service_stubs
...
Services: Stubs and minor changes
2015-04-03 22:16:50 -04:00
purpasmart96
198c0ddc72
Services: Stubs and minor changes
2015-04-02 20:05:11 -07:00
Lioncash
e05d6220f5
disassembler: Get rid of a const_cast
2015-03-30 15:37:34 -04:00
Emmanuel Gil Peyrot
188b419586
Common: Fix logic for setting EMU_DATA_DIR.
2015-03-16 02:22:59 +01:00
Emmanuel Gil Peyrot
4c684fb274
Common: Make a #else more apparent.
2015-03-16 02:22:19 +01:00
Subv
c0d1a91017
EmuWindow: Fixed a reference to a temporary variable
...
in GetTouchState()
2015-03-14 15:01:02 -05:00
bunnei
ed5b275d21
Merge pull request #642 from bunnei/touchpad
...
Touchpad support
2015-03-11 21:28:57 -04:00
bunnei
d61b26b79f
HID: Complete refactor of pad/touch input to fix threading issues.
2015-03-10 23:58:07 -04:00
bunnei
b56829df02
Merge pull request #629 from archshift/lcdfb
...
Implement SetLcdForceBlack and add implementation for color filling in the GPU code
2015-03-10 18:08:55 -04:00
bunnei
953e09ddb5
EmuWindow: Made pad/touch functions non-static.
2015-03-10 18:05:20 -04:00
bunnei
543232436f
EmuWindow: Added infrastructure code to enable touchpad support.
2015-03-10 18:05:17 -04:00
archshift
041e99b613
Added LCD registers, and implementation for color filling in OGL code.
2015-03-09 15:51:41 -07:00
bunnei
3da94a597b
Merge pull request #634 from linkmauve/logging-performances
...
Apply the logging filter before sending the message to the queue
2015-03-09 15:42:18 -04:00
bunnei
ba8ce6c8f5
Merge pull request #584 from yuriks/outline-asserts
...
Asserts: Use lambdas to keep assertion code away from the main code path
2015-03-08 22:25:04 -04:00
bunnei
25633b431d
Fixed EmuWindow typo (fixes OSX build)
2015-03-07 18:26:28 -05:00
bunnei
06bf471581
Merge pull request #636 from bunnei/refactor-screen-win
...
Set framebuffer layout from EmuWindow.
2015-03-07 18:18:40 -05:00
bunnei
9960c49c21
Set framebuffer layout from EmuWindow.
2015-03-07 17:21:19 -05:00
Tony Wasserka
93e32bce72
Merge pull request #538 from yuriks/perf-stat
...
Add profiling infrastructure and widget
2015-03-07 15:30:40 +01:00
Emmanuel Gil Peyrot
0aa44e238d
Logging: check for filter before sending to the queue, to skip all heavy formatting on the other thread.
2015-03-06 19:23:52 +01:00
archshift
e011acaa84
Removed swap code redundancy and moved common swap code to swap.h
2015-03-05 22:46:45 -08:00