diff options
author | bigbiff bigbiff <bigbiff@teamw.in> | 2018-12-19 00:39:53 +0100 |
---|---|---|
committer | Ethan Yonker <dees_troy@teamw.in> | 2019-03-20 20:28:21 +0100 |
commit | af32bb9c4f4f06e92de3435ed2db3153c0701094 (patch) | |
tree | 622948fb3167dc17bb436c948d61df581d2e75f7 /mtp/ffs/btree.cpp | |
parent | Adding Edl button in reboot menu (diff) | |
download | android_bootable_recovery-af32bb9c4f4f06e92de3435ed2db3153c0701094.tar android_bootable_recovery-af32bb9c4f4f06e92de3435ed2db3153c0701094.tar.gz android_bootable_recovery-af32bb9c4f4f06e92de3435ed2db3153c0701094.tar.bz2 android_bootable_recovery-af32bb9c4f4f06e92de3435ed2db3153c0701094.tar.lz android_bootable_recovery-af32bb9c4f4f06e92de3435ed2db3153c0701094.tar.xz android_bootable_recovery-af32bb9c4f4f06e92de3435ed2db3153c0701094.tar.zst android_bootable_recovery-af32bb9c4f4f06e92de3435ed2db3153c0701094.zip |
Diffstat (limited to '')
-rw-r--r-- | mtp/ffs/btree.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/mtp/ffs/btree.cpp b/mtp/ffs/btree.cpp new file mode 100644 index 000000000..78b39a779 --- /dev/null +++ b/mtp/ffs/btree.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2014 TeamWin - bigbiff and Dees_Troy mtp database conversion to C++ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <utils/threads.h> +#include "btree.hpp" +#include "MtpDebug.h" + +Tree::Tree(MtpObjectHandle handle, MtpObjectHandle parent, const std::string& name) + : Node(handle, parent, name), alreadyRead(false) { +} + +Tree::~Tree() { + for (std::map<MtpObjectHandle, Node*>::iterator it = entries.begin(); it != entries.end(); ++it) + delete it->second; + entries.clear(); +} + +int Tree::getCount(void) { + int count = entries.size(); + MTPD("Tree::getCount::node count: %d\n", count); + return count; +} + +void Tree::addEntry(Node* node) { + if (node->Mtpid() == 0) { + MTPE("Tree::addEntry: not adding node with 0 handle.\n"); + return; + } + if (node->Mtpid() == node->getMtpParentId()) { + MTPE("Tree::addEntry: not adding node with handle %u == parent.\n", node->Mtpid()); + return; + } + entries[node->Mtpid()] = node; +} + +Node* Tree::findEntryByName(std::string name) { + for (std::map<MtpObjectHandle, Node*>::iterator it = entries.begin(); it != entries.end(); ++it) + { + Node* node = it->second; + if (node->getName().compare(name) == 0 && node->Mtpid() > 0) + return node; + } + return NULL; +} + +Node* Tree::findNode(MtpObjectHandle handle) { + std::map<MtpObjectHandle, Node*>::iterator it = entries.find(handle); + if (it != entries.end()) + return it->second; + return NULL; +} + +void Tree::getmtpids(MtpObjectHandleList* mtpids) { + for (std::map<MtpObjectHandle, Node*>::iterator it = entries.begin(); it != entries.end(); ++it) + mtpids->push_back(it->second->Mtpid()); +} + +void Tree::deleteNode(MtpObjectHandle handle) { + std::map<MtpObjectHandle, Node*>::iterator it = entries.find(handle); + if (it != entries.end()) { + delete it->second; + entries.erase(it); + } +} |