diff options
Diffstat (limited to 'Software/External Repositories/Protobuf/protobuf-c-master/TODO')
| -rw-r--r-- | Software/External Repositories/Protobuf/protobuf-c-master/TODO | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Software/External Repositories/Protobuf/protobuf-c-master/TODO b/Software/External Repositories/Protobuf/protobuf-c-master/TODO new file mode 100644 index 000000000..9a00dca4a --- /dev/null +++ b/Software/External Repositories/Protobuf/protobuf-c-master/TODO @@ -0,0 +1,82 @@ +---------------------- +--- IMPORTANT TODO --- +---------------------- + +-------------------- +--- NEEDED TESTS --- +-------------------- +- test: + - service method lookups + - out-of-order fields in messages (ie if the number isn't ascending) + - gaps in numbers: check that the number of ranges is correct + - default values + - message unpack alloc failures when allocating new slab + - message unpack alloc failures when allocating unknown field buffers + - packed message corruption. + - meta-todo: get a list of all the unpack errors together to check off + +--------------------- +--- DOCUMENTATION --- +--------------------- +Document: + - services + - check over documentation again + +-------------------------- +--- LOW PRIORITY STUFF --- +-------------------------- +- support Group (whatever it is) +- proper support for extensions + - slot for ranges in descriptor + - extends is implemented as c-style function + whose name is built from the package, the base message type-name + and the member. which takes the base message and returns the + value, if it is found in "unknown_values". + boolean package__extension_member_name__get(Message *message, + type *out); + void package__extension_member_name__set_raw(type in, + ProtobufCUnknownValue *to_init); + +------------------------------------ +--- EXTREMELY LOW PRIORITY STUFF --- +------------------------------------ +- stop using qsort in the code generator: find some c++ish way to do it + +---------------------------------------------- +--- ISSUES WE ARE PROBABLY GOING TO IGNORE --- +---------------------------------------------- +- strings may not contain NULs + +------------------------- +--- IDEAS TO CONSIDER --- +------------------------- + +- optimization: structures without repeated members could skip + the ScannedMember phase + +- optimization: a way to ignore unknown-fields when unpacking + +- optimization: certain functions are not well setup for WORDSIZE==64; + especially the int64 routines are inefficient that way. + The best might be an internal #define WORDSIZE (sizeof(long)*8)" + except w/ a real constant there, one that the preprocessor can use. + I think the functions in protobuf-c.c are already tagged. + +- lifetime functions for messages: + message__new() + return a new message using an allocator with standard allocation policy + message__unpack_onto(...) + unpack onto an initialized message + message__clear(...) + clears all allocations, does not free the message itself + message__free(...) + free the message. + [yeah, right: after typing it out, i see it's way too complicated] + +- switching to pure C. + - Rewrite the code-generator in C, including the parser. + - This would have the huge advantage that we could use ".proto" files + directly, instead of having to invoke the compilers. + - keep in a separate c file for static linking optimziation purposes + - need alignment tests + - the CAVEATS should discuss our structure-packing assumptions |
