Merge branch 'release/0.3.3'

This commit is contained in:
Jason Paryani 2013-08-22 09:19:42 -07:00
commit 91fef0eaf3
4 changed files with 29 additions and 157 deletions

View file

@ -5,20 +5,20 @@
First you need a system-wide installation of the Capnproto C++ library >= 0.3. Unfortunately, as of now, that means you have to build from the HEAD of Cap'n Proto. Follow these instructions to do so:
```bash
wget https://github.com/kentonv/capnproto/archive/master.zip
unzip master.zip
cd capnproto-master/c++
./setup-autotools.sh
autoreconf -i
./configure
make -j6 check
sudo make install
sudo ldconfig
wget https://github.com/kentonv/capnproto/archive/master.zip
unzip master.zip
cd capnproto-master/c++
./setup-autotools.sh
autoreconf -i
./configure
make -j6 check
sudo make install
sudo ldconfig
```
A recent version of setuptools is also required. You can install a newer version with:
```python
```bash
pip install -U setuptools
```

View file

@ -9,9 +9,9 @@
cimport cython
cimport capnp_cpp as capnp
cimport schema_cpp
from capnp_cpp cimport SchemaLoader as C_SchemaLoader, Schema as C_Schema, StructSchema as C_StructSchema, DynamicStruct as C_DynamicStruct, DynamicValue as C_DynamicValue, Type as C_Type, DynamicList as C_DynamicList, DynamicUnion as C_DynamicUnion, fixMaybe, fixMaybeUnion, SchemaParser as C_SchemaParser, ParsedSchema as C_ParsedSchema, VOID, ArrayPtr, StringPtr
from capnp_cpp cimport SchemaLoader as C_SchemaLoader, Schema as C_Schema, StructSchema as C_StructSchema, DynamicStruct as C_DynamicStruct, DynamicValue as C_DynamicValue, Type as C_Type, DynamicList as C_DynamicList, fixMaybe, SchemaParser as C_SchemaParser, ParsedSchema as C_ParsedSchema, VOID, ArrayPtr, StringPtr
from schema_cpp cimport CodeGeneratorRequest as C_CodeGeneratorRequest, Node as C_Node, EnumNode as C_EnumNode
from schema_cpp cimport Node as C_Node, EnumNode as C_EnumNode
from cython.operator cimport dereference as deref
from libc.stdint cimport *
@ -57,7 +57,6 @@ _Type = _make_enum('DynamicValue.Type',
LIST = capnp.TYPE_LIST,
ENUM = capnp.TYPE_ENUM,
STRUCT = capnp.TYPE_STRUCT,
UNION = capnp.TYPE_UNION,
INTERFACE = capnp.TYPE_INTERFACE,
OBJECT = capnp.TYPE_OBJECT)
@ -234,8 +233,6 @@ cdef class _DynamicValueReader:
return list(_DynamicListReader()._init(self.thisptr.asList(), self._parent))
elif type == capnp.TYPE_STRUCT:
return _DynamicStructReader()._init(self.thisptr.asStruct(), self._parent)
elif type == capnp.TYPE_UNION:
return _DynamicUnionReader()._init(self.thisptr.asUnion(), self._parent)
elif type == capnp.TYPE_ENUM:
return fixMaybe(self.thisptr.asEnum().getEnumerant()).getProto().getName().cStr()
elif type == capnp.TYPE_VOID:
@ -268,8 +265,6 @@ cdef toPython(C_DynamicValue.Builder & self, object parent):
return list(_DynamicListBuilder()._init(self.asList(), parent))
elif type == capnp.TYPE_STRUCT:
return _DynamicStructBuilder()._init(self.asStruct(), parent)
elif type == capnp.TYPE_UNION:
return _DynamicUnionBuilder()._init(self.asUnion(), parent)
elif type == capnp.TYPE_ENUM:
return fixMaybe(self.asEnum().getEnumerant()).getProto().getName().cStr()
elif type == capnp.TYPE_VOID:
@ -298,8 +293,6 @@ cdef toPythonByValue(C_DynamicValue.Builder self, object parent):
return list(_DynamicListBuilder()._init(self.asList(), parent))
elif type == capnp.TYPE_STRUCT:
return _DynamicStructBuilder()._init(self.asStruct(), parent)
elif type == capnp.TYPE_UNION:
return _DynamicUnionBuilder()._init(self.asUnion(), parent)
elif type == capnp.TYPE_ENUM:
return fixMaybe(self.asEnum().getEnumerant()).getProto().getName().cStr()
elif type == capnp.TYPE_VOID:
@ -309,12 +302,6 @@ cdef toPythonByValue(C_DynamicValue.Builder self, object parent):
else:
raise ValueError("Cannot convert type to Python. Type is unhandled by capnproto library")
cdef getWhichReader(C_DynamicValue.Reader & val):
return fixMaybe(val.asUnion().which()).getProto().getName().cStr()
cdef getWhichBuilder(C_DynamicValue.Builder & val):
return fixMaybe(val.asUnion().which()).getProto().getName().cStr()
cdef class _DynamicStructReader:
cdef C_DynamicStruct.Reader thisptr
cdef public object _parent
@ -333,12 +320,7 @@ cdef class _DynamicStructReader:
return self.thisptr.has(field)
cpdef which(self):
try:
union = fixMaybeUnion(self.thisptr.getSchema().getUnnamedUnion())
except:
raise TypeError("This struct has no unnamed enums. You cannot call which on it")
return getWhichReader(self.thisptr.getByUnion(union))
return fixMaybe(self.thisptr.which()).getProto().getName().cStr()
cdef class _DynamicStructBuilder:
cdef C_DynamicStruct.Builder thisptr
@ -395,98 +377,13 @@ cdef class _DynamicStructBuilder:
else:
return toPythonByValue(self.thisptr.init(field, size), self._parent)
cpdef which(self):
try:
union = fixMaybeUnion(self.thisptr.getSchema().getUnnamedUnion())
except:
raise TypeError("This struct has no unnamed enums. You cannot call which on it")
# cpdef which(self):
# try:
# union = fixMaybeUnion(self.thisptr.getSchema().getUnnamedUnion())
# except:
# raise TypeError("This struct has no unnamed enums. You cannot call which on it")
return getWhichBuilder(self.thisptr.getByUnion(union))
cdef class _DynamicUnionReader:
cdef C_DynamicUnion.Reader thisptr
cdef public object _parent
cdef _init(self, C_DynamicUnion.Reader other, object parent):
self.thisptr = other
self._parent = parent
return self
cpdef _get(self):
return _DynamicValueReader()._init(self.thisptr.get(), self._parent)
def __getattr__(self, field):
return self._get().toPython() # TODO: check that the field is right?
cpdef which(self):
return fixMaybe(self.thisptr.which()).getProto().getName().cStr()
cdef class _DynamicUnionBuilder:
cdef C_DynamicUnion.Builder thisptr
cdef public object _parent
cdef _init(self, C_DynamicUnion.Builder other, object parent):
self.thisptr = other
self._parent = parent
return self
def __getattr__(self, field):
return toPython(self.thisptr.get(), self._parent) # TODO: check that the field is right?
cdef _setattrInt(self, field, value):
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(<long long>value)
self.thisptr.set(field, temp)
cdef _setattrDouble(self, field, value):
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(<double>value)
self.thisptr.set(field, temp)
cdef _setattrBool(self, field, value):
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(<bint>value)
self.thisptr.set(field, temp)
cdef _setattrString(self, field, value):
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(<char*>value)
self.thisptr.set(field, temp)
cdef _setattrVoid(self, field):
cdef C_DynamicValue.Reader temp = C_DynamicValue.Reader(VOID)
self.thisptr.set(field, temp)
def __setattr__(self, field, value):
value_type = type(value)
if value_type is int:
self._setattrInt(field, value)
elif value_type is float:
self._setattrDouble(field, value)
elif value_type is bool:
self._setattrBool(field, value)
elif value_type is str:
self._setattrString(field, value)
elif value is None:
self._setattrVoid(field)
else:
raise ValueError("Non primitive type")
cpdef which(self):
return fixMaybe(self.thisptr.which()).getProto().getName().cStr()
cpdef init(self, field, size=None) except +ValueError:
if size is None:
return toPythonByValue(self.thisptr.init(field), self._parent)
else:
return toPythonByValue(self.thisptr.init(field, size), self._parent)
cdef class _CodeGeneratorRequestReader:
cdef C_CodeGeneratorRequest.Reader thisptr
cdef _init(self, C_CodeGeneratorRequest.Reader other):
self.thisptr = other
return self
property nodes:
def __get__(self):
return _List_Node_Reader()._init(self.thisptr.getNodes())
property requestedFiles:
def __get__(self):
return _List_UInt64_Reader()._init(self.thisptr.getRequestedFiles())
# return getWhichBuilder(self.thisptr.getByUnion(union))
cdef class Schema:
cdef C_Schema thisptr
@ -601,8 +498,6 @@ cdef class MessageReader:
cpdef _getRootNode(self):
return _NodeReader().init(self.thisptr.getRootNode())
cpdef _getRootCodeGeneratorRequest(self):
return _CodeGeneratorRequestReader()._init(self.thisptr.getRootCodeGeneratorRequest())
cpdef getRoot(self, schema):
cdef StructSchema s
if hasattr(schema, 'Schema'):

View file

@ -32,30 +32,23 @@ cdef extern from "capnp/schema.h" namespace " ::capnp":
Schema getDependency(uint64_t id) except +
#InterfaceSchema asInterface() const;
cdef cppclass MemberForward" ::capnp::StructSchema::Member":
cdef cppclass MemberForward" ::capnp::StructSchema::Field":
pass
cdef cppclass StructSchema(Schema):
cppclass MemberList:
cppclass FieldList:
uint size()
MemberForward operator[](uint index)
cppclass Union:
StructNode.Union.Reader getProto()
MemberList getMembers()
MemberForward getMemberByName(char * name)
cppclass Member:
cppclass Field:
StructNode.Member.Reader getProto()
StructSchema getContainingStruct()
uint getIndex()
MemberList getMembers()
Union asUnion() except +
FieldList getFields()
Node.Reader getProto()
MemberList getMembers()
Member getMemberByName(char * name)
Maybe[StructSchema.Union] getUnnamedUnion()
FieldList getFields()
Field getFieldByName(char * name)
cdef cppclass EnumSchema:
cppclass Enumerant:
@ -96,28 +89,26 @@ cdef extern from "capnp/dynamic.h" namespace " ::capnp":
TYPE_LIST " ::capnp::DynamicValue::LIST"
TYPE_ENUM " ::capnp::DynamicValue::ENUM"
TYPE_STRUCT " ::capnp::DynamicValue::STRUCT"
TYPE_UNION " ::capnp::DynamicValue::UNION"
TYPE_INTERFACE " ::capnp::DynamicValue::INTERFACE"
TYPE_OBJECT " ::capnp::DynamicValue::OBJECT"
cdef cppclass DynamicStruct:
cppclass Reader:
DynamicValueForward.Reader get(char *) except +ValueError
DynamicValueForward.Reader getByUnion'get'(StructSchema.Union member) except +ValueError
bint has(char *) except +ValueError
StructSchema getSchema()
Maybe[StructSchema.Field] which()
cppclass Builder:
DynamicValueForward.Builder get(char *) except +ValueError
DynamicValueForward.Builder getByUnion'get'(StructSchema.Union member) except +ValueError
bint has(char *) except +ValueError
void set(char *, DynamicValueForward.Reader&) except +ValueError
DynamicValueForward.Builder init(char *, uint size)
DynamicValueForward.Builder init(char *)
StructSchema getSchema()
Maybe[StructSchema.Field] which()
cdef extern from "fixMaybe.h":
StructSchema.Member fixMaybe(Maybe[StructSchema.Member]) except+
StructSchema.Union fixMaybeUnion'fixMaybe'(Maybe[StructSchema.Union]) except+
StructSchema.Field fixMaybe(Maybe[StructSchema.Field]) except+
EnumSchema.Enumerant fixMaybe(Maybe[EnumSchema.Enumerant]) except+
cdef extern from "capnp/dynamic.h" namespace " ::capnp":
@ -125,17 +116,6 @@ cdef extern from "capnp/dynamic.h" namespace " ::capnp":
uint16_t getRaw()
Maybe[EnumSchema.Enumerant] getEnumerant()
cdef cppclass DynamicUnion:
cppclass Reader:
DynamicValueForward.Reader get() except +ValueError
Maybe[StructSchema.Member] which()
cppclass Builder:
DynamicValueForward.Builder get() except +ValueError
Maybe[StructSchema.Member] which()
void set(char *, DynamicValueForward.Reader&) except +ValueError
DynamicValueForward.Builder init(char *, uint size)
DynamicValueForward.Builder init(char *)
cdef cppclass DynamicList:
cppclass Reader:
DynamicValueForward.Reader operator[](uint) except +ValueError
@ -167,7 +147,6 @@ cdef extern from "capnp/dynamic.h" namespace " ::capnp":
Reader(DynamicList.Reader& value)
Reader(DynamicEnum value)
Reader(DynamicStruct.Reader& value)
Reader(DynamicUnion.Reader& value)
Type getType()
int64_t asInt"as<int64_t>"()
uint64_t asUint"as<uint64_t>"()
@ -176,7 +155,6 @@ cdef extern from "capnp/dynamic.h" namespace " ::capnp":
char * asText"as< ::capnp::Text>().cStr"()
DynamicList.Reader asList"as< ::capnp::DynamicList>"()
DynamicStruct.Reader asStruct"as< ::capnp::DynamicStruct>"()
DynamicUnion.Reader asUnion"as< ::capnp::DynamicUnion>"()
DynamicEnum asEnum"as< ::capnp::DynamicEnum>"()
Data.Reader asData"as< ::capnp::Data>"()
cppclass Builder:
@ -188,7 +166,6 @@ cdef extern from "capnp/dynamic.h" namespace " ::capnp":
char * asText"as< ::capnp::Text>().cStr"()
DynamicList.Builder asList"as< ::capnp::DynamicList>"()
DynamicStruct.Builder asStruct"as< ::capnp::DynamicStruct>"()
DynamicUnion.Builder asUnion"as< ::capnp::DynamicUnion>"()
DynamicEnum asEnum"as< ::capnp::DynamicEnum>"()
Data.Builder asData"as< ::capnp::Data>"()

View file

@ -13,7 +13,7 @@ import os
MAJOR = 0
MINOR = 3
MICRO = 2
MICRO = 3
VERSION = '%d.%d.%d' % (MAJOR, MINOR, MICRO)