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

Unified Diff: swig/Lib/std/std_carray.swg

Issue 553095: Checkin swig binaries for win, linux and Mac... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: '' Created 10 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « swig/Lib/std/std_basic_string.i ('k') | swig/Lib/std/std_char_traits.i » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: swig/Lib/std/std_carray.swg
===================================================================
--- swig/Lib/std/std_carray.swg (revision 0)
+++ swig/Lib/std/std_carray.swg (revision 0)
@@ -0,0 +1,64 @@
+%{
+#include <algorithm>
+%}
+
+//
+// std::carray - is really an extension to the 'std' namespace.
+//
+// A simple fix C array wrapper, more or less as presented in
+//
+// "The C++ Standarf Library", by Nicolai M. Josuttis
+//
+// which is also derived from the example in
+//
+// "The C++ Programming Language", by Bjarne Stroustup.
+//
+
+%inline %{
+namespace std {
+ template <class _Type, size_t _Size>
+ class carray
+ {
+ public:
+ typedef _Type value_type;
+ typedef size_t size_type;
+
+ typedef _Type * iterator;
+ typedef const _Type * const_iterator;
+
+ carray() { }
+
+ carray(const carray& c) {
+ std::copy(c.v, c.v + size(), v);
+ }
+
+ template <class _Iterator>
+ carray(_Iterator first, _Iterator last) {
+ assign(first, last);
+ }
+
+ iterator begin() { return v; }
+ iterator end() { return v + _Size; }
+
+ const_iterator begin() const { return v; }
+ const_iterator end() const { return v + _Size; }
+
+ _Type& operator[](size_t i) { return v[i]; }
+ const _Type& operator[](size_t i) const { return v[i]; }
+
+ static size_t size() { return _Size; }
+
+ template <class _Iterator>
+ void assign(_Iterator first, _Iterator last) {
+ if (std::distance(first,last) == size()) {
+ std::copy(first, last, v);
+ } else {
+ throw std::length_error("bad range length");
+ }
+ }
+
+ private:
+ _Type v[_Size];
+ };
+}
+%}
« no previous file with comments | « swig/Lib/std/std_basic_string.i ('k') | swig/Lib/std/std_char_traits.i » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698