Gerrit0 opened a new pull request, #2927:
URL: https://github.com/apache/avro/pull/2927

   ## What is the purpose of the change
   
   I have a schema which contains a few empty records within a union to 
describe operations which don't require options (other records in the union do 
have fields). When generating code from the avro schema for an empty record 
like the following:
   
   ```json
   {
       "type": "record",
       "name": "Empty",
       "fields": []
   }
   ```
   
   avrogencpp creates:
   
   ```cpp
   template<> struct codec_traits<empty::Empty> {
       static void encode(Encoder& e, const empty::Empty& v) {
       }
       static void decode(Decoder& d, empty::Empty& v) {
           if (avro::ResolvingDecoder *rd =
               dynamic_cast<avro::ResolvingDecoder *>(&d)) {
               const std::vector<size_t> fo = rd->fieldOrder();
               for (std::vector<size_t>::const_iterator it = fo.begin();
                   it != fo.end(); ++it) {
                   switch (*it) {
                   default:
                       break;
                   }
               }
           } else {
           }
       }
   };
   ```
   
   In a project with compiler warnings turned up, this generates compiler 
warnings for unused parameters (GCC's `-Wunused-parameter`, MSVC's C4100) and 
also for the switch with a default case but no other cases (some MSVC option 
that I don't have in front of me right now).
   
   With this change, we instead generate the following, which compiles cleanly:
   
   ```cpp
   template<> struct codec_traits<empty::Empty> {
       static void encode(Encoder&, const empty::Empty&) {}
       static void decode(Decoder&, empty::Empty&) {}
   };
   ```
   
   
   ## Verifying this change
   
   This change is already covered by existing tests, the 
[empty_record](https://github.com/apache/avro/blob/main/lang/c%2B%2B/jsonschemas/empty_record)
 schema is compiled as a part of building the C++ SDK, and continues to 
compile, producing the output described above.
   
   ## Documentation
   
   - Does this pull request introduce a new feature? No.
   - If yes, how is the feature documented? N/A
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@avro.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to