mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Code review - general gardening
This commit is contained in:
		
							parent
							
								
									8f059ae398
								
							
						
					
					
						commit
						04aa351c40
					
				
					 10 changed files with 125 additions and 88 deletions
				
			
		|  | @ -6,28 +6,29 @@ | |||
| 
 | ||||
| #include <boost/serialization/serialization.hpp> | ||||
| 
 | ||||
| /// Allows classes to define `save_construct` and `load_construct` methods for serialization
 | ||||
| /// This is used where we don't call the default constructor during deserialization, as a shortcut
 | ||||
| /// instead of using load_construct_data directly
 | ||||
| class construct_access { | ||||
| public: | ||||
|     template <class Archive, class T> | ||||
|     static inline void save_construct(Archive& ar, const T* t, const unsigned int file_version) { | ||||
|     static void save_construct(Archive& ar, const T* t, const unsigned int file_version) { | ||||
|         t->save_construct(ar, file_version); | ||||
|     } | ||||
|     template <class Archive, class T> | ||||
|     static inline void load_construct(Archive& ar, T* t, const unsigned int file_version) { | ||||
|     static void load_construct(Archive& ar, T* t, const unsigned int file_version) { | ||||
|         T::load_construct(ar, t, file_version); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| #define BOOST_SERIALIZATION_CONSTRUCT(T)                                                           \ | ||||
|     namespace boost {                                                                              \ | ||||
|     namespace serialization {                                                                      \ | ||||
|     namespace boost::serialization {                                                               \ | ||||
|     template <class Archive>                                                                       \ | ||||
|     inline void save_construct_data(Archive& ar, const T* t, const unsigned int file_version) {    \ | ||||
|     void save_construct_data(Archive& ar, const T* t, const unsigned int file_version) {           \ | ||||
|         construct_access::save_construct(ar, t, file_version);                                     \ | ||||
|     }                                                                                              \ | ||||
|     template <class Archive>                                                                       \ | ||||
|     inline void load_construct_data(Archive& ar, T* t, const unsigned int file_version) {          \ | ||||
|     void load_construct_data(Archive& ar, T* t, const unsigned int file_version) {                 \ | ||||
|         construct_access::load_construct(ar, t, file_version);                                     \ | ||||
|     }                                                                                              \ | ||||
|     }                                                                                              \ | ||||
|     } | ||||
|  |  | |||
|  | @ -17,7 +17,8 @@ class BackingMem { | |||
| public: | ||||
|     virtual ~BackingMem() = default; | ||||
|     virtual u8* GetPtr() = 0; | ||||
|     virtual u32 GetSize() const = 0; | ||||
|     virtual const u8* GetPtr() const = 0; | ||||
|     virtual std::size_t GetSize() const = 0; | ||||
| 
 | ||||
| private: | ||||
|     template <class Archive> | ||||
|  | @ -35,7 +36,11 @@ public: | |||
|         return data.data(); | ||||
|     } | ||||
| 
 | ||||
|     u32 GetSize() const override { | ||||
|     const u8* GetPtr() const override { | ||||
|         return data.data(); | ||||
|     } | ||||
| 
 | ||||
|     std::size_t GetSize() const override { | ||||
|         return static_cast<u32>(data.size()); | ||||
|     } | ||||
| 
 | ||||
|  | @ -66,51 +71,51 @@ public: | |||
|         : backing_mem(std::move(backing_mem_)), offset(0) { | ||||
|         Init(); | ||||
|     } | ||||
|     MemoryRef(std::shared_ptr<BackingMem> backing_mem_, u32 offset_) | ||||
|     MemoryRef(std::shared_ptr<BackingMem> backing_mem_, u64 offset_) | ||||
|         : backing_mem(std::move(backing_mem_)), offset(offset_) { | ||||
|         ASSERT(offset < backing_mem->GetSize()); | ||||
|         Init(); | ||||
|     } | ||||
|     inline operator u8*() { | ||||
|         return cptr; | ||||
|     } | ||||
|     inline u8* GetPtr() { | ||||
|         return cptr; | ||||
|     } | ||||
|     explicit operator bool() const { | ||||
|         return cptr != nullptr; | ||||
|     } | ||||
|     inline const u8* GetPtr() const { | ||||
|     operator u8*() { | ||||
|         return cptr; | ||||
|     } | ||||
|     inline u32 GetSize() const { | ||||
|     u8* GetPtr() { | ||||
|         return cptr; | ||||
|     } | ||||
|     operator const u8*() const { | ||||
|         return cptr; | ||||
|     } | ||||
|     const u8* GetPtr() const { | ||||
|         return cptr; | ||||
|     } | ||||
|     std::size_t GetSize() const { | ||||
|         return csize; | ||||
|     } | ||||
|     inline void operator+=(u32 offset_by) { | ||||
|     MemoryRef& operator+=(u32 offset_by) { | ||||
|         ASSERT(offset_by < csize); | ||||
|         offset += offset_by; | ||||
|         Init(); | ||||
|         return *this; | ||||
|     } | ||||
|     inline MemoryRef operator+(u32 offset_by) const { | ||||
|     MemoryRef operator+(u32 offset_by) const { | ||||
|         ASSERT(offset_by < csize); | ||||
|         return MemoryRef(backing_mem, offset + offset_by); | ||||
|     } | ||||
|     inline u8* operator+(std::size_t offset_by) const { | ||||
|         ASSERT(offset_by < csize); | ||||
|         return cptr + offset_by; | ||||
|     } | ||||
| 
 | ||||
| private: | ||||
|     std::shared_ptr<BackingMem> backing_mem = nullptr; | ||||
|     u32 offset = 0; | ||||
|     std::shared_ptr<BackingMem> backing_mem{}; | ||||
|     u64 offset{}; | ||||
|     // Cached values for speed
 | ||||
|     u8* cptr = nullptr; | ||||
|     u32 csize = 0; | ||||
|     u8* cptr{}; | ||||
|     std::size_t csize{}; | ||||
| 
 | ||||
|     void Init() { | ||||
|         if (backing_mem) { | ||||
|             cptr = backing_mem->GetPtr() + offset; | ||||
|             csize = static_cast<u32>(backing_mem->GetSize() - offset); | ||||
|             csize = static_cast<std::size_t>(backing_mem->GetSize() - offset); | ||||
|         } else { | ||||
|             cptr = nullptr; | ||||
|             csize = 0; | ||||
|  |  | |||
|  | @ -161,7 +161,7 @@ private: | |||
|     // The priority level queues of thread ids.
 | ||||
|     std::array<Queue, NUM_QUEUES> queues; | ||||
| 
 | ||||
|     s32 ToIndex(Queue* q) const { | ||||
|     s64 ToIndex(const Queue* q) const { | ||||
|         if (q == nullptr) { | ||||
|             return -2; | ||||
|         } else if (q == UnlinkedTag()) { | ||||
|  | @ -171,7 +171,7 @@ private: | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     Queue* ToPointer(s32 idx) { | ||||
|     Queue* ToPointer(s64 idx) { | ||||
|         if (idx == -1) { | ||||
|             return UnlinkedTag(); | ||||
|         } else if (idx < 0) { | ||||
|  | @ -184,10 +184,10 @@ private: | |||
|     friend class boost::serialization::access; | ||||
|     template <class Archive> | ||||
|     void save(Archive& ar, const unsigned int file_version) const { | ||||
|         s32 idx = ToIndex(first); | ||||
|         const s64 idx = ToIndex(first); | ||||
|         ar << idx; | ||||
|         for (size_t i = 0; i < NUM_QUEUES; i++) { | ||||
|             const s32 idx1 = ToIndex(queues[i].next_nonempty); | ||||
|             const s64 idx1 = ToIndex(queues[i].next_nonempty); | ||||
|             ar << idx1; | ||||
|             ar << queues[i].data; | ||||
|         } | ||||
|  | @ -195,7 +195,7 @@ private: | |||
| 
 | ||||
|     template <class Archive> | ||||
|     void load(Archive& ar, const unsigned int file_version) { | ||||
|         s32 idx; | ||||
|         s64 idx; | ||||
|         ar >> idx; | ||||
|         first = ToPointer(idx); | ||||
|         for (auto i = 0; i < NUM_QUEUES; i++) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue