syntax = "proto3"; // this file is called "fruit.proto" // // for autogenpb to work, you must have: // // "Fruit" must exist. you can put anything in it // // and // // "Fruits" MUST EXIST and start exactly this way // It must be "Fruit" + 's' and must match the name of this file: "fruit.proto" package main; import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp message Apple { string name = 1; // `autogenpb:unique` // generates SortByxxx() and AppendUnique() functions string genus = 2; // `autogenpb:unique` // generates same thing here but SortByGenus() google.protobuf.Timestamp ctime = 3; // when the apple was born } message Apples { string name = 1; // `autogenpb:unique` // generates SortByxxx() and AppendUnique() functions string genus = 2; // `autogenpb:unique` // generates same thing here but SortByGenus() repeated Apple apples = 3; } message Pear { // `autogenpb:nomutex` string name = 1; // `autogenpb:sort` string favorite = 2; // `autogenpb:sort` `autogenpb:unique` } message Pears { // `autogenpb:nomutex` string name = 1; // `autogenpb:sort` string favorite = 2; // `autogenpb:sort` `autogenpb:unique` repeated Pear pears = 3; } message Banana { // `autogenpb:nomutex` repeated string name = 1; // `autogenpb:sort` string favorite = 2; // `autogenpb:sort` `autogenpb:unique` string country = 3; // `autogenpb:sort` } message Basket { // `autogenpb:nomutex` repeated string name = 1; // `autogenpb:sort` `autogenpb:unique` string favorite = 2; // `autogenpb:sort` `autogenpb:unique` int64 price = 3; // `autogenpb:sort` repeated Banana banna = 4; repeated Pear pears = 5; repeated Apple stacks = 6; } // "Fruit" must exist. you can put anything in it message Fruit { string brand = 1; // `autogenpb:unique` `autogenpb:sort` Apple apples = 2; repeated Pear pears = 3; string UPC = 4; // `autogenpb:sort` `autogenpb:unique` string city = 5; // `autogenpb:sort` Pears notpears = 6; Pears fakepears = 7; repeated Basket gifts = 8; } // "Fruits" MUST EXIST and start exactly this way // It must be "Fruit" + 's' and must match the name of this file: "fruit.proto" message Fruits { // `autogenpb:marshal` `autogenpb:mutex` string uuid = 1; // `autogenpb:uuid:be926ad9-f07f-484c-adf2-d96eeabf3079` string version = 2; // `autogenpb:version:v0.0.1` repeated Fruit Fruits = 3; // THIS MUST BE "Fruit" and then "Fruit" + "s" // you can add additional things here but the three lines above must conform to the standard above int64 cost = 4; map junk = 5; }