| ---------------------- |
| --- IMPORTANT TODO --- |
| ---------------------- |
| - ensure enums are int-size |
| |
| -------------------- |
| --- 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 |
| |
| --------------------- |
| --- DOCUMENTATION --- |
| --------------------- |
| Document: |
| - services |
| - check over documentation again |
| |
| -------------------------- |
| --- LOW PRIORITY STUFF --- |
| -------------------------- |
| - support Group (whatever it is) |
| - almost no code generator options are obeyed |
| - 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 --- |
| ------------------------- |
| |
| - 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. |