SciresM 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							64c6ef2de7 
							
						 
					 
					
						
						
							
							fs: reduce path size 0x28 -> 0x18  
						
						... 
						
						
						
						This implements two optimizations on fs::Path, which N added in 12.0.0.
The current structure looks like: 
```cpp
struct Path {
    const char *m_str; // Points to the read-only path string
    char *m_write_buffer_buffer; // Part of std::unique_ptr<char[], ams::fs::impl::Deleter>
    ams::fs::impl::Deleter m_write_buffer_deleter; // Parse of std::unique_ptr<char[], ams::fs::impl::Deleter>, stores the size of the buffer.
    size_t m_write_buffer_length; // Copy of the write buffer's size accessible to the Path() structure.
    bool m_is_normalized; // Whether the path buffer is normalized
};
```
This is pretty wasteful. The write buffer size is stored twice, wasting 8 bytes, because one copy of the size isn't accessible to the path.
In addition, due to alignment, the bool wastes 7 padding bytes.
This commit:
* Encodes normalized in the low bit of the write buffer length, saving 8 bytes.
* Use a custom WriteBuffer class rather than generic unique_ptr, to avoid needing to store the WriteBuffer twice.
These each save 8 bytes, for a final size of 0x18 rather than 0x28. 
						
					 
					
						2022-03-24 20:22:47 -07:00 
						 
				 
			
				
					
						
							
							
								Michael Scire 
							
						 
					 
					
						
						
						
						
							
						
						
							4646581e93 
							
						 
					 
					
						
						
							
							fs: for my sanity, begin tracking version where code was last checked for accuracy  
						
						
						
					 
					
						2022-03-24 08:43:40 -07:00 
						 
				 
			
				
					
						
							
							
								Michael Scire 
							
						 
					 
					
						
						
						
						
							
						
						
							f3dbdc2391 
							
						 
					 
					
						
						
							
							fs: allocations with mutex held must be unsafe  
						
						
						
					 
					
						2022-02-21 15:17:17 -08:00 
						 
				 
			
				
					
						
							
							
								Michael Scire 
							
						 
					 
					
						
						
						
						
							
						
						
							64b4cc25fc 
							
						 
					 
					
						
						
							
							fs: implement newer allocator templates  
						
						
						
					 
					
						2022-02-21 15:17:17 -08:00 
						 
				 
			
				
					
						
							
							
								Michael Scire 
							
						 
					 
					
						
						
						
						
							
						
						
							a595c232b9 
							
						 
					 
					
						
						
							
							strat: use m_ for member variables  
						
						
						
					 
					
						2021-10-10 00:14:06 -07:00 
						 
				 
			
				
					
						
							
							
								Michael Scire 
							
						 
					 
					
						
						
						
						
							
						
						
							77fe5cf6f5 
							
						 
					 
					
						
						
							
							ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals  
						
						
						
					 
					
						2021-10-04 12:59:10 -07:00 
						 
				 
			
				
					
						
							
							
								Michael Scire 
							
						 
					 
					
						
						
						
						
							
						
						
							24d6933145 
							
						 
					 
					
						
						
							
							strat: use consistent include style for lib headers  
						
						
						
					 
					
						2021-09-30 19:21:08 -07:00 
						 
				 
			
				
					
						
							
							
								Michael Scire 
							
						 
					 
					
						
						
						
						
							
						
						
							53a47e07fd 
							
						 
					 
					
						
						
							
							nca-pr: update for c++20  
						
						
						
					 
					
						2020-05-14 02:22:24 -07:00 
						 
				 
			
				
					
						
							
							
								SciresM 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							81f91803ec 
							
						 
					 
					
						
						
							
							Implement support for parsing/interacting with NCAs. ( #942 )  
						
						... 
						
						
						
						* fs: implement support for interacting with ncas.
* spl: extend to use virtual keyslots 
						
					 
					
						2020-05-11 15:04:51 -07:00 
						 
				 
			
				
					
						
							
							
								SciresM 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							3a1ccdd919 
							
						 
					 
					
						
						
							
							Switch atmosphere's build target to C++20. ( #952 )  
						
						... 
						
						
						
						* ams: update to build with gcc10/c++20
* remove mno-outline-atomics
* ams: take care of most TODO C++20s
* fusee/sept: update for gcc10
* whoosh, your code now uses pre-compiled headers
* make: dependency fixes 
						
					 
					
						2020-05-11 15:02:10 -07:00 
						 
				 
			
				
					
						
							
							
								Adubbz 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							c7026b9094 
							
						 
					 
					
						
						
							
							Implement the NCM sysmodule ( closes   #91 )  
						
						... 
						
						
						
						* Implement NCM
* Modernize ncm_main
* Remove unnecessary smExit
* Give access to svcCallSecureMonitor
* Stack size bump
* Fix incorrect setup for NandUser's content storage entry
* Fix a potential data abort when flushing the placeholder accessor cache
* Fix HasFile and HasDirectory
* Use r+b, not w+b
* Misc fixes
* errno begone
* Fixed more stdio error handling
* More main fixes
* Various command improvements
* Make dispatch tables great again
* Fix logic inversion
* Fixed content path generation
* Bump heap size, fix CleanupAllPlaceHolder
* Various fixes. Note: This contains debug stuff which will be removed later. I was getting tired of having to cherrypick tiny changes
* Fixed placeholder/content deletion
* Fixed incorrect content manager destruction
* Prevent automatic placeholder creation on open
* Fixed List implementation. Also lots of debug logging.
* Removed debug code
* Added a scope guard for WritePlaceHolder
* Manually prevent placeholder/content appending
* Revert "Removed debug code"
This reverts commit d6ff261fcc168447d80ed6ff261fcc168447d80ehttps://github.com/m4xw/emuMMC "
  branch:   "develop"
  commit:   "d12dd546"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
* util: add boundedmap
* ncm: minor style fixes
* ncm: don't unmount if mounting fails
* lr: bug fixes
* ncm: implement ncm.for-initialize + ncm.for-safemode
* lr: ncm::ProgramId::Invalid -> ncm::InvalidProgramId
* ncm: fix open directory mode on 1.0.0
* ncm: fix fs use, implement more of < 4.0.0 for-initialize/safemode
* ncm: implement packagedcontent -> content for building metadb
* ncm: fix save data flag management
* ncm: address some review suggestions (thanks @leoetlino!)
* updater: use fs bindings
* fs: implement MountCode
* fs: prefer make_unique to operator new
* ncm: implement remaining ContentMetaDatabaseBuilder functionality
Co-authored-by: Michael Scire <SciresM@gmail.com> 
						
					 
					
						2020-03-08 00:06:23 -08:00