diff options
Diffstat (limited to 'account.cc')
-rw-r--r-- | account.cc | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/account.cc b/account.cc deleted file mode 100644 index 0c795654..00000000 --- a/account.cc +++ /dev/null @@ -1,115 +0,0 @@ -#include "ledger.h" - -#include <sstream> -#include <deque> - -namespace ledger { - -account_t::~account_t() -{ - DEBUG_PRINT("ledger.memory.ctors", "dtor account_t"); - //assert(! data); - - for (accounts_map::iterator i = accounts.begin(); - i != accounts.end(); - i++) - delete (*i).second; -} - -account_t * account_t::find_account(const std::string& name, - const bool auto_create) -{ - accounts_map::const_iterator i = accounts.find(name); - if (i != accounts.end()) - return (*i).second; - - static char buf[256]; - - std::string::size_type sep = name.find(':'); - const char * first, * rest; - if (sep == std::string::npos) { - first = name.c_str(); - rest = NULL; - } else { - std::strncpy(buf, name.c_str(), sep); - buf[sep] = '\0'; - - first = buf; - rest = name.c_str() + sep + 1; - } - - account_t * account; - - i = accounts.find(first); - if (i == accounts.end()) { - if (! auto_create) - return NULL; - account = new account_t(this, first); - accounts.insert(accounts_pair(first, account)); - } else { - account = (*i).second; - } - - if (rest) - account = account->find_account(rest, auto_create); - - return account; -} - -bool account_t::remove_transaction(transaction_t * xact) -{ - for (transactions_list::iterator i = transactions.begin(); - i != transactions.end(); - i++) - if (*i == xact) { - transactions.erase(i); - return true; - } - - return false; -} - -std::string account_t::fullname() const -{ - if (! _fullname.empty()) { - return _fullname; - } else { - const account_t * first = this; - std::string fullname = name; - - while (first->parent) { - first = first->parent; - if (! first->name.empty()) - fullname = first->name + ":" + fullname; - } - - _fullname = fullname; - - return fullname; - } -} - -bool account_t::valid() const -{ - if (name.find('-') != std::string::npos) - return false; - - if (depth > 16) - return false; - - for (transactions_list::const_iterator i = transactions.begin(); - i != transactions.end(); - i++) - if ((*i)->account != this) - return false; - - for (accounts_map::const_iterator i = accounts.begin(); - i != accounts.end(); - i++) - if (! (*i).second->valid()) - return false; - - return true; -} - -} // namespace ledger |