Convert the few remaining ARRAYSIZE_UNSAFE -> arraysize.
There are still ARRAYSIZE_UNSAFEs in ppapi/tests/test_audio.cc, but it defines it itself, and it might be compiled by some older NaCl toolchain that doesn't support C++11. third_party/npapi/npspy/common/format.cpp also has its own ARRAYSIZE_UNSAFE, but I'm hoping to delete npspy completely.) I'll remove ARRAYSIZE_UNSAFE from base/macro.h separately, since it's quite likely we have deps that use our base (and those deps may use it). R=ben@chromium.org TBR=armansito@chromium.org BUG=423134 Review URL: https://codereview.chromium.org/663673002 Cr-Commit-Position: refs/heads/master@{#300034}
This commit is contained in:
android_webview/browser
chromeos/network
crypto
device
gin
google_apis/drive
mojo/examples/window_manager
third_party/cld/base
tools/gn
@@ -273,7 +273,7 @@ ScopedAppGLStateRestoreImpl::ScopedAppGLStateRestoreImpl(
|
|||||||
glBindVertexArrayOES(0);
|
glBindVertexArrayOES(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(vertex_attrib_); ++i) {
|
for (size_t i = 0; i < arraysize(vertex_attrib_); ++i) {
|
||||||
glGetVertexAttribiv(
|
glGetVertexAttribiv(
|
||||||
i, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &vertex_attrib_[i].enabled);
|
i, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &vertex_attrib_[i].enabled);
|
||||||
glGetVertexAttribiv(
|
glGetVertexAttribiv(
|
||||||
@@ -309,7 +309,7 @@ ScopedAppGLStateRestoreImpl::~ScopedAppGLStateRestoreImpl() {
|
|||||||
if (g_supports_oes_vertex_array_object)
|
if (g_supports_oes_vertex_array_object)
|
||||||
glBindVertexArrayOES(0);
|
glBindVertexArrayOES(0);
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(vertex_attrib_); ++i) {
|
for (size_t i = 0; i < arraysize(vertex_attrib_); ++i) {
|
||||||
glBindBuffer(GL_ARRAY_BUFFER,
|
glBindBuffer(GL_ARRAY_BUFFER,
|
||||||
vertex_attrib_[i].vertex_attrib_array_buffer_binding);
|
vertex_attrib_[i].vertex_attrib_array_buffer_binding);
|
||||||
glVertexAttribPointer(i,
|
glVertexAttribPointer(i,
|
||||||
|
@@ -210,7 +210,7 @@ class NetworkCertMigrator::MigrationTask
|
|||||||
shill::kOpenVPNCaCertPemProperty, UMA_NETWORK_TYPE_OPENVPN },
|
shill::kOpenVPNCaCertPemProperty, UMA_NETWORK_TYPE_OPENVPN },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kNssPemMap); ++i) {
|
for (size_t i = 0; i < arraysize(kNssPemMap); ++i) {
|
||||||
const base::DictionaryValue* dict = &shill_properties;
|
const base::DictionaryValue* dict = &shill_properties;
|
||||||
if (kNssPemMap[i].read_prefix) {
|
if (kNssPemMap[i].read_prefix) {
|
||||||
shill_properties.GetDictionaryWithoutPathExpansion(
|
shill_properties.GetDictionaryWithoutPathExpansion(
|
||||||
|
@@ -92,7 +92,7 @@ TEST(NetworkChangeNotifierChromeosTest, ConnectionTypeFromShill) {
|
|||||||
NetworkChangeNotifier::CONNECTION_2G }
|
NetworkChangeNotifier::CONNECTION_2G }
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(type_mappings); ++i) {
|
for (size_t i = 0; i < arraysize(type_mappings); ++i) {
|
||||||
NetworkChangeNotifier::ConnectionType type =
|
NetworkChangeNotifier::ConnectionType type =
|
||||||
NetworkChangeNotifierChromeos::ConnectionTypeFromShill(
|
NetworkChangeNotifierChromeos::ConnectionTypeFromShill(
|
||||||
type_mappings[i].shill_type, type_mappings[i].technology);
|
type_mappings[i].shill_type, type_mappings[i].technology);
|
||||||
|
@@ -142,7 +142,7 @@ TEST(HMACTest, RFC2202TestCases) {
|
|||||||
"\xBB\xFF\x1A\x91" }
|
"\xBB\xFF\x1A\x91" }
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
|
for (size_t i = 0; i < arraysize(cases); ++i) {
|
||||||
crypto::HMAC hmac(crypto::HMAC::SHA1);
|
crypto::HMAC hmac(crypto::HMAC::SHA1);
|
||||||
ASSERT_TRUE(hmac.Init(reinterpret_cast<const unsigned char*>(cases[i].key),
|
ASSERT_TRUE(hmac.Init(reinterpret_cast<const unsigned char*>(cases[i].key),
|
||||||
cases[i].key_len));
|
cases[i].key_len));
|
||||||
@@ -239,7 +239,7 @@ TEST(HMACTest, HMACObjectReuse) {
|
|||||||
ASSERT_TRUE(
|
ASSERT_TRUE(
|
||||||
hmac.Init(reinterpret_cast<const unsigned char*>(kSimpleKey),
|
hmac.Init(reinterpret_cast<const unsigned char*>(kSimpleKey),
|
||||||
kSimpleKeyLength));
|
kSimpleKeyLength));
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kSimpleHmacCases); ++i) {
|
for (size_t i = 0; i < arraysize(kSimpleHmacCases); ++i) {
|
||||||
std::string data_string(kSimpleHmacCases[i].data,
|
std::string data_string(kSimpleHmacCases[i].data,
|
||||||
kSimpleHmacCases[i].data_len);
|
kSimpleHmacCases[i].data_len);
|
||||||
unsigned char digest[kSHA1DigestSize];
|
unsigned char digest[kSHA1DigestSize];
|
||||||
@@ -254,7 +254,7 @@ TEST(HMACTest, Verify) {
|
|||||||
hmac.Init(reinterpret_cast<const unsigned char*>(kSimpleKey),
|
hmac.Init(reinterpret_cast<const unsigned char*>(kSimpleKey),
|
||||||
kSimpleKeyLength));
|
kSimpleKeyLength));
|
||||||
const char empty_digest[kSHA1DigestSize] = { 0 };
|
const char empty_digest[kSHA1DigestSize] = { 0 };
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kSimpleHmacCases); ++i) {
|
for (size_t i = 0; i < arraysize(kSimpleHmacCases); ++i) {
|
||||||
// Expected results
|
// Expected results
|
||||||
EXPECT_TRUE(hmac.Verify(
|
EXPECT_TRUE(hmac.Verify(
|
||||||
base::StringPiece(kSimpleHmacCases[i].data,
|
base::StringPiece(kSimpleHmacCases[i].data,
|
||||||
|
@@ -95,7 +95,7 @@ TEST(BluetoothUUIDTest, BluetoothUUID_CaseInsensitive) {
|
|||||||
{ "00001aBc-0000-1000-8000-00805F9b34fB", k128Bit },
|
{ "00001aBc-0000-1000-8000-00805F9b34fB", k128Bit },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
|
for (size_t i = 0; i < arraysize(test_cases); ++i) {
|
||||||
SCOPED_TRACE("Input UUID: " + test_cases[i].input_uuid);
|
SCOPED_TRACE("Input UUID: " + test_cases[i].input_uuid);
|
||||||
BluetoothUUID uuid(test_cases[i].input_uuid);
|
BluetoothUUID uuid(test_cases[i].input_uuid);
|
||||||
EXPECT_TRUE(uuid.IsValid());
|
EXPECT_TRUE(uuid.IsValid());
|
||||||
|
@@ -356,7 +356,7 @@ TEST_F(HidReportDescriptorTest, ValidateDetails_Digitizer) {
|
|||||||
digitizer.report_ids.insert(3);
|
digitizer.report_ids.insert(3);
|
||||||
HidCollectionInfo expected[] = {digitizer};
|
HidCollectionInfo expected[] = {digitizer};
|
||||||
ValidateDetails(std::vector<HidCollectionInfo>(
|
ValidateDetails(std::vector<HidCollectionInfo>(
|
||||||
expected, expected + ARRAYSIZE_UNSAFE(expected)),
|
expected, expected + arraysize(expected)),
|
||||||
true,
|
true,
|
||||||
6,
|
6,
|
||||||
0,
|
0,
|
||||||
@@ -370,7 +370,7 @@ TEST_F(HidReportDescriptorTest, ValidateDetails_Keyboard) {
|
|||||||
keyboard.usage = HidUsageAndPage(0x06, HidUsageAndPage::kPageGenericDesktop);
|
keyboard.usage = HidUsageAndPage(0x06, HidUsageAndPage::kPageGenericDesktop);
|
||||||
HidCollectionInfo expected[] = {keyboard};
|
HidCollectionInfo expected[] = {keyboard};
|
||||||
ValidateDetails(std::vector<HidCollectionInfo>(
|
ValidateDetails(std::vector<HidCollectionInfo>(
|
||||||
expected, expected + ARRAYSIZE_UNSAFE(expected)),
|
expected, expected + arraysize(expected)),
|
||||||
false,
|
false,
|
||||||
8,
|
8,
|
||||||
1,
|
1,
|
||||||
@@ -389,7 +389,7 @@ TEST_F(HidReportDescriptorTest, ValidateDetails_Monitor) {
|
|||||||
monitor.report_ids.insert(5);
|
monitor.report_ids.insert(5);
|
||||||
HidCollectionInfo expected[] = {monitor};
|
HidCollectionInfo expected[] = {monitor};
|
||||||
ValidateDetails(std::vector<HidCollectionInfo>(
|
ValidateDetails(std::vector<HidCollectionInfo>(
|
||||||
expected, expected + ARRAYSIZE_UNSAFE(expected)),
|
expected, expected + arraysize(expected)),
|
||||||
true,
|
true,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
@@ -403,7 +403,7 @@ TEST_F(HidReportDescriptorTest, ValidateDetails_Mouse) {
|
|||||||
mouse.usage = HidUsageAndPage(0x02, HidUsageAndPage::kPageGenericDesktop);
|
mouse.usage = HidUsageAndPage(0x02, HidUsageAndPage::kPageGenericDesktop);
|
||||||
HidCollectionInfo expected[] = {mouse};
|
HidCollectionInfo expected[] = {mouse};
|
||||||
ValidateDetails(std::vector<HidCollectionInfo>(
|
ValidateDetails(std::vector<HidCollectionInfo>(
|
||||||
expected, expected + ARRAYSIZE_UNSAFE(expected)),
|
expected, expected + arraysize(expected)),
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
0,
|
0,
|
||||||
@@ -426,7 +426,7 @@ TEST_F(HidReportDescriptorTest, ValidateDetails_LogitechUnifyingReceiver) {
|
|||||||
|
|
||||||
HidCollectionInfo expected[] = {hidpp_short, hidpp_long, hidpp_dj};
|
HidCollectionInfo expected[] = {hidpp_short, hidpp_long, hidpp_dj};
|
||||||
ValidateDetails(std::vector<HidCollectionInfo>(
|
ValidateDetails(std::vector<HidCollectionInfo>(
|
||||||
expected, expected + ARRAYSIZE_UNSAFE(expected)),
|
expected, expected + arraysize(expected)),
|
||||||
true,
|
true,
|
||||||
31,
|
31,
|
||||||
31,
|
31,
|
||||||
|
@@ -55,7 +55,7 @@ TEST_F(ConverterTest, Bool) {
|
|||||||
{ Undefined(instance_->isolate()).As<Value>(), false },
|
{ Undefined(instance_->isolate()).As<Value>(), false },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
|
for (size_t i = 0; i < arraysize(test_data); ++i) {
|
||||||
bool result = false;
|
bool result = false;
|
||||||
EXPECT_TRUE(Converter<bool>::FromV8(instance_->isolate(),
|
EXPECT_TRUE(Converter<bool>::FromV8(instance_->isolate(),
|
||||||
test_data[i].input, &result));
|
test_data[i].input, &result));
|
||||||
@@ -72,7 +72,7 @@ TEST_F(ConverterTest, Int32) {
|
|||||||
HandleScope handle_scope(instance_->isolate());
|
HandleScope handle_scope(instance_->isolate());
|
||||||
|
|
||||||
int test_data_to[] = {-1, 0, 1};
|
int test_data_to[] = {-1, 0, 1};
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data_to); ++i) {
|
for (size_t i = 0; i < arraysize(test_data_to); ++i) {
|
||||||
EXPECT_TRUE(Converter<int32_t>::ToV8(instance_->isolate(), test_data_to[i])
|
EXPECT_TRUE(Converter<int32_t>::ToV8(instance_->isolate(), test_data_to[i])
|
||||||
->StrictEquals(
|
->StrictEquals(
|
||||||
Integer::New(instance_->isolate(), test_data_to[i])));
|
Integer::New(instance_->isolate(), test_data_to[i])));
|
||||||
@@ -98,7 +98,7 @@ TEST_F(ConverterTest, Int32) {
|
|||||||
{ v8::Undefined(instance_->isolate()).As<Value>(), false, 0 },
|
{ v8::Undefined(instance_->isolate()).As<Value>(), false, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data_from); ++i) {
|
for (size_t i = 0; i < arraysize(test_data_from); ++i) {
|
||||||
int32_t result = std::numeric_limits<int32_t>::min();
|
int32_t result = std::numeric_limits<int32_t>::min();
|
||||||
bool success = Converter<int32_t>::FromV8(instance_->isolate(),
|
bool success = Converter<int32_t>::FromV8(instance_->isolate(),
|
||||||
test_data_from[i].input, &result);
|
test_data_from[i].input, &result);
|
||||||
|
@@ -97,7 +97,7 @@ TEST_F(DriveApiUrlGeneratorTest, GetFilePatchUrl) {
|
|||||||
{ true, false, "?setModifiedDate=true&updateViewedDate=false" },
|
{ true, false, "?setModifiedDate=true&updateViewedDate=false" },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
|
for (size_t i = 0; i < arraysize(kTestPatterns); ++i) {
|
||||||
EXPECT_EQ(
|
EXPECT_EQ(
|
||||||
"https://www.googleapis.com/drive/v2/files/0ADK06pfg" +
|
"https://www.googleapis.com/drive/v2/files/0ADK06pfg" +
|
||||||
kTestPatterns[i].expected_query,
|
kTestPatterns[i].expected_query,
|
||||||
@@ -188,7 +188,7 @@ TEST_F(DriveApiUrlGeneratorTest, GetFilesListUrl) {
|
|||||||
{ 10, "token", "query", "?maxResults=10&pageToken=token&q=query" },
|
{ 10, "token", "query", "?maxResults=10&pageToken=token&q=query" },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
|
for (size_t i = 0; i < arraysize(kTestPatterns); ++i) {
|
||||||
EXPECT_EQ(
|
EXPECT_EQ(
|
||||||
"https://www.googleapis.com/drive/v2/files" +
|
"https://www.googleapis.com/drive/v2/files" +
|
||||||
kTestPatterns[i].expected_query,
|
kTestPatterns[i].expected_query,
|
||||||
@@ -288,7 +288,7 @@ TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) {
|
|||||||
"&startChangeId=12345" },
|
"&startChangeId=12345" },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
|
for (size_t i = 0; i < arraysize(kTestPatterns); ++i) {
|
||||||
EXPECT_EQ(
|
EXPECT_EQ(
|
||||||
"https://www.googleapis.com/drive/v2/changes" +
|
"https://www.googleapis.com/drive/v2/changes" +
|
||||||
kTestPatterns[i].expected_query,
|
kTestPatterns[i].expected_query,
|
||||||
|
@@ -99,7 +99,7 @@ void DebugPanel::Layout(views::View* view) {
|
|||||||
navigation_target_new_,
|
navigation_target_new_,
|
||||||
navigation_target_source_,
|
navigation_target_source_,
|
||||||
};
|
};
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(radios); ++i) {
|
for (size_t i = 0; i < arraysize(radios); ++i) {
|
||||||
radios[i]->SetBounds(kControlBorderInset, y, w,
|
radios[i]->SetBounds(kControlBorderInset, y, w,
|
||||||
radios[i]->GetPreferredSize().height());
|
radios[i]->GetPreferredSize().height());
|
||||||
y += radios[i]->height();
|
y += radios[i]->height();
|
||||||
@@ -111,7 +111,7 @@ void DebugPanel::Layout(views::View* view) {
|
|||||||
close_last_,
|
close_last_,
|
||||||
cross_app_,
|
cross_app_,
|
||||||
};
|
};
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(buttons); ++i) {
|
for (size_t i = 0; i < arraysize(buttons); ++i) {
|
||||||
buttons[i]->SetBounds(kControlBorderInset, y, w,
|
buttons[i]->SetBounds(kControlBorderInset, y, w,
|
||||||
buttons[i]->GetPreferredSize().height());
|
buttons[i]->GetPreferredSize().height());
|
||||||
y += buttons[i]->height();
|
y += buttons[i]->height();
|
||||||
|
49
third_party/cld/base/basictypes.h
vendored
49
third_party/cld/base/basictypes.h
vendored
@@ -98,12 +98,6 @@ const int64 kint64max = (( int64) GG_LONGLONG(0x7FFFFFFFFFFFFFFF));
|
|||||||
// The expression is a compile-time constant, and therefore can be
|
// The expression is a compile-time constant, and therefore can be
|
||||||
// used in defining new arrays, for example. If you use arraysize on
|
// used in defining new arrays, for example. If you use arraysize on
|
||||||
// a pointer by mistake, you will get a compile-time error.
|
// a pointer by mistake, you will get a compile-time error.
|
||||||
//
|
|
||||||
// One caveat is that arraysize() doesn't accept any array of an
|
|
||||||
// anonymous type or a type defined inside a function. In these rare
|
|
||||||
// cases, you have to use the unsafe ARRAYSIZE_UNSAFE() macro below. This is
|
|
||||||
// due to a limitation in C++'s template system. The limitation might
|
|
||||||
// eventually be removed, but it hasn't happened yet.
|
|
||||||
|
|
||||||
// This template function declaration is used in defining arraysize.
|
// This template function declaration is used in defining arraysize.
|
||||||
// Note that the function doesn't need an implementation, as we only
|
// Note that the function doesn't need an implementation, as we only
|
||||||
@@ -121,47 +115,6 @@ char (&ArraySizeHelper(const T (&array)[N]))[N];
|
|||||||
|
|
||||||
#define arraysize(array) (sizeof(ArraySizeHelper(array)))
|
#define arraysize(array) (sizeof(ArraySizeHelper(array)))
|
||||||
|
|
||||||
// ARRAYSIZE_UNSAFE performs essentially the same calculation as arraysize,
|
|
||||||
// but can be used on anonymous types or types defined inside
|
|
||||||
// functions. It's less safe than arraysize as it accepts some
|
|
||||||
// (although not all) pointers. Therefore, you should use arraysize
|
|
||||||
// whenever possible.
|
|
||||||
//
|
|
||||||
// The expression ARRAYSIZE_UNSAFE(a) is a compile-time constant of type
|
|
||||||
// size_t.
|
|
||||||
//
|
|
||||||
// ARRAYSIZE_UNSAFE catches a few type errors. If you see a compiler error
|
|
||||||
//
|
|
||||||
// "warning: division by zero in ..."
|
|
||||||
//
|
|
||||||
// when using ARRAYSIZE_UNSAFE, you are (wrongfully) giving it a pointer.
|
|
||||||
// You should only use ARRAYSIZE_UNSAFE on statically allocated arrays.
|
|
||||||
//
|
|
||||||
// The following comments are on the implementation details, and can
|
|
||||||
// be ignored by the users.
|
|
||||||
//
|
|
||||||
// ARRAYSIZE_UNSAFE(arr) works by inspecting sizeof(arr) (the # of bytes in
|
|
||||||
// the array) and sizeof(*(arr)) (the # of bytes in one array
|
|
||||||
// element). If the former is divisible by the latter, perhaps arr is
|
|
||||||
// indeed an array, in which case the division result is the # of
|
|
||||||
// elements in the array. Otherwise, arr cannot possibly be an array,
|
|
||||||
// and we generate a compiler error to prevent the code from
|
|
||||||
// compiling.
|
|
||||||
//
|
|
||||||
// Since the size of bool is implementation-defined, we need to cast
|
|
||||||
// !(sizeof(a) & sizeof(*(a))) to size_t in order to ensure the final
|
|
||||||
// result has type size_t.
|
|
||||||
//
|
|
||||||
// This macro is not perfect as it wrongfully accepts certain
|
|
||||||
// pointers, namely where the pointer size is divisible by the pointee
|
|
||||||
// size. Since all our code has to go through a 32-bit compiler,
|
|
||||||
// where a pointer is 4 bytes, this means all pointers to a type whose
|
|
||||||
// size is 3 or greater than 4 will be (righteously) rejected.
|
|
||||||
|
|
||||||
#define ARRAYSIZE_UNSAFE(a) \
|
|
||||||
((sizeof(a) / sizeof(*(a))) / \
|
|
||||||
static_cast<size_t>(!(sizeof(a) % sizeof(*(a)))))
|
|
||||||
|
|
||||||
|
|
||||||
// Use implicit_cast as a safe version of static_cast or const_cast
|
// Use implicit_cast as a safe version of static_cast or const_cast
|
||||||
// for upcasting in the type hierarchy (i.e. casting a pointer to Foo
|
// for upcasting in the type hierarchy (i.e. casting a pointer to Foo
|
||||||
@@ -189,7 +142,7 @@ inline To implicit_cast(From const &f) {
|
|||||||
// expression is true. For example, you could use it to verify the
|
// expression is true. For example, you could use it to verify the
|
||||||
// size of a static array:
|
// size of a static array:
|
||||||
//
|
//
|
||||||
// COMPILE_ASSERT(ARRAYSIZE_UNSAFE(content_type_names) == CONTENT_NUM_TYPES,
|
// COMPILE_ASSERT(arraysize(content_type_names) == CONTENT_NUM_TYPES,
|
||||||
// content_type_names_incorrect_size);
|
// content_type_names_incorrect_size);
|
||||||
//
|
//
|
||||||
// or to make sure a struct is smaller than a certain size:
|
// or to make sure a struct is smaller than a certain size:
|
||||||
|
@@ -63,7 +63,7 @@ TEST(Label, Resolve) {
|
|||||||
|
|
||||||
Label default_toolchain(SourceDir("//t/"), "d");
|
Label default_toolchain(SourceDir("//t/"), "d");
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); i++) {
|
for (size_t i = 0; i < arraysize(cases); i++) {
|
||||||
const ParseDepStringCase& cur = cases[i];
|
const ParseDepStringCase& cur = cases[i];
|
||||||
|
|
||||||
std::string location, name;
|
std::string location, name;
|
||||||
|
Reference in New Issue
Block a user