TWRP-ify AOSP code

Pull in most TWRP sources
Stub out partition management code
Make it compile -- probably will not boot
Kind of a mess but have to start somewhere
diff --git a/partitions.hpp b/partitions.hpp
index e91f7dd..2915e73 100644
--- a/partitions.hpp
+++ b/partitions.hpp
@@ -23,11 +23,12 @@
 #ifndef __TWRP_Partition_Manager
 #define __TWRP_Partition_Manager
 
-#include "data.hpp"
 #include <vector>
 #include <string>
 #include <map>
 
+using namespace std;
+
 // Partition class
 class TWPartition
 {
@@ -61,6 +62,7 @@
 protected:
 	bool Can_Be_Mounted;                                                      // Indicates that the partition can be mounted
 	bool Can_Be_Wiped;                                                        // Indicates that the partition can be wiped
+	bool Wipe_During_Factory_Reset;                                           // Indicates that this partition is wiped during a factory reset
 	bool Wipe_Available_in_GUI;                                               // Inidcates that the wipe can be user initiated in the GUI system
 	bool Is_SubPartition;                                                     // Indicates that this partition is a sub-partition of another partition (e.g. datadata is a sub-partition of data)
 	string SubPartition_Of;                                                   // Indicates which partition is the parent partition of this partition (e.g. data is the parent partition of datadata)
@@ -83,12 +85,12 @@
 	string Display_Name;                                                      // Display name for the GUI
 	string Backup_Name;                                                       // Backup name -- used for backup filenames
 	Backup_Method_enum Backup_Method;                                         // Method used for backup
-	bool Has_Data_Media                                                       // Indicates presence of /data/media, may affect wiping and backup methods
-	bool Is_Storage                                                           // Indicates if this partition is used for storage for backup, restore, and installing zips
-	string Storage_Path                                                       // Indicates the path to the storage -- root indicates mount point, media/ indicates e.g. /data/media
-	string Current_File_System                                                // Current file system
-	string Fstab_File_System                                                  // File system from the recovery.fstab
-	int Format_Block_Size                                                     // Block size for formatting
+	bool Has_Data_Media;                                                       // Indicates presence of /data/media, may affect wiping and backup methods
+	bool Is_Storage;                                                           // Indicates if this partition is used for storage for backup, restore, and installing zips
+	string Storage_Path;                                                       // Indicates the path to the storage -- root indicates mount point, media/ indicates e.g. /data/media
+	string Current_File_System;                                                // Current file system
+	string Fstab_File_System;                                                  // File system from the recovery.fstab
+	int Format_Block_Size;                                                     // Block size for formatting
 
 private:
 	bool Wipe_EXT23();                                                        // Formats as ext3 or ext2
@@ -105,37 +107,37 @@
 	bool Restore_Flash_Image(string restore_folder);                          // Restore using flash_image for MTD memory types
 
 friend class TWPartitionManager;
-}
+};
 
 class TWPartitionManager
 {
 public:
-	TWPartitionManager();
-	virtual ~TWPartitionManager();
-
-public:
-	virtual int Process_Fstab(string Fstab_Filename, bool Display_Error);     // Parses the fstab and populates the partitions
-	virtual int Mount_By_Path(string Path, bool Display_Error);               // Mounts partition based on path (e.g. /system)
-	virtual int Mount_By_Block(string Block, bool Display_Error);             // Mounts partition based on block device (e.g. /dev/block/mmcblk1p1)
-	virtual int Mount_By_Name(string Name, bool Display_Error);               // Mounts partition based on display name (e.g. System)
-	virtual int UnMount_By_Path(string Path, bool Display_Error);             // Unmounts partition based on path
-	virtual int UnMount_By_Block(string Block, bool Display_Error);           // Unmounts partition based on block device
-	virtual int UnMount_By_Name(string Name, bool Display_Error);             // Unmounts partition based on display name
-	virtual int Is_Mounted_By_Path(string Path);                              // Checks if partition is mounted based on path
-	virtual int Is_Mounted_By_Block(string Block);                            // Checks if partition is mounted based on block device
-	virtual int Is_Mounted_By_Name(string Name);                              // Checks if partition is mounted based on display name
-	static *Partition Find_Partition_By_Path(string Path);                    // Returns a pointer to a partition based on path
-	static *Partition Find_Partition_By_Block(string Block);                  // Returns a pointer to a partition based on block device
-	virtual int Run_Backup(string Backup_Name);                               // Initiates a backup in the current storage
-	virtual int Run_Restore(string Restore_Name);                             // Restores a backup
-	void Set_Restore_Files(string Restore_Name);                              // Used to gather a list of available backup partitions for the user to select for a restore
-	virtual int Wipe_By_Path(string Path);                                    // Wipes a partition based on path
-	virtual int Wipe_By_Block(string Block);                                  // Wipes a partition based on block device
-	virtual int Wipe_By_Name(string Name);                                    // Wipes a partition based on display name
-	void Refresh_Sizes();                                                     // Refreshes size data of partitions
+	static int Process_Fstab(string Fstab_Filename, bool Display_Error);     // Parses the fstab and populates the partitions
+	static int Mount_By_Path(string Path, bool Display_Error);               // Mounts partition based on path (e.g. /system)
+	static int Mount_By_Block(string Block, bool Display_Error);             // Mounts partition based on block device (e.g. /dev/block/mmcblk1p1)
+	static int Mount_By_Name(string Name, bool Display_Error);               // Mounts partition based on display name (e.g. System)
+	static int UnMount_By_Path(string Path, bool Display_Error);             // Unmounts partition based on path
+	static int UnMount_By_Block(string Block, bool Display_Error);           // Unmounts partition based on block device
+	static int UnMount_By_Name(string Name, bool Display_Error);             // Unmounts partition based on display name
+	static int Is_Mounted_By_Path(string Path);                              // Checks if partition is mounted based on path
+	static int Is_Mounted_By_Block(string Block);                            // Checks if partition is mounted based on block device
+	static int Is_Mounted_By_Name(string Name);                              // Checks if partition is mounted based on display name
+	static int Mount_Current_Storage();                                      // Mounts the current storage location
+	//static *TWPartition Find_Partition_By_Path(string Path);                  // Returns a pointer to a partition based on path
+	//static *TWPartition Find_Partition_By_Block(string Block);                // Returns a pointer to a partition based on block device
+	static int Run_Backup(string Backup_Name);                               // Initiates a backup in the current storage
+	static int Run_Restore(string Restore_Name);                             // Restores a backup
+	static void Set_Restore_Files(string Restore_Name);                             // Used to gather a list of available backup partitions for the user to select for a restore
+	static int Wipe_By_Path(string Path);                                    // Wipes a partition based on path
+	static int Wipe_By_Block(string Block);                                  // Wipes a partition based on block device
+	static int Wipe_By_Name(string Name);                                    // Wipes a partition based on display name
+	static int Factory_Reset();                                              // Performs a factory reset
+	static void Refresh_Sizes();                                             // Refreshes size data of partitions
+	static void Update_System_Details();                                     // Updates fstab, file systems, sizes, etc.
+	static int Decrypt_Device(string Password);                              // Attempt to decrypt any encrypted partitions
 
 private:
 	std::vector<TWPartition*> Partitions;
-}
+};
 
 #endif // __TWRP_Partition_Manager
\ No newline at end of file