Commit Graph

296 Commits

Author SHA1 Message Date
nattthebear b82fd1fb2c Remove bogus TODO.
Absolute requirements of MemoryBlock include:

1) Ability to set and deny RWX permissions at the individual page level within the block
2) Ability to map and unmap from memory at will
3) Ability to specifiy the exact address at which the mapping occurs

From the docs, I don't see any way to get at any of these from the MemoryMappedFile stuff.  So that's a nonstarter.

Should be easy enough to rewrite in POSIX though.
2019-01-04 16:30:13 -05:00
upthorn 71215adf0d Merge branch 'master' of https://github.com/TASVideos/BizHawk 2019-01-04 04:58:58 -08:00
James Groom 42764f0019 Add preliminary Unix compatibility (using Mono; resolves #1384) (#1380)
* Move PlatformSpecificLinkedLibs and implementations to common and rename
* Specify file ext. at LoadPlatformSpecific call site
* Move Client.Common.Global.RunningOnUnix to PlatformLinkedLibSingleton
* Inline var Resolver
* Use PlatformLinkedLibManager internally
* Move plugin load check to LinkedLibManager, use LinkedLibManager
* Interpolate
* Return exit code from dlclose/FreeLibrary
* Skip all calls to externs in BlipBufDll when using mono
* Use PlatformLinkedLibManager in SevenZipLibraryManager
* Add expected return value to workaround (from testing on Win32)
* Remove ".dll" from DllImport attr, remove temporary workaround, see desc.
The library can be built by changing the output file name in
`.../blip_buf/Makefile` to `libblip_buf.so`, and running `make`. It will be
loaded if placed in the `.../output` folder.
* Remove unused code, add TODO (this class is req. for Waterbox.PeWrapper)
The TODO is to [rewrite with
C#](https://docs.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files)
instead of importing from `kernel32.dll`.
* Update OpenTK again but better (for #1384)
* Add Mono run script
* Add libblip_buf.so (temporary)
Temporary because it should be a separate package which BizHawk depends on.
* Add distro detection, add "already running" and "unknown distro" messages
* Gray-out Lua Console on Unix
* Extract superclass from EmuLuaLibrary, add shell implementation for Unix
* Specify libdl version, Fedora doesn't have the versionless symlink
* Remove empty `ToolStripMenuItem`, null `Text` caused crash on Unix
* Transform OpenTK keyboard input into a `List<KeyEvent>` and read that
Also fixes crash on rebind
* Remove debug `using ...;`
2019-01-04 01:50:55 +03:00
upthorn aba1da071d Completely refactored PluginAPI to extend ApiHawk. Ecco2AssistantPlugin is now an external tool. 2018-12-22 10:40:30 -08:00
zeromus 2eade372fd try a new technique to just unstick the frontend when the n64 emulation thread dies 2018-11-07 15:37:37 -05:00
zeromus ba4b32f619 rename TempFileCleaner to TempFileManager; add global path config for temp files
I did this in a funny way (sets the environment for the process).
The idea is that any code which sloppily used Path.GetTempDirectory (etc.) would now have its pathing changed.
It is a little dangerous to allow this to be changed on the fly (I do allow it) since something may expect it to be stable, but I think it's OK.
So anyway. keep your eyes peeled for problems. It's possible I could do this differently and only affect a subset of safely managed things.

should fix #1252
2018-09-11 21:32:50 -04:00
adelikat 22d1818641 DoSettings file for all project to explicitely set language level to C#6 2018-06-23 13:06:13 -05:00
zeromus d55e03538f revert weird changes to util.cs for unused parameter-filling code 2018-03-13 20:41:29 -04:00
Xadrophonix 4bcd69924b All required contents for: https://github.com/TASVideos/BizHawk/issues/1122 2018-03-02 12:06:01 -08:00
frequem 71ba3024b7 Fixed linux build 2018-02-21 20:19:33 -05:00
nattthebear 66940747b0 Cleanup 2017-07-16 08:40:06 -04:00
nattthebear 2bd7726b9b Fix a memory leak in the loonix waterbox interop code that's never been used before ever 2017-07-12 17:57:29 -04:00
nattthebear 41fdb3a140 Lay down the CR/LF law 2017-07-03 14:44:30 -04:00
nattthebear bdfb859480 pizza boy: add the required SPC file as an embedded resource because zeromus said to 2017-07-01 09:06:04 -04:00
zeromus cad5f441dd fix build paths to output 2017-06-26 17:57:50 -05:00
zeromus 0085729392 delete x64 build configuration, use anycpu instead. take care to set Prefer32Bit false in exe csproj, since visualstudio's gui preference doesn't work. 2017-06-26 17:47:51 -05:00
nattthebear a7f7583fcc waterbox: add space at the end of writable data pages, past what was allocated by the core but before the start of cpu enforced write protection, to savestates. theoretically fixes determinism issues from certain wild pointers 2017-06-20 20:56:17 -04:00
nattthebear ed02493297 fuck componentmodel 2017-06-19 21:23:20 -04:00
nattthebear 1292b27163 Add some draft work for supporting sysv <-> msabi interop. I wonder if we'll ever use this? I'd put it on a separate branch but it would be merge hell. 2017-06-18 08:51:09 -04:00
nattthebear 6f60eb5efc Create an abstract base class for waterbox cores, and adapt Virtual Boyee to use it. Not sure yet how useful this is... 2017-06-17 10:07:02 -04:00
adelikat c5f15da366 Update BizHawk.Common from .net 4.5.2 to 4.6.1. I believe 4.5.2 was an oversight from the original .net upgrades. If I'm wrong and this library needs to be 4.5.2 for some reason, feel free to revert. 2017-06-12 13:55:30 -05:00
zeromus 39433e509e change some output64 to output 2017-06-12 01:38:02 -05:00
zeromus 0942d4f498 remove x86 project configurations 2017-06-12 01:24:35 -05:00
nattthebear fa9dcfae35 waterbox: When compiled in debug mode, forcibly evict self at every opportunity. This can be used to catch bugs using pointers past their valid time. Catch and fix two such bugs in the libsnes wrapper. 2017-06-11 07:47:16 -04:00
nattthebear deaf22cb36 Make the bizinvoker, when not in compatibility mode, marshal bool returns as C++ would expect you to, and not winapi because fuck winapi 2017-06-06 17:59:27 -04:00
nattthebear 2887ba5823 savestates for vb. this includes savestates for mmap_heap. unfortunately, usage of mmap_heap was scrapped as the things going into it were better suited for invisible/sealed. it may be eventually useful 2017-05-29 11:26:38 -04:00
nattthebear 76022f66f9 update to framework 4.6.2. Since Windows XP 64 was very rarely used, there's no loss in switching to this if we're going to 64 bit. Add `FrameworkZipWriter` based on the 4.5 framework's built in zip writer. It shaves a decent amount of time off savestate save time, but rolling our own off of DeflateStream would be even faster. 2017-05-27 18:15:15 -04:00
nattthebear b649927360 bizinvoke: make class ref interop work with null pointers 2017-05-27 14:40:15 -04:00
nattthebear 34791d8589 bizinvoker: fix clas being used in place of ref struct 2017-05-27 12:59:57 -04:00
nattthebear 2665510502 Add enough changes so that snes9x now boots. This includes stubs for a bunch of syscalls, a few mmglue changes, and C++ global constructor support 2017-05-27 12:29:05 -04:00
nattthebear 7739b9dc80 rough in some snes9x stuff. not working yet 2017-05-21 17:43:43 -04:00
nattthebear 6053cd6e35 stuff 2017-05-20 12:24:15 -04:00
nattthebear 5c8efb51ba Add some Import related stuff to PeRunner. Build BizExvoker which will be used to import managed libraries as dependencies to PEs 2017-05-20 09:46:45 -04:00
nattthebear ebe789eed2 heh 2017-05-10 07:45:23 -04:00
adelikat f31f3af0c8 InstanceDLL - throw if _hModeule == IntPtr.Zero, advanced loader - show the error if one occured 2017-05-04 19:43:51 -05:00
adelikat b3ad3ce6ba Move BizInvoke files from Emulation.Common to Common 2017-05-01 17:30:42 -05:00
adelikat e1750bdce9 Move BinaryQuickSerializer from Emulation.Common to Common 2017-05-01 17:26:39 -05:00
adelikat a8c15a652b Emulation.Common cleanups 2017-04-27 11:37:26 -05:00
J.D. Purcell 3d6b1da94d Whitespace only (indentation fixes/cleanup). 2017-04-19 20:34:30 -04:00
zeromus d7b0043379 add HModule accessor to InstanceDll 2017-04-17 22:42:12 -05:00
zeromus 42ab6b5df4 add tiny comment to HawkFile.Name 2017-04-17 22:41:58 -05:00
J.D. Purcell b53502eed8 Spaces -> tabs. 2017-04-15 16:37:30 -04:00
adelikat 3965af851f Misc code cleanups in BizHawk.Common 2017-04-13 13:57:58 -05:00
adelikat e767e1b673 Fix loading roms from archive when using recent roms menu 2017-04-01 16:15:32 -05:00
zeromus e484a69950 put RemoveMOTW back in the EXE assemblies. They can't load MOTW'd dlls which contain RemoveMOTW. We still need the RemoveMOTW code in a shared place for externalcores. 2017-03-21 11:09:43 -05:00
zeromus b2cfc199cc add gizmo for resolving LNK files 2017-03-15 22:49:48 -05:00
zeromus b4ad2f40d9 snes c# cleanup 2017-03-15 17:49:19 -05:00
zeromus 1ae8605450 ugh. due to some extension my visualstudio doesnt save projectfiles automatically. 2017-03-06 05:25:09 -06:00
zeromus fbd7601b77 for evaluation:
overhaul snes core -- radically simplify IPC.

There were two goals
1. speedup (failed)
2. not break in the old way of becoming unstable when GC happens (uncertain)
3. lay framework for simplified libretro interface (success, provisional on #2)

the speedup failed, I think, because a slower libco is needed to coexist with .net. I think I will fix this be incorporating both libcos, one for bsnes internal use, and one for .net<->c++ switching
2017-03-06 05:21:35 -06:00
zeromus 569113f2f8 fix #741, maybe, by removing MOTW from external cores before interrogating them. Will it still trigger when running them, if that's done somehow before interrogating them? (untested) 2017-02-21 18:23:02 -06:00
adelikat 6b5710ea25 HawkFile - meh, don't attempt to extract .dll files, these qualify as archives but there is no use case for attempting to load files from within them, then again, there is no reasonable use case for attempting to do so this is basically a useless commit 2016-12-06 12:31:18 -06:00
adelikat eba11b259e HawkFile - fix exception when a file has no extension, and also simplify the logic 2016-12-06 12:21:05 -06:00
adelikat 5665de1797 Intellivision - add a "Fake analog" controller as the default controller for easier binding for casual play, but also leave a boolean option as well for more precise (TAS) control. Add a controller config dialog to select them. 2016-12-03 17:44:25 -06:00
adelikat 2af7765ae0 Don't attempt to detect .smc and .sfc files as archives. Do we want to do this for all known rom extensions? 2016-11-19 14:48:52 -06:00
zeromus a9c0211d46 change a bunch of old googlecode urls in assemblyinfos 2016-06-13 11:34:27 -05:00
nattthebear 4bd73a626f Add Monitor support to BizInvoker. Monitors are called right before (Enter) and right after (Exit) each interop method call. Possible applications include AWE mutex+mapping, and cothread no-GC regions. If you ask for an invoker without monitor, this commit adds no overhead because the code isn't generated. 2016-03-22 20:17:28 -04:00
nattthebear 3bc6fe1b04 Add the elf stuff back to solution (doesn't do anything, don't use, ugly and embarassing, etc). Switch gpgx to use bizinvoker and slash a few hacks there. Bizinvoker - add support for forwarded attributes in Compatibility mode ([Out], [In]), and support enum, ref enum, and enum[]. Misc cleanup. 2016-03-10 22:00:52 -05:00
nattthebear 2a0e859a85 Add 64 bit build (doesn't work yet), move SlimDX.dll 2016-02-28 15:06:03 -05:00
zeromus 51bec2a4a8 add 250ms upper limit to time spent in TryMoveBackupFile loops 2016-02-27 20:23:31 -06:00
zeromus 3c96e9d434 ok so i messed up with the FileInfo, because it was already there and I just lazily used it. But lets try handling this with the sophistication it calls for 2016-02-27 16:19:41 -06:00
nattthebear 7de39ef656 SettingsUtil: Convert between various integer types automagically because [DefaultValueAttribute] is cls complaint and it's awkward to specify unsigned types for it 2016-02-27 16:50:42 -05:00
Isaac Miell 1252944251 Better null checks in string validation functions
This fixes an exception when pressing "Ok" on the "Go to Address" input prompt in the Hex Editor with an empty string
2016-02-17 02:41:09 +10:30
zeromus bff0d5b95d add and hook up AWEMemoryStream option for movie storage. GUI is intentionally shoddy to convey sense that it's experimental. Has been cursorily verified but not thoroughly tested. 2016-02-10 01:09:43 -06:00
Hathor86 f145f3cc68 Polar Coord
- Add polar coordinates to VirtualPadAnalogStick
- Update N64 pad Schema as VirtualPadAnalogStick is a bit larger
- Add Clamp method to NumberExtensions (allows a IComparable<T> value to be restriced between 2 specified other values)
2016-01-23 22:56:41 +01:00
zeromus 753431c94a SHUT. UP. THE. EXCEPTIONS. IN. TEMP. FILE. MANAGER. 2015-12-10 07:13:40 -06:00
Hathor86 8ad0dc3a6d Fix missing } 2015-11-20 14:09:27 +01:00
Hathor86 bae4d53cbf merge remote master 2015-11-20 13:14:38 +01:00
zeromus 4de1d244ce fix endianness of sprintf floats. i thought i checked this, but i guess not 2015-11-18 18:12:16 -06:00
zeromus 4b46bc60bb TempFileManager throws less exceptions 2015-11-17 17:41:01 -06:00
zeromus 5086ea62c2 fix libretro sprintf of %f and %e throwing exceptions 2015-11-17 17:40:51 -06:00
zeromus 28eae0dcb1 Revert "Revert "common logic for tempfiles""
This reverts commit 5196fc6b70.
2015-11-17 17:26:03 -06:00
zeromus 5196fc6b70 Revert "common logic for tempfiles"
This reverts commit 5afa44bbec.

and also "fix regression in libretro core loading and streamline open advanced libretro ui"
59048264cd but tortoisegit didn't put that in the commit message.
2015-11-17 17:10:27 -06:00
zeromus 59048264cd fix regression in libretro core loading and streamline open advanced libretro ui 2015-11-17 16:56:30 -06:00
Hathor86 c7dcb42b94 Merge from maser@TASVideos 2015-11-15 11:27:00 +01:00
zeromus 5afa44bbec common logic for tempfiles 2015-11-15 03:01:58 -06:00
zeromus 466ce0f696 fix bug in sprintf with null %s 2015-11-08 20:22:39 -06:00
Hathor86 5c36c16160 Fixing merge 2015-11-08 22:57:54 +01:00
Hathor86 cc2c888870 Merge remote-tracking branch 'refs/remotes/TASVideos/master'
Conflicts:
	BizHawk.Client.EmuHawk/MainForm.Designer.cs
	BizHawk.Client.EmuHawk/MainForm.cs
	BizHawk.Client.EmuHawk/tools/CDL.Designer.cs
	BizHawk.Client.EmuHawk/tools/CDL.cs
	BizHawk.Client.EmuHawk/tools/CDL.resx
	BizHawk.Common/InstanceDll.cs
	BizHawk.Emulation.Common/CodeDataLog.cs
2015-11-08 22:41:51 +01:00
zeromus ecee3365cc add retro log interface 2015-11-08 04:57:28 -06:00
zeromus 70b7098cb8 fix rebooting of libretro cores, add CPU detection win32 hacks, add retro perf interface 2015-11-07 13:05:40 -06:00
zeromus cbdf6a2acc after i fix a regression from a couple of commits ago which broke multi-instance dlls (affecting only bsnes otherwise right now) 2015-11-07 12:05:26 -06:00
zeromus 7651f418fe usably functional libretro player 2015-11-07 00:14:59 -06:00
Hathor86 f70a2c8c6c Merge from TASVideo 2015-11-01 22:01:19 +01:00
zeromus bef877365c make CDL generic, and prep for GB CDL 2015-10-26 19:15:21 -05:00
zeromus 18aeefb66a add InstanceDll 2015-10-24 03:03:29 -05:00
zeromus 56c3360ec8 minor tweax 2015-09-29 02:27:06 -05:00
zeromus a51e7ddb0b create TAStudio States directory if it doesnt exist 2015-08-24 13:42:46 -05:00
zeromus b41c223464 fix unif loading of mapper names with junk in field beyond end of null termination. also made it utf-8 while i'm in there. 2015-08-17 16:30:35 -05:00
zeromus 9c21601861 fix Clear() operation on that new data structure 2015-08-13 21:56:48 -05:00
zeromus 432adc7874 ..huh. fix building, and also change an int to a long where it was conceivably inadequate 2015-08-13 21:54:38 -05:00
zeromus 5bf21e391c TasStateManager uses a new data structure to write all states to one auto-deleting file per TasStateManager instance. TasStateManager is now IDisposable; this needs to be followed rigorously (I didn't do that). 2015-08-13 21:51:51 -05:00
Suuper bc8717c9f9 Fixed right-click input painting in TAStudio. Also removed mouseWheelTimer as it is no longer needed. 2015-07-16 13:57:51 -05:00
zeromus 80164c1fba import WIP discsys work from svn 2015-06-23 13:57:11 -05:00
goyuken f5c8bece3a satesvates for mgba 2015-06-06 17:34:19 +00:00
adelikat a0d56df06b Lua - client library - change GetOpenTools() to GetAvailableTools() which returns a list of tools available to the currently loaded core, change GetTool() to receive any avaialble tool, if the tool isn't open, GetTool() opens it 2015-04-12 17:37:06 +00:00
jdpurcell 2f5a7543ca Add Yield/SwitchToThread in SNES IPCRingBuffer. Improves performance on Core 2 Duo, about the same on i5, and will prevent it from going < 1 fps on a single core machine :). 2015-02-04 04:31:41 +00:00
adelikat 515a41592c Convert a whole bunch of ram stuff from int to long 2015-01-18 18:59:23 +00:00
adelikat 91ffc17aae Refacotor MemoryDomain.Size to be long instead of int, still some small todos, but it compiles and seems to work 2015-01-18 15:25:47 +00:00
jdpurcell 4a40408f1d Use variable length integers for the rewind state deltas to reduce size. 2015-01-17 19:16:22 +00:00
jdpurcell 112d794f11 More optimization. 2015-01-17 06:19:13 +00:00
jdpurcell 0a345b0084 Issue 368: Set all platform targets to x86, rename build platforms to match, and remove unused build platforms. 2015-01-13 15:28:58 +00:00
jdpurcell e9873f8b91 Fix out of range exception when importing firmware from an archive. 2015-01-06 05:23:30 +00:00
adelikat 2a12b59250 Ram Search - limit to 5 undo levels 2015-01-02 22:16:07 +00:00
goyuken ff8922bb08 itoolform custom config infrastructure; not complete 2014-12-20 21:49:53 +00:00
goyuken 8745ef190b fix stuff not compiling 2014-12-20 04:16:02 +00:00
adelikat 0965475999 Debugger - Register box - properly detect flags and use button style and better positioning, convert register textboxes to hex, and set max length of the boxes appropriately given the size of the register 2014-12-20 03:47:58 +00:00
zeromus e0c09a553b redo how subwcrev stuff is done, so that the subwcrev process doesnt have to run for every project. improves build times. 2014-12-09 19:20:22 +00:00
zeromus 26c35ca7b8 rough draft of file ID system. not ready to be used just yet, but I think it can go the distance. I'll have to hook it up later. 2014-12-03 06:14:59 +00:00
adelikat 8c4e0f1203 Move some extension methods to a better location 2014-11-30 14:04:00 +00:00
zeromus 5cf5894329 firmware importer now supports archives 2014-10-26 14:22:26 +00:00
goyuken 4c1b31e293 some random reflection extensions i was using 2014-10-19 23:15:52 +00:00
zeromus 9430b9f206 2014-10-12 04:19:01 +00:00
goyuken 8d9b843099 house cleaning (AV writer) 2014-10-10 18:09:00 +00:00
goyuken 277b277c2e benchmark savestate time to console 2014-10-09 01:49:44 +00:00
goyuken b0b5245d45 C64: add bool[] overload to the serializer. sloppy, but neater. 2014-10-06 16:00:24 +00:00
zeromus 5ebb1b1e2e clean up recent roms contextmenu processing, and add support for launching the whole shell contextmenu.. its kind of cruddy though. 2014-09-30 08:51:48 +00:00
zeromus d46ca2357e forgot to commit 2014-09-29 04:53:24 +00:00
zeromus cfa433a9a6 for issue #223 : create 2 workarounds for taskbar minimizing ding-and-fail bug and activate one of them. The bug is virtually impossible to fix and isnt really our fault. The bug is theoretically existing under other conditions than the "run n64 core" repro steps. The workaround might could be deployed in other situations as needed. 2014-09-14 09:11:34 +00:00
zeromus 87e9d235f6 make some effort to support memdomain of full 32bits size, and use it for n64 system bus. make sure to check that its disabled in ramsearch engine and in hex editor. we could probably fix it to work in hex editor later. 2014-09-09 21:34:41 +00:00
goyuken 768c2762a5 cleanup 2014-08-03 22:05:32 +00:00
goyuken 84ad460d20 add missing file 2014-08-03 21:44:00 +00:00
goyuken 4fa8df8e30 internal settings infrastructure 2014-08-03 21:36:38 +00:00
goyuken fb133da0c5 fix some internal settings infrastructure 2014-07-14 16:10:45 +00:00
adelikat 96b36cc230 TasMovie - save and load lag log to file 2014-07-07 19:32:37 +00:00
goyuken e1d3d33307 fix text savestates in some cores, which had been completely broken due to a typo for a bit... 2014-07-03 22:20:51 +00:00
adelikat fd80c62cdb More Util methods -> extension methods 2014-07-03 19:20:34 +00:00
adelikat bf88be8c72 Convert some more util methods to extension methods 2014-07-03 19:05:56 +00:00
adelikat 1c0eca190e Remove some unused extensions, Remove Extensions.cs and move methods into better named files with their own namespaces 2014-07-03 18:54:53 +00:00
adelikat 6269e957e6 Remove some unused extension methods and move some others to CollectionExtensions 2014-07-03 18:43:49 +00:00
adelikat a726fde352 Move some more extension methods 2014-07-03 18:38:02 +00:00
adelikat 01506da244 More Util cleanup - move an extension method to a more appropriate file and remove an unused method 2014-07-03 18:32:41 +00:00
adelikat a9aa65397c Convert a Util method to an extension method 2014-07-03 18:29:51 +00:00
adelikat e058e08c35 Remove EnumHelper file and some code cleanup 2014-07-03 18:02:22 +00:00
adelikat 55c9132037 remove NamedDictionary that was only being used by a deleted mnemonics system 2014-07-03 17:47:12 +00:00
adelikat 216796c29e Remove enum helper and move the remaining method to ReflectionExtensions since that is more accurate to what it is doing 2014-07-03 17:41:55 +00:00
adelikat ebee9b9ded More extension reorg 2014-07-03 17:35:49 +00:00
adelikat 90ab7d17b1 ugh! 2014-07-03 17:33:15 +00:00
adelikat 660ef2e024 more extension reorg 2014-07-03 17:30:37 +00:00
adelikat 00ac231a2a More extension reorg 2014-07-03 17:29:01 +00:00
adelikat 6cba3568ef More extension reorg 2014-07-03 17:23:03 +00:00
adelikat 47514784eb Separate stream and writer extensions to an IOExtensions object and namespace 2014-07-03 17:13:09 +00:00
adelikat 204e331ea2 Oops, forgot to add this file 2014-07-03 17:04:54 +00:00
adelikat 393057d33a Convert a helper method into an extension method 2014-07-03 17:01:10 +00:00
adelikat 6bbd3ca80d Hex and Watch Boxes - prevent user from pasting invalid input, also if they do manage to get the textbox into an invalid state, interpret the value as 0 rather than throwing an exception 2014-07-03 16:43:39 +00:00
adelikat 1964f3754a Merge InputValidate into StringExtensions 2014-07-03 16:00:57 +00:00
adelikat 07876e0f12 slight reorg in extension file 2014-07-03 15:39:40 +00:00
adelikat f546a8080c Move some extension methods from the generic extensions file to NumberExtensions and fix up namespaces 2014-07-03 15:35:50 +00:00
adelikat 0eb37ad36d Convert IntHelpers to NumberExtensions and change namespace appropriately, remove StringHelpers.cs 2014-07-03 15:16:47 +00:00
adelikat 467f8da2fb Convert StringHelpers into extension methods, and merge into StringExtensions, change namespace of string extensions 2014-07-03 15:05:02 +00:00
adelikat d5e2808944 Fix namespaces 2014-07-03 14:56:13 +00:00