📄 descriptormanager.cxx
字号:
// Copyright (c) 1994 James Clark// See the file COPYING for copying permission.#include "splib.h"#include "DescriptorManager.h"#include "ListIter.h"#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifDescriptorUser::DescriptorUser(DescriptorManager *manager): manager_(manager){ if (manager_) manager_->addUser(this);}DescriptorUser::~DescriptorUser(){ if (manager_) manager_->removeUser(this);}void DescriptorUser::managerDeleted(){ manager_ = 0;}Boolean DescriptorUser::suspend(){ return 0;}void DescriptorUser::acquireD(){ if (manager_) manager_->acquireD();}void DescriptorUser::releaseD(){ if (manager_) manager_->releaseD();}DescriptorManager::DescriptorManager(int maxD): maxD_(maxD), usedD_(0){}DescriptorManager::~DescriptorManager(){ for (ListIter<DescriptorUser *> iter(users_); !iter.done(); iter.next()) iter.cur()->managerDeleted();}void DescriptorManager::addUser(DescriptorUser *p){ users_.insert(p);}void DescriptorManager::removeUser(DescriptorUser *p){ users_.remove(p);}void DescriptorManager::acquireD(){ if (usedD_ >= maxD_) { for (ListIter<DescriptorUser *> iter(users_); !iter.done(); iter.next()) { if (iter.cur()->suspend()) break; } } usedD_++;}void DescriptorManager::releaseD(){ usedD_--;}#ifdef SP_NAMESPACE}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -