diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp index b7a487d1c2..2b5caef115 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp @@ -58,7 +58,7 @@ our_image(image_info& image) int netmaskbitcount(const char* buf) { - return(__builtin_popcount(inet_addr(buf))); + return(PopCount(inet_addr(buf))); } @@ -233,10 +233,10 @@ InterfaceListItem::_Init() void InterfaceListItem::_PopulateBitmaps(const char* mediaType) { - const uint8* HVIFInterfaceIcon; - const uint8* HVIFOffline; - const uint8* HVIFPending; - const uint8* HVIFOnline; + const uint8* interfaceHVIF; + const uint8* offlineHVIF; + const uint8* pendingHVIF; + const uint8* onlineHVIF; BBitmap* interfaceBitmap = NULL; @@ -257,22 +257,22 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) { size_t iconSize; // Try specific interface icon? - HVIFInterfaceIcon = (const uint8*)addonResources.LoadResource( + interfaceHVIF = (const uint8*)addonResources.LoadResource( B_VECTOR_ICON_TYPE, Name(), &iconSize); - if (HVIFInterfaceIcon == NULL && mediaType != NULL) + if (interfaceHVIF == NULL && mediaType != NULL) // Not found, try interface media type? - HVIFInterfaceIcon = (const uint8*)addonResources.LoadResource( + interfaceHVIF = (const uint8*)addonResources.LoadResource( B_VECTOR_ICON_TYPE, mediaType, &iconSize); - if (HVIFInterfaceIcon == NULL) + if (interfaceHVIF == NULL) // Not found, try default interface icon? - HVIFInterfaceIcon = (const uint8*)addonResources.LoadResource( + interfaceHVIF = (const uint8*)addonResources.LoadResource( B_VECTOR_ICON_TYPE, "ether", &iconSize); - if (HVIFInterfaceIcon) { + if (interfaceHVIF) { // Now build the bitmap interfaceBitmap = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); - if (BIconUtils::GetVectorIcon(HVIFInterfaceIcon, + if (BIconUtils::GetVectorIcon(interfaceHVIF, iconSize, interfaceBitmap) == B_OK) fIcon = interfaceBitmap; else @@ -280,28 +280,28 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) { } // Load possible state icons - HVIFOffline = (const uint8*)addonResources.LoadResource( + offlineHVIF = (const uint8*)addonResources.LoadResource( B_VECTOR_ICON_TYPE, "offline", &iconSize); - if (HVIFOffline) { + if (offlineHVIF) { fIconOffline = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); - BIconUtils::GetVectorIcon(HVIFOffline, iconSize, fIconOffline); + BIconUtils::GetVectorIcon(offlineHVIF, iconSize, fIconOffline); } - HVIFPending = (const uint8*)addonResources.LoadResource( + pendingHVIF = (const uint8*)addonResources.LoadResource( B_VECTOR_ICON_TYPE, "pending", &iconSize); - if (HVIFPending) { + if (pendingHVIF) { fIconPending = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); - BIconUtils::GetVectorIcon(HVIFPending, iconSize, fIconPending); + BIconUtils::GetVectorIcon(pendingHVIF, iconSize, fIconPending); } - HVIFOnline = (const uint8*)addonResources.LoadResource( + onlineHVIF = (const uint8*)addonResources.LoadResource( B_VECTOR_ICON_TYPE, "online", &iconSize); - if (HVIFOnline) { + if (onlineHVIF) { fIconOnline = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); - BIconUtils::GetVectorIcon(HVIFOnline, iconSize, fIconOnline); + BIconUtils::GetVectorIcon(onlineHVIF, iconSize, fIconOnline); } diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h index d1ff132e70..197b677b6a 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h @@ -27,6 +27,26 @@ #include "Settings.h" +/* GCC 3.4 and onward have a built-in "population count" + * feature that takes advantage of a cpu instruction + */ +// TODO : remove when access to BNetworkAddress is complete +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# define PopCount(buffer) __builtin_popcount(buffer) +#else + /* On < GCC 3.4 we do it the old fashon way */ + int PopCount(unsigned buf) + { + buf = buf - ((buf >> 1) & 0x55555555); + buf = (buf & 0x33333333) + ((buf >> 2) & 0x33333333); + buf = (buf + (buf >> 4)) & 0x0F0F0F0F; + buf = buf + (buf >> 8); + buf = buf + (buf >> 16); + return buf & 0x0000003F; + } +#endif + + int netmaskbitcount(const char* buf);