Protocol Buffers

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Protocol Buffers
Développeur Google
Dernière version 2.4.0 (2 février 2011)
Type Bibliothèque et format de sérialisation, compilateur IDL
Licence Licence BSD
Site web code.google.com/apis/protocolbuffers

Protocol Buffers est un format de sérialisation avec un langage de description d'interface développé par Google. L'implémentation d'origine publiée par Google pour C++, Java et Python est disponible sous une licence libre. Des implémentations pour d'autres langages sont disponibles ou en cours de développement[1].

Exemple[modifier | modifier le code]

message Point {
  required int32 x = 1;
  required int32 y = 2;
  optional string label = 3;
}
 
message Line {
  required Point start = 1;
  required Point end = 2;
  optional string label = 3;
}
 
message Polyline {
  repeated Point point = 1;
  optional string label = 2;
}

Le message « Point » définit deux propriétés obligatoires, « x » et « y ». La propriété « label » est facultative. Chaque propriété a une étiquette, définie par un signe égal, par exemple « x » a l'étiquette 1.

Les messages « Line » et « Polyline » sont composés, ils utilisent « Point » dans leurs définitions. Le champ de type « repeated » (répétition) dans Polyline agit comme un vecteur.

Cette définition est ensuite compilé, en appelant protoc, pour être utilisée par un logiciel C++ de la manière suivante :

#include "polyline.pb.h"  // généré en appelant protoc polyline.proto (définition ci-dessus)
 
Line* createNewLine(const std::string& name) {
  Line* line = new Line;
  line->mutable_start()->set_x(10);
  line->mutable_start()->set_y(20);
  line->mutable_end()->set_x(30);
  line->mutable_end()->set_y(40);
  line->set_label(name);
  return line;
}
 
Polyline* createNewPolyline() {
  Polyline* polyline = new Polyline;
  Point* point1 = polyline->add_point();
  point1->set_x(10);
  point1->set_y(10);
  Point* point2 = polyline->add_point();
  point2->set_x(10);
  point2->set_y(10);
  return polyline;
}

Articles connexes[modifier | modifier le code]

Références[modifier | modifier le code]

Liens externes[modifier | modifier le code]