~evarlast/ubuntu/utopic/mongodb/upstart-workaround-debian-bug-718702

« back to all changes in this revision

Viewing changes to src/mongo/bson/bsonobjiterator.h

  • Committer: Package Import Robot
  • Author(s): James Page, James Page, Robie Basak
  • Date: 2013-05-29 17:44:42 UTC
  • mfrom: (44.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20130529174442-z0a4qmoww4y0t458
Tags: 1:2.4.3-1ubuntu1
[ James Page ]
* Merge from Debian unstable, remaining changes:
  - Enable SSL support:
    + d/control: Add libssl-dev to BD's.
    + d/rules: Enabled --ssl option.
    + d/mongodb.conf: Add example SSL configuration options.
  - d/mongodb-server.mongodb.upstart: Add upstart configuration.
  - d/rules: Don't strip binaries during scons build for Ubuntu.
  - d/control: Add armhf to target archs.
  - d/p/SConscript.client.patch: fixup install of client libraries.
  - d/p/0010-install-libs-to-usr-lib-not-usr-lib64-Closes-588557.patch:
    Install libraries to lib not lib64.
* Dropped changes:
  - d/p/arm-support.patch: Included in Debian.
  - d/p/double-alignment.patch: Included in Debian.
  - d/rules,control: Debian also builds with avaliable system libraries
    now.
* Fix FTBFS due to gcc and boost upgrades in saucy:
  - d/p/0008-ignore-unused-local-typedefs.patch: Add -Wno-unused-typedefs
    to unbreak building with g++-4.8.
  - d/p/0009-boost-1.53.patch: Fixup signed/unsigned casting issue.

[ Robie Basak ]
* d/p/0011-Use-a-signed-char-to-store-BSONType-enumerations.patch: Fixup
  build failure on ARM due to missing signed'ness of char cast.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
        /** @return the next element in the object. For the final element, element.eoo() will be true. */
62
62
        BSONElement next( bool checkEnd ) {
63
63
            verify( _pos <= _theend );
64
 
            BSONElement e( _pos, checkEnd ? (int)(_theend + 1 - _pos) : -1 );
65
 
            _pos += e.size( checkEnd ? (int)(_theend + 1 - _pos) : -1 );
 
64
            
 
65
            int maxLen = -1;
 
66
            if ( checkEnd ) {
 
67
                maxLen = _theend + 1 - _pos;
 
68
                verify( maxLen > 0 );
 
69
            }
 
70
 
 
71
            BSONElement e( _pos, maxLen );
 
72
            int esize = e.size( maxLen );
 
73
            massert( 16446, "BSONElement has bad size", esize > 0 );
 
74
            _pos += esize;
 
75
 
66
76
            return e;
67
77
        }
68
78
        BSONElement next() {
130
140
        BSONArrayIteratorSorted( const BSONArray &array );
131
141
    };
132
142
 
133
 
    /** transform a BSON array into a vector of BSONElements.
134
 
        we match array # positions with their vector position, and ignore
135
 
        any fields with non-numeric field names.
136
 
        */
137
 
    inline std::vector<BSONElement> BSONElement::Array() const {
138
 
        chk(mongo::Array);
139
 
        std::vector<BSONElement> v;
140
 
        BSONObjIterator i(Obj());
141
 
        while( i.more() ) {
142
 
            BSONElement e = i.next();
143
 
            const char *f = e.fieldName();
144
 
            try {
145
 
                unsigned u = stringToNum(f);
146
 
                verify( u < 1000000 );
147
 
                if( u >= v.size() )
148
 
                    v.resize(u+1);
149
 
                v[u] = e;
150
 
            }
151
 
            catch(unsigned) { }
152
 
        }
153
 
        return v;
154
 
    }
155
 
 
156
143
    /** Similar to BOOST_FOREACH
157
144
     *
158
145
     *  because the iterator is defined outside of the for, you must use {} around