Eliminate repeating CountItems() loop premature micro-optimization
Loop backwards if possible, if not, set a variable and use that instead.
There were a couple of instances where the loop style got changed from
for (int32 i = CountItems(); --i >= 0;)
to
for (int32 i = CountItems() - 1; i >= 0; i--) {
but should be functionally equivalent.
This commit is contained in:
@@ -663,12 +663,13 @@ TBarView::ChangeState(int32 state, bool vertical, bool left, bool top,
|
|||||||
void
|
void
|
||||||
TBarView::SaveExpandedItems()
|
TBarView::SaveExpandedItems()
|
||||||
{
|
{
|
||||||
if (fExpandoMenuBar == NULL || fExpandoMenuBar->CountItems() <= 0)
|
if (fExpandoMenuBar == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Get a list of the signatures of expanded apps. Can't use
|
// Get a list of the signatures of expanded apps. Can't use
|
||||||
// team_id because there can be more than one team per application
|
// team_id because there can be more than one team per application
|
||||||
for (int32 i = 0; i < fExpandoMenuBar->CountItems(); i++) {
|
int32 count = fExpandoMenuBar->CountItems();
|
||||||
|
for (int32 i = 0; i < count; i++) {
|
||||||
TTeamMenuItem* teamItem
|
TTeamMenuItem* teamItem
|
||||||
= dynamic_cast<TTeamMenuItem*>(fExpandoMenuBar->ItemAt(i));
|
= dynamic_cast<TTeamMenuItem*>(fExpandoMenuBar->ItemAt(i));
|
||||||
|
|
||||||
|
|||||||
@@ -731,7 +731,7 @@ TExpandoMenuBar::RemoveTeam(team_id team, bool partial)
|
|||||||
{
|
{
|
||||||
TWindowMenuItem* windowItem = NULL;
|
TWindowMenuItem* windowItem = NULL;
|
||||||
|
|
||||||
for (int32 i = 0; i < CountItems(); i++) {
|
for (int32 i = CountItems() - 1; i >= 0; i--) {
|
||||||
if (TTeamMenuItem* item = dynamic_cast<TTeamMenuItem*>(ItemAt(i))) {
|
if (TTeamMenuItem* item = dynamic_cast<TTeamMenuItem*>(ItemAt(i))) {
|
||||||
if (item->Teams()->HasItem((void*)(addr_t)team)) {
|
if (item->Teams()->HasItem((void*)(addr_t)team)) {
|
||||||
item->Teams()->RemoveItem(team);
|
item->Teams()->RemoveItem(team);
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ namespace TResourcePrivate {
|
|||||||
|
|
||||||
TypeItem* FindItemByID(int32 id)
|
TypeItem* FindItemByID(int32 id)
|
||||||
{
|
{
|
||||||
for (int32 i = 0; i < fItems.CountItems(); i++ ) {
|
for (int32 i = fItems.CountItems() - 1; i >= 0; i--) {
|
||||||
TypeItem* it = (TypeItem*)fItems.ItemAt(i);
|
TypeItem* it = (TypeItem*)fItems.ItemAt(i);
|
||||||
if (it->ID() == id)
|
if (it->ID() == id)
|
||||||
return it;
|
return it;
|
||||||
@@ -263,7 +263,7 @@ namespace TResourcePrivate {
|
|||||||
|
|
||||||
TypeItem* FindItemByName(const char* name)
|
TypeItem* FindItemByName(const char* name)
|
||||||
{
|
{
|
||||||
for (int32 i = 0; i < fItems.CountItems(); i++ ) {
|
for (int32 i = fItems.CountItems() - 1; i >= 0; i--) {
|
||||||
TypeItem* it = (TypeItem*)fItems.ItemAt(i);
|
TypeItem* it = (TypeItem*)fItems.ItemAt(i);
|
||||||
if (strcmp(it->Name(), name) == 0)
|
if (strcmp(it->Name(), name) == 0)
|
||||||
return it;
|
return it;
|
||||||
@@ -677,8 +677,7 @@ TResourceSet::FindTypeList(type_code type)
|
|||||||
{
|
{
|
||||||
BAutolock lock(&fLock);
|
BAutolock lock(&fLock);
|
||||||
|
|
||||||
int32 count = fTypes.CountItems();
|
for (int32 i = fTypes.CountItems() - 1; i >= 0; i--) {
|
||||||
for (int32 i = 0; i < count; i++ ) {
|
|
||||||
TypeList* list = (TypeList*)fTypes.ItemAt(i);
|
TypeList* list = (TypeList*)fTypes.ItemAt(i);
|
||||||
if (list && list->Type() == type)
|
if (list && list->Type() == type)
|
||||||
return list;
|
return list;
|
||||||
@@ -731,8 +730,7 @@ TResourceSet::LoadResource(type_code type, int32 id, const char* name,
|
|||||||
|
|
||||||
// If a named resource, first look in directories.
|
// If a named resource, first look in directories.
|
||||||
fLock.Lock();
|
fLock.Lock();
|
||||||
int32 count = fDirectories.CountItems();
|
for (int32 i = fDirectories.CountItems() - 1; i >= 0; i--) {
|
||||||
for (int32 i = 0; item == 0 && i < count; i++) {
|
|
||||||
BPath* dir = (BPath*)fDirectories.ItemAt(i);
|
BPath* dir = (BPath*)fDirectories.ItemAt(i);
|
||||||
if (dir) {
|
if (dir) {
|
||||||
fLock.Unlock();
|
fLock.Unlock();
|
||||||
@@ -754,8 +752,7 @@ TResourceSet::LoadResource(type_code type, int32 id, const char* name,
|
|||||||
if (!item) {
|
if (!item) {
|
||||||
// Look through resource objects for data.
|
// Look through resource objects for data.
|
||||||
fLock.Lock();
|
fLock.Lock();
|
||||||
int32 count = fResources.CountItems();
|
for (int32 i = fResources.CountItems() - 1; i >= 0; i--) {
|
||||||
for (int32 i = 0; item == 0 && i < count; i++ ) {
|
|
||||||
BResources* resource = (BResources*)fResources.ItemAt(i);
|
BResources* resource = (BResources*)fResources.ItemAt(i);
|
||||||
if (resource) {
|
if (resource) {
|
||||||
const void* data = NULL;
|
const void* data = NULL;
|
||||||
|
|||||||
@@ -113,32 +113,31 @@ TShowHideMenuItem::TeamShowHideCommon(int32 action, const BList* teamList,
|
|||||||
if (teamList == NULL)
|
if (teamList == NULL)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
int32 count = teamList->CountItems();
|
for (int32 i = teamList->CountItems() - 1; i >= 0; i--) {
|
||||||
for (int32 index = 0; index < count; index++) {
|
team_id team = (addr_t)teamList->ItemAt(i);
|
||||||
team_id team = (addr_t)teamList->ItemAt(index);
|
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case B_MINIMIZE_WINDOW:
|
case B_MINIMIZE_WINDOW:
|
||||||
do_minimize_team(zoomRect, team, doZoom && index == 0);
|
do_minimize_team(zoomRect, team, doZoom && i == 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case B_BRING_TO_FRONT:
|
case B_BRING_TO_FRONT:
|
||||||
do_bring_to_front_team(zoomRect, team, doZoom && index == 0);
|
do_bring_to_front_team(zoomRect, team, doZoom && i == 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case B_QUIT_REQUESTED:
|
case B_QUIT_REQUESTED:
|
||||||
{
|
{
|
||||||
BMessenger messenger((char*)NULL, team);
|
BMessenger messenger((char*)NULL, team);
|
||||||
uint32 command = B_QUIT_REQUESTED;
|
uint32 command = B_QUIT_REQUESTED;
|
||||||
app_info aInfo;
|
app_info aInfo;
|
||||||
be_roster->GetRunningAppInfo(team, &aInfo);
|
be_roster->GetRunningAppInfo(team, &aInfo);
|
||||||
|
|
||||||
if (strcasecmp(aInfo.signature, kTrackerSignature) == 0)
|
if (strcasecmp(aInfo.signature, kTrackerSignature) == 0)
|
||||||
command = 'Tall';
|
command = 'Tall';
|
||||||
|
|
||||||
messenger.SendMessage(command);
|
messenger.SendMessage(command);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -500,7 +500,7 @@ TReplicantTray::DeleteAddOnSupport()
|
|||||||
{
|
{
|
||||||
_SaveSettings();
|
_SaveSettings();
|
||||||
|
|
||||||
for (int32 i = fItemList->CountItems(); i-- > 0 ;) {
|
for (int32 i = fItemList->CountItems() - 1; i >= 0; i--) {
|
||||||
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->RemoveItem(i);
|
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->RemoveItem(i);
|
||||||
if (item) {
|
if (item) {
|
||||||
if (item->isAddOn)
|
if (item->isAddOn)
|
||||||
@@ -519,7 +519,7 @@ TReplicantTray::DeleteAddOnSupport()
|
|||||||
DeskbarItemInfo*
|
DeskbarItemInfo*
|
||||||
TReplicantTray::DeskbarItemFor(node_ref& nodeRef)
|
TReplicantTray::DeskbarItemFor(node_ref& nodeRef)
|
||||||
{
|
{
|
||||||
for (int32 i = fItemList->CountItems(); i-- > 0 ;) {
|
for (int32 i = fItemList->CountItems() - 1; i >= 0; i--) {
|
||||||
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
continue;
|
continue;
|
||||||
@@ -535,7 +535,7 @@ TReplicantTray::DeskbarItemFor(node_ref& nodeRef)
|
|||||||
DeskbarItemInfo*
|
DeskbarItemInfo*
|
||||||
TReplicantTray::DeskbarItemFor(int32 id)
|
TReplicantTray::DeskbarItemFor(int32 id)
|
||||||
{
|
{
|
||||||
for (int32 i = fItemList->CountItems(); i-- > 0 ;) {
|
for (int32 i = fItemList->CountItems() - 1; i >= 0; i--) {
|
||||||
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
continue;
|
continue;
|
||||||
@@ -719,7 +719,7 @@ void
|
|||||||
TReplicantTray::UnloadAddOn(node_ref* nodeRef, dev_t* device,
|
TReplicantTray::UnloadAddOn(node_ref* nodeRef, dev_t* device,
|
||||||
bool which, bool removeAll)
|
bool which, bool removeAll)
|
||||||
{
|
{
|
||||||
for (int32 i = fItemList->CountItems(); i-- > 0 ;) {
|
for (int32 i = fItemList->CountItems() - 1; i >= 0; i--) {
|
||||||
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
||||||
if (!item)
|
if (!item)
|
||||||
continue;
|
continue;
|
||||||
@@ -783,7 +783,7 @@ TReplicantTray::MoveItem(entry_ref* ref, ino_t toDirectory)
|
|||||||
//
|
//
|
||||||
// don't need to change node info as it does not change
|
// don't need to change node info as it does not change
|
||||||
|
|
||||||
for (int32 i = fItemList->CountItems(); i-- > 0 ;) {
|
for (int32 i = fItemList->CountItems() - 1; i >= 0; i--) {
|
||||||
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->ItemAt(i);
|
||||||
if (!item)
|
if (!item)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ TSwitchManager::TSwitchManager(BPoint point)
|
|||||||
|
|
||||||
TSwitchManager::~TSwitchManager()
|
TSwitchManager::~TSwitchManager()
|
||||||
{
|
{
|
||||||
for (int32 i = fGroupList.CountItems(); i-- > 0;) {
|
for (int32 i = fGroupList.CountItems() - 1; i >= 0; i--) {
|
||||||
TTeamGroup* teamInfo = static_cast<TTeamGroup*>(fGroupList.ItemAt(i));
|
TTeamGroup* teamInfo = static_cast<TTeamGroup*>(fGroupList.ItemAt(i));
|
||||||
delete teamInfo;
|
delete teamInfo;
|
||||||
}
|
}
|
||||||
@@ -551,8 +551,9 @@ TSwitchManager::MessageReceived(BMessage* message)
|
|||||||
{
|
{
|
||||||
const char* signature = message->FindString("sig");
|
const char* signature = message->FindString("sig");
|
||||||
team_id team = message->FindInt32("team");
|
team_id team = message->FindInt32("team");
|
||||||
|
int32 count = fGroupList.CountItems();
|
||||||
|
|
||||||
for (int32 i = 0; i < fGroupList.CountItems(); i++) {
|
for (int32 i = 0; i < count; i++) {
|
||||||
TTeamGroup* tinfo = (TTeamGroup*)fGroupList.ItemAt(i);
|
TTeamGroup* tinfo = (TTeamGroup*)fGroupList.ItemAt(i);
|
||||||
if (strcasecmp(tinfo->Signature(), signature) == 0) {
|
if (strcasecmp(tinfo->Signature(), signature) == 0) {
|
||||||
if (!(tinfo->TeamList()->HasItem((void*)(addr_t)team)))
|
if (!(tinfo->TeamList()->HasItem((void*)(addr_t)team)))
|
||||||
@@ -566,8 +567,9 @@ TSwitchManager::MessageReceived(BMessage* message)
|
|||||||
case kRemoveTeam:
|
case kRemoveTeam:
|
||||||
{
|
{
|
||||||
team_id team = message->FindInt32("team");
|
team_id team = message->FindInt32("team");
|
||||||
|
int32 count = fGroupList.CountItems();
|
||||||
|
|
||||||
for (int32 i = 0; i < fGroupList.CountItems(); i++) {
|
for (int32 i = 0; i < count; i++) {
|
||||||
TTeamGroup* tinfo = (TTeamGroup*)fGroupList.ItemAt(i);
|
TTeamGroup* tinfo = (TTeamGroup*)fGroupList.ItemAt(i);
|
||||||
if (tinfo->TeamList()->HasItem((void*)(addr_t)team)) {
|
if (tinfo->TeamList()->HasItem((void*)(addr_t)team)) {
|
||||||
tinfo->TeamList()->RemoveItem((void*)(addr_t)team);
|
tinfo->TeamList()->RemoveItem((void*)(addr_t)team);
|
||||||
@@ -813,14 +815,15 @@ int32
|
|||||||
TSwitchManager::CountVisibleGroups()
|
TSwitchManager::CountVisibleGroups()
|
||||||
{
|
{
|
||||||
int32 result = 0;
|
int32 result = 0;
|
||||||
|
|
||||||
int32 count = fGroupList.CountItems();
|
int32 count = fGroupList.CountItems();
|
||||||
|
|
||||||
for (int32 i = 0; i < count; i++) {
|
for (int32 i = 0; i < count; i++) {
|
||||||
if (!OKToUse((TTeamGroup*)fGroupList.ItemAt(i)))
|
if (!OKToUse((TTeamGroup*)fGroupList.ItemAt(i)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
result++;
|
result++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1047,7 +1050,8 @@ TSwitchManager::QuitApp()
|
|||||||
TTeamGroup* teamGroup;
|
TTeamGroup* teamGroup;
|
||||||
int32 count = 0;
|
int32 count = 0;
|
||||||
|
|
||||||
for (int32 i = fCurrentIndex + 1; i < fGroupList.CountItems(); i++) {
|
int32 groupCount = fGroupList.CountItems();
|
||||||
|
for (int32 i = fCurrentIndex + 1; i < groupCount; i++) {
|
||||||
teamGroup = (TTeamGroup*)fGroupList.ItemAt(i);
|
teamGroup = (TTeamGroup*)fGroupList.ItemAt(i);
|
||||||
|
|
||||||
if (!OKToUse(teamGroup))
|
if (!OKToUse(teamGroup))
|
||||||
@@ -1067,7 +1071,7 @@ TSwitchManager::QuitApp()
|
|||||||
|
|
||||||
// send the quit request to all teams in this group
|
// send the quit request to all teams in this group
|
||||||
|
|
||||||
for (int32 i = teamGroup->TeamList()->CountItems(); i-- > 0;) {
|
for (int32 i = teamGroup->TeamList()->CountItems() - 1; i >= 0; i--) {
|
||||||
team_id team = (addr_t)teamGroup->TeamList()->ItemAt(i);
|
team_id team = (addr_t)teamGroup->TeamList()->ItemAt(i);
|
||||||
app_info info;
|
app_info info;
|
||||||
if (be_roster->GetRunningAppInfo(team, &info) == B_OK) {
|
if (be_roster->GetRunningAppInfo(team, &info) == B_OK) {
|
||||||
@@ -1090,7 +1094,7 @@ TSwitchManager::HideApp()
|
|||||||
|
|
||||||
TTeamGroup* teamGroup = (TTeamGroup*)fGroupList.ItemAt(fCurrentIndex);
|
TTeamGroup* teamGroup = (TTeamGroup*)fGroupList.ItemAt(fCurrentIndex);
|
||||||
|
|
||||||
for (int32 i = teamGroup->TeamList()->CountItems(); i-- > 0;) {
|
for (int32 i = teamGroup->TeamList()->CountItems() - 1; i >= 0; i--) {
|
||||||
team_id team = (addr_t)teamGroup->TeamList()->ItemAt(i);
|
team_id team = (addr_t)teamGroup->TeamList()->ItemAt(i);
|
||||||
app_info info;
|
app_info info;
|
||||||
if (be_roster->GetRunningAppInfo(team, &info) == B_OK)
|
if (be_roster->GetRunningAppInfo(team, &info) == B_OK)
|
||||||
|
|||||||
Reference in New Issue
Block a user