Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Side by Side Diff: third_party/WebKit/Source/wtf/ArrayBufferBuilder.cpp

Issue 1436153002: Apply clang-format with Chromium-style without column limit. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 21 matching lines...) Expand all
32 #include "wtf/ArrayBufferBuilder.h" 32 #include "wtf/ArrayBufferBuilder.h"
33 33
34 #include "wtf/Assertions.h" 34 #include "wtf/Assertions.h"
35 #include <limits> 35 #include <limits>
36 36
37 namespace WTF { 37 namespace WTF {
38 38
39 static const int defaultBufferCapacity = 32768; 39 static const int defaultBufferCapacity = 32768;
40 40
41 ArrayBufferBuilder::ArrayBufferBuilder() 41 ArrayBufferBuilder::ArrayBufferBuilder()
42 : m_bytesUsed(0) 42 : m_bytesUsed(0), m_variableCapacity(true) {
43 , m_variableCapacity(true) 43 m_buffer = ArrayBuffer::create(defaultBufferCapacity, 1);
44 {
45 m_buffer = ArrayBuffer::create(defaultBufferCapacity, 1);
46 } 44 }
47 45
48 bool ArrayBufferBuilder::expandCapacity(unsigned sizeToIncrease) 46 bool ArrayBufferBuilder::expandCapacity(unsigned sizeToIncrease) {
49 { 47 unsigned currentBufferSize = m_buffer->byteLength();
50 unsigned currentBufferSize = m_buffer->byteLength();
51 48
52 // If the size of the buffer exceeds max of unsigned, it can't be grown any 49 // If the size of the buffer exceeds max of unsigned, it can't be grown any
53 // more. 50 // more.
54 if (sizeToIncrease > std::numeric_limits<unsigned>::max() - m_bytesUsed) 51 if (sizeToIncrease > std::numeric_limits<unsigned>::max() - m_bytesUsed)
55 return false; 52 return false;
56 53
57 unsigned newBufferSize = m_bytesUsed + sizeToIncrease; 54 unsigned newBufferSize = m_bytesUsed + sizeToIncrease;
58 55
59 // Grow exponentially if possible. 56 // Grow exponentially if possible.
60 unsigned exponentialGrowthNewBufferSize = std::numeric_limits<unsigned>::max (); 57 unsigned exponentialGrowthNewBufferSize = std::numeric_limits<unsigned>::max() ;
61 if (currentBufferSize <= std::numeric_limits<unsigned>::max() / 2) 58 if (currentBufferSize <= std::numeric_limits<unsigned>::max() / 2)
62 exponentialGrowthNewBufferSize = currentBufferSize * 2; 59 exponentialGrowthNewBufferSize = currentBufferSize * 2;
63 if (exponentialGrowthNewBufferSize > newBufferSize) 60 if (exponentialGrowthNewBufferSize > newBufferSize)
64 newBufferSize = exponentialGrowthNewBufferSize; 61 newBufferSize = exponentialGrowthNewBufferSize;
65 62
66 // Copy existing data in current buffer to new buffer. 63 // Copy existing data in current buffer to new buffer.
67 RefPtr<ArrayBuffer> newBuffer = ArrayBuffer::create(newBufferSize, 1); 64 RefPtr<ArrayBuffer> newBuffer = ArrayBuffer::create(newBufferSize, 1);
68 if (!newBuffer) 65 if (!newBuffer)
69 return false; 66 return false;
70 67
71 memcpy(newBuffer->data(), m_buffer->data(), m_bytesUsed); 68 memcpy(newBuffer->data(), m_buffer->data(), m_bytesUsed);
72 m_buffer = newBuffer; 69 m_buffer = newBuffer;
73 return true; 70 return true;
74 } 71 }
75 72
76 unsigned ArrayBufferBuilder::append(const char* data, unsigned length) 73 unsigned ArrayBufferBuilder::append(const char* data, unsigned length) {
77 { 74 ASSERT(length > 0);
78 ASSERT(length > 0);
79 75
80 unsigned currentBufferSize = m_buffer->byteLength(); 76 unsigned currentBufferSize = m_buffer->byteLength();
81 77
82 ASSERT(m_bytesUsed <= currentBufferSize); 78 ASSERT(m_bytesUsed <= currentBufferSize);
83 79
84 unsigned remainingBufferSpace = currentBufferSize - m_bytesUsed; 80 unsigned remainingBufferSpace = currentBufferSize - m_bytesUsed;
85 81
86 unsigned bytesToSave = length; 82 unsigned bytesToSave = length;
87 83
88 if (length > remainingBufferSpace) { 84 if (length > remainingBufferSpace) {
89 if (m_variableCapacity) { 85 if (m_variableCapacity) {
90 if (!expandCapacity(length)) 86 if (!expandCapacity(length))
91 return 0; 87 return 0;
92 } else { 88 } else {
93 bytesToSave = remainingBufferSpace; 89 bytesToSave = remainingBufferSpace;
94 }
95 } 90 }
91 }
96 92
97 memcpy(static_cast<char*>(m_buffer->data()) + m_bytesUsed, data, bytesToSave ); 93 memcpy(static_cast<char*>(m_buffer->data()) + m_bytesUsed, data, bytesToSave);
98 m_bytesUsed += bytesToSave; 94 m_bytesUsed += bytesToSave;
99 95
100 return bytesToSave; 96 return bytesToSave;
101 } 97 }
102 98
103 PassRefPtr<ArrayBuffer> ArrayBufferBuilder::toArrayBuffer() 99 PassRefPtr<ArrayBuffer> ArrayBufferBuilder::toArrayBuffer() {
104 { 100 // Fully used. Return m_buffer as-is.
105 // Fully used. Return m_buffer as-is. 101 if (m_buffer->byteLength() == m_bytesUsed)
106 if (m_buffer->byteLength() == m_bytesUsed) 102 return m_buffer;
107 return m_buffer;
108 103
109 return m_buffer->slice(0, m_bytesUsed); 104 return m_buffer->slice(0, m_bytesUsed);
110 } 105 }
111 106
112 String ArrayBufferBuilder::toString() 107 String ArrayBufferBuilder::toString() {
113 { 108 return String(static_cast<const char*>(m_buffer->data()), m_bytesUsed);
114 return String(static_cast<const char*>(m_buffer->data()), m_bytesUsed);
115 } 109 }
116 110
117 void ArrayBufferBuilder::shrinkToFit() 111 void ArrayBufferBuilder::shrinkToFit() {
118 { 112 ASSERT(m_bytesUsed <= m_buffer->byteLength());
119 ASSERT(m_bytesUsed <= m_buffer->byteLength());
120 113
121 if (m_buffer->byteLength() > m_bytesUsed) 114 if (m_buffer->byteLength() > m_bytesUsed)
122 m_buffer = m_buffer->slice(0, m_bytesUsed); 115 m_buffer = m_buffer->slice(0, m_bytesUsed);
123 } 116 }
124 117
125 } // namespace WTF 118 } // namespace WTF
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/ArrayBufferBuilder.h ('k') | third_party/WebKit/Source/wtf/ArrayBufferBuilderTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698