mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 09:48:05 +03:00
f0d99a2e09
Summary: The linters complain about this now, so let's format everything. Reviewed By: ryanmce Differential Revision: D7057989 fbshipit-source-id: 987ad0dcaa2f4e8fb74b3aa19c496f378765a533
49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
// pythonkeyiterator.h - c++ implementation of python key iterator
|
|
//
|
|
// Copyright 2017 Facebook, Inc.
|
|
//
|
|
// This software may be used and distributed according to the terms of the
|
|
// GNU General Public License version 2 or any later version.
|
|
//
|
|
// no-check-code
|
|
|
|
#ifndef FBHGEXT_PYTHONKEYITERATOR_H
|
|
#define FBHGEXT_PYTHONKEYITERATOR_H
|
|
|
|
#include "hgext/extlib/cstore/pythonutil.h"
|
|
|
|
class PythonKeyIterator : public KeyIterator
|
|
{
|
|
private:
|
|
PythonObj _input;
|
|
Key _current;
|
|
|
|
public:
|
|
PythonKeyIterator(PythonObj input) : _input(input)
|
|
{
|
|
}
|
|
|
|
Key *next()
|
|
{
|
|
PyObject *item;
|
|
while ((item = PyIter_Next((PyObject *)_input)) != NULL) {
|
|
PythonObj itemObj(item);
|
|
|
|
char *name;
|
|
Py_ssize_t namelen;
|
|
char *node;
|
|
Py_ssize_t nodelen;
|
|
if (!PyArg_ParseTuple(item, "s#s#", &name, &namelen, &node, &nodelen)) {
|
|
throw pyexception();
|
|
}
|
|
|
|
_current = Key(name, namelen, node, nodelen);
|
|
return &_current;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
};
|
|
|
|
#endif // FBHGEXT_PYTHONKEYITERATOR_H
|