コード例 #1
0
def CreatePyTypeInfo(desc,
                     path,
                     package_required=True,
                     generate_service_info=False):
    """Create the type objects from the proto file descriptor in |desc|."""
    pypath = '' + path.replace('/', '.').replace('-', '_') + '_pb2'
    messages = []  # Proto messages.

    p = desc.PackageName()
    if p:
        n = '::' + p.replace('.', '::') + '::'
    else:
        if package_required:
            raise ValueError('Package statement required')
        n = '::'
    for m in desc.Messages():
        messages.append(
            types.ProtoType(_CppName(m), _PyName(m, p), pypath, ns=n))
    for e in desc.Enums():
        messages.append(types.ProtoEnumType(_CppName(e), _PyName(e, p), ns=n))
    if generate_service_info:
        for s in desc.Services():
            messages.append(types.CapsuleType(_CppName(s), _PyName(s, p),
                                              ns=n))
    return messages
コード例 #2
0
 def testCapsuleType(self):
   t = types.CapsuleType('c::name::cpp_name', 'pyname')
   header = '\n'.join(t.GenHeader()) + '\n'
   self.assertMultiLineEqual(header, textwrap.dedent("""\
     // CLIF use `c::name::cpp_name*` as pyname
     bool Clif_PyObjAs(PyObject* input, c::name::cpp_name** output);
     PyObject* Clif_PyObjFrom(const c::name::cpp_name*, py::PostConv);
   """))
コード例 #3
0
ファイル: pyext.py プロジェクト: sr-gi/clif
 def WrapCapsule(self, p, unused_ln, ns, unused_class_ns=''):
     """Process AST.ForwardDecl p."""
     self.types.append(types.CapsuleType(p.name.cpp_name, p.name.native,
                                         ns))
     return []