mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-27 04:01:47 +01:00 
			
		
		
		
	Initial Commit
This commit is contained in:
		
							
								
								
									
										1106
									
								
								tools/sdk/esp32s2/include/protobuf-c/protobuf-c/protobuf-c/protobuf-c.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1106
									
								
								tools/sdk/esp32s2/include/protobuf-c/protobuf-c/protobuf-c/protobuf-c.h
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -0,0 +1,100 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_BYTES_FIELD_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_BYTES_FIELD_H__ | ||||
|  | ||||
| #include <map> | ||||
| #include <string> | ||||
| #include <protoc-c/c_field.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class BytesFieldGenerator : public FieldGenerator { | ||||
|  public: | ||||
|   explicit BytesFieldGenerator(const FieldDescriptor* descriptor); | ||||
|   ~BytesFieldGenerator(); | ||||
|  | ||||
|   // implements FieldGenerator --------------------------------------- | ||||
|   void GenerateStructMembers(io::Printer* printer) const; | ||||
|   void GenerateDescriptorInitializer(io::Printer* printer) const; | ||||
|   void GenerateDefaultValueDeclarations(io::Printer* printer) const; | ||||
|   void GenerateDefaultValueImplementations(io::Printer* printer) const; | ||||
|   string GetDefaultValue(void) const; | ||||
|   void GenerateStaticInit(io::Printer* printer) const; | ||||
|  | ||||
|  private: | ||||
|   std::map<string, string> variables_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(BytesFieldGenerator); | ||||
| }; | ||||
|  | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
| }  // namespace google | ||||
|  | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_STRING_FIELD_H__ | ||||
| @@ -0,0 +1,118 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_ENUM_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_ENUM_H__ | ||||
|  | ||||
| #include <string> | ||||
| #include <google/protobuf/descriptor.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
|   namespace io { | ||||
|     class Printer;             // printer.h | ||||
|   } | ||||
| } | ||||
|  | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class EnumGenerator { | ||||
|  public: | ||||
|   // See generator.cc for the meaning of dllexport_decl. | ||||
|   explicit EnumGenerator(const EnumDescriptor* descriptor, | ||||
|                          const string& dllexport_decl); | ||||
|   ~EnumGenerator(); | ||||
|  | ||||
|   // Header stuff. | ||||
|  | ||||
|   // Generate header code defining the enum.  This code should be placed | ||||
|   // within the enum's package namespace, but NOT within any class, even for | ||||
|   // nested enums. | ||||
|   void GenerateDefinition(io::Printer* printer); | ||||
|  | ||||
|   void GenerateDescriptorDeclarations(io::Printer* printer); | ||||
|  | ||||
|  | ||||
|   // Source file stuff. | ||||
|  | ||||
|   // Generate the ProtobufCEnumDescriptor for this enum | ||||
|   void GenerateEnumDescriptor(io::Printer* printer); | ||||
|  | ||||
|   // Generate static initializer for a ProtobufCEnumValue | ||||
|   // given the index of the value in the enum. | ||||
|   void GenerateValueInitializer(io::Printer *printer, int index); | ||||
|  | ||||
|  private: | ||||
|   const EnumDescriptor* descriptor_; | ||||
|   string dllexport_decl_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumGenerator); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_ENUM_H__ | ||||
| @@ -0,0 +1,98 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_ENUM_FIELD_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_ENUM_FIELD_H__ | ||||
|  | ||||
| #include <map> | ||||
| #include <string> | ||||
| #include <protoc-c/c_field.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class EnumFieldGenerator : public FieldGenerator { | ||||
|  public: | ||||
|   explicit EnumFieldGenerator(const FieldDescriptor* descriptor); | ||||
|   ~EnumFieldGenerator(); | ||||
|  | ||||
|   // implements FieldGenerator --------------------------------------- | ||||
|   void GenerateStructMembers(io::Printer* printer) const; | ||||
|   void GenerateDescriptorInitializer(io::Printer* printer) const; | ||||
|   string GetDefaultValue(void) const; | ||||
|   void GenerateStaticInit(io::Printer* printer) const; | ||||
|  | ||||
|  private: | ||||
|   std::map<string, string> variables_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumFieldGenerator); | ||||
| }; | ||||
|  | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_ENUM_FIELD_H__ | ||||
| @@ -0,0 +1,110 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_EXTENSION_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_EXTENSION_H__ | ||||
|  | ||||
| #include <string> | ||||
| #include <google/protobuf/stubs/common.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
|   class FieldDescriptor;       // descriptor.h | ||||
|   namespace io { | ||||
|     class Printer;             // printer.h | ||||
|   } | ||||
| } | ||||
|  | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| // Generates code for an extension, which may be within the scope of some | ||||
| // message or may be at file scope.  This is much simpler than FieldGenerator | ||||
| // since extensions are just simple identifiers with interesting types. | ||||
| class ExtensionGenerator { | ||||
|  public: | ||||
|   // See generator.cc for the meaning of dllexport_decl. | ||||
|   explicit ExtensionGenerator(const FieldDescriptor* descriptor, | ||||
|                               const string& dllexport_decl); | ||||
|   ~ExtensionGenerator(); | ||||
|  | ||||
|   // Header stuff. | ||||
|   void GenerateDeclaration(io::Printer* printer); | ||||
|  | ||||
|   // Source file stuff. | ||||
|   void GenerateDefinition(io::Printer* printer); | ||||
|  | ||||
|  private: | ||||
|   const FieldDescriptor* descriptor_; | ||||
|   string type_traits_; | ||||
|   string dllexport_decl_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ExtensionGenerator); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_MESSAGE_H__ | ||||
| @@ -0,0 +1,132 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_FIELD_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_FIELD_H__ | ||||
|  | ||||
| #include <google/protobuf/stubs/common.h> | ||||
| #include <google/protobuf/descriptor.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
|   namespace io { | ||||
|     class Printer;             // printer.h | ||||
|   } | ||||
| } | ||||
|  | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class FieldGenerator { | ||||
|  public: | ||||
|   explicit FieldGenerator(const FieldDescriptor *descriptor) : descriptor_(descriptor) {} | ||||
|   virtual ~FieldGenerator(); | ||||
|  | ||||
|   // Generate definitions to be included in the structure. | ||||
|   virtual void GenerateStructMembers(io::Printer* printer) const = 0; | ||||
|  | ||||
|   // Generate a static initializer for this field. | ||||
|   virtual void GenerateDescriptorInitializer(io::Printer* printer) const = 0; | ||||
|  | ||||
|   virtual void GenerateDefaultValueDeclarations(io::Printer* printer) const { } | ||||
|   virtual void GenerateDefaultValueImplementations(io::Printer* printer) const { } | ||||
|   virtual string GetDefaultValue() const = 0; | ||||
|  | ||||
|   // Generate members to initialize this field from a static initializer | ||||
|   virtual void GenerateStaticInit(io::Printer* printer) const = 0; | ||||
|  | ||||
|  | ||||
|  protected: | ||||
|   void GenerateDescriptorInitializerGeneric(io::Printer* printer, | ||||
|                                             bool optional_uses_has, | ||||
|                                             const string &type_macro, | ||||
|                                             const string &descriptor_addr) const; | ||||
|   const FieldDescriptor *descriptor_; | ||||
|  | ||||
|  private: | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGenerator); | ||||
| }; | ||||
|  | ||||
| // Convenience class which constructs FieldGenerators for a Descriptor. | ||||
| class FieldGeneratorMap { | ||||
|  public: | ||||
|   explicit FieldGeneratorMap(const Descriptor* descriptor); | ||||
|   ~FieldGeneratorMap(); | ||||
|  | ||||
|   const FieldGenerator& get(const FieldDescriptor* field) const; | ||||
|  | ||||
|  private: | ||||
|   const Descriptor* descriptor_; | ||||
|   scoped_array<scoped_ptr<FieldGenerator> > field_generators_; | ||||
|  | ||||
|   static FieldGenerator* MakeGenerator(const FieldDescriptor* field); | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_FIELD_H__ | ||||
| @@ -0,0 +1,117 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_FILE_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_FILE_H__ | ||||
|  | ||||
| #include <string> | ||||
| #include <vector> | ||||
| #include <google/protobuf/stubs/common.h> | ||||
| #include <protoc-c/c_field.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
|   class FileDescriptor;        // descriptor.h | ||||
|   namespace io { | ||||
|     class Printer;             // printer.h | ||||
|   } | ||||
| } | ||||
|  | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class EnumGenerator;           // enum.h | ||||
| class MessageGenerator;        // message.h | ||||
| class ServiceGenerator;        // service.h | ||||
| class ExtensionGenerator;      // extension.h | ||||
|  | ||||
| class FileGenerator { | ||||
|  public: | ||||
|   // See generator.cc for the meaning of dllexport_decl. | ||||
|   explicit FileGenerator(const FileDescriptor* file, | ||||
|                          const string& dllexport_decl); | ||||
|   ~FileGenerator(); | ||||
|  | ||||
|   void GenerateHeader(io::Printer* printer); | ||||
|   void GenerateSource(io::Printer* printer); | ||||
|  | ||||
|  private: | ||||
|   const FileDescriptor* file_; | ||||
|  | ||||
|   scoped_array<scoped_ptr<MessageGenerator> > message_generators_; | ||||
|   scoped_array<scoped_ptr<EnumGenerator> > enum_generators_; | ||||
|   scoped_array<scoped_ptr<ServiceGenerator> > service_generators_; | ||||
|   scoped_array<scoped_ptr<ExtensionGenerator> > extension_generators_; | ||||
|  | ||||
|   // E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}. | ||||
|   vector<string> package_parts_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_FILE_H__ | ||||
| @@ -0,0 +1,100 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| // Generates C code for a given .proto file. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_GENERATOR_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_GENERATOR_H__ | ||||
|  | ||||
| #include <string> | ||||
| #include <google/protobuf/compiler/code_generator.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| // CodeGenerator implementation which generates a C++ source file and | ||||
| // header.  If you create your own protocol compiler binary and you want | ||||
| // it to support C++ output, you can do so by registering an instance of this | ||||
| // CodeGenerator with the CommandLineInterface in your main() function. | ||||
| class LIBPROTOC_EXPORT CGenerator : public CodeGenerator { | ||||
|  public: | ||||
|   CGenerator(); | ||||
|   ~CGenerator(); | ||||
|  | ||||
|   // implements CodeGenerator ---------------------------------------- | ||||
|   bool Generate(const FileDescriptor* file, | ||||
|                 const string& parameter, | ||||
|                 OutputDirectory* output_directory, | ||||
|                 string* error) const; | ||||
|  | ||||
|  private: | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CGenerator); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_GENERATOR_H__ | ||||
| @@ -0,0 +1,197 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_HELPERS_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_HELPERS_H__ | ||||
|  | ||||
| #include <string> | ||||
| #include <vector> | ||||
| #include <sstream> | ||||
| #include <google/protobuf/descriptor.h> | ||||
| #include <google/protobuf/descriptor.pb.h> | ||||
| #include <google/protobuf/io/printer.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| // Returns the non-nested type name for the given type.  If "qualified" is | ||||
| // true, prefix the type with the full namespace.  For example, if you had: | ||||
| //   package foo.bar; | ||||
| //   message Baz { message Qux {} } | ||||
| // Then the qualified ClassName for Qux would be: | ||||
| //   Foo__Bar__Baz_Qux | ||||
| // While the non-qualified version would be: | ||||
| //   Baz_Qux | ||||
| string ClassName(const Descriptor* descriptor, bool qualified); | ||||
| string ClassName(const EnumDescriptor* enum_descriptor, bool qualified); | ||||
|  | ||||
| // --- Borrowed from stubs. --- | ||||
| template <typename T> string SimpleItoa(T n) { | ||||
|   std::stringstream stream; | ||||
|   stream << n; | ||||
|   return stream.str(); | ||||
| } | ||||
|  | ||||
| string SimpleFtoa(float f); | ||||
| string SimpleDtoa(double f); | ||||
| void SplitStringUsing(const string &str, const char *delim, std::vector<string> *out); | ||||
| string CEscape(const string& src); | ||||
| string StringReplace(const string& s, const string& oldsub, const string& newsub, bool replace_all); | ||||
| inline bool HasSuffixString(const string& str, const string& suffix) { return str.size() >= suffix.size() && str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; } | ||||
| inline string StripSuffixString(const string& str, const string& suffix) { if (HasSuffixString(str, suffix)) { return str.substr(0, str.size() - suffix.size()); } else { return str; } } | ||||
| char* FastHexToBuffer(int i, char* buffer); | ||||
|  | ||||
|  | ||||
| // Get the (unqualified) name that should be used for this field in C code. | ||||
| // The name is coerced to lower-case to emulate proto1 behavior.  People | ||||
| // should be using lowercase-with-underscores style for proto field names | ||||
| // anyway, so normally this just returns field->name(). | ||||
| string FieldName(const FieldDescriptor* field); | ||||
|  | ||||
| // Get macro string for deprecated field | ||||
| string FieldDeprecated(const FieldDescriptor* field); | ||||
|  | ||||
| // Returns the scope where the field was defined (for extensions, this is | ||||
| // different from the message type to which the field applies). | ||||
| inline const Descriptor* FieldScope(const FieldDescriptor* field) { | ||||
|   return field->is_extension() ? | ||||
|     field->extension_scope() : field->containing_type(); | ||||
| } | ||||
|  | ||||
| // convert a CamelCase class name into an all uppercase affair | ||||
| // with underscores separating words, e.g. MyClass becomes MY_CLASS. | ||||
| string CamelToUpper(const string &class_name); | ||||
| string CamelToLower(const string &class_name); | ||||
|  | ||||
| // lowercased, underscored name to camel case | ||||
| string ToCamel(const string &name); | ||||
|  | ||||
| // lowercase the string | ||||
| string ToLower(const string &class_name); | ||||
| string ToUpper(const string &class_name); | ||||
|  | ||||
| // full_name() to lowercase with underscores | ||||
| string FullNameToLower(const string &full_name); | ||||
| string FullNameToUpper(const string &full_name); | ||||
|  | ||||
| // full_name() to c-typename (with underscores for packages, otherwise camel case) | ||||
| string FullNameToC(const string &class_name); | ||||
|  | ||||
| // Splits, indents, formats, and prints comment lines | ||||
| void PrintComment (io::Printer* printer, string comment); | ||||
|  | ||||
| // make a string of spaces as long as input | ||||
| string ConvertToSpaces(const string &input); | ||||
|  | ||||
| // Strips ".proto" or ".protodevel" from the end of a filename. | ||||
| string StripProto(const string& filename); | ||||
|  | ||||
| // Get the C++ type name for a primitive type (e.g. "double", "::google::protobuf::int32", etc.). | ||||
| // Note:  non-built-in type names will be qualified, meaning they will start | ||||
| // with a ::.  If you are using the type as a template parameter, you will | ||||
| // need to insure there is a space between the < and the ::, because the | ||||
| // ridiculous C++ standard defines "<:" to be a synonym for "[". | ||||
| const char* PrimitiveTypeName(FieldDescriptor::CppType type); | ||||
|  | ||||
| // Get the declared type name in CamelCase format, as is used e.g. for the | ||||
| // methods of WireFormat.  For example, TYPE_INT32 becomes "Int32". | ||||
| const char* DeclaredTypeMethodName(FieldDescriptor::Type type); | ||||
|  | ||||
| // Convert a file name into a valid identifier. | ||||
| string FilenameIdentifier(const string& filename); | ||||
|  | ||||
| // Return the name of the BuildDescriptors() function for a given file. | ||||
| string GlobalBuildDescriptorsName(const string& filename); | ||||
|  | ||||
| // return 'required', 'optional', or 'repeated' | ||||
| string GetLabelName(FieldDescriptor::Label label); | ||||
|  | ||||
|  | ||||
| // write IntRanges entries for a bunch of sorted values. | ||||
| // returns the number of ranges there are to bsearch. | ||||
| unsigned WriteIntRanges(io::Printer* printer, int n_values, const int *values, const string &name); | ||||
|  | ||||
| struct NameIndex | ||||
| { | ||||
|   unsigned index; | ||||
|   const char *name; | ||||
| }; | ||||
| int compare_name_indices_by_name(const void*, const void*); | ||||
|  | ||||
| // Return the syntax version of the file containing the field. | ||||
| // This wrapper is needed to be able to compile against protobuf2. | ||||
| inline int FieldSyntax(const FieldDescriptor* field) { | ||||
| #ifdef HAVE_PROTO3 | ||||
|   return field->file()->syntax() == FileDescriptor::SYNTAX_PROTO3 ? 3 : 2; | ||||
| #else | ||||
|   return 2; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_HELPERS_H__ | ||||
| @@ -0,0 +1,141 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_MESSAGE_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_MESSAGE_H__ | ||||
|  | ||||
| #include <string> | ||||
| #include <google/protobuf/stubs/common.h> | ||||
| #include <protoc-c/c_field.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
|   namespace io { | ||||
|     class Printer;             // printer.h | ||||
|   } | ||||
| } | ||||
|  | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class EnumGenerator;           // enum.h | ||||
| class ExtensionGenerator;      // extension.h | ||||
|  | ||||
| class MessageGenerator { | ||||
|  public: | ||||
|   // See generator.cc for the meaning of dllexport_decl. | ||||
|   explicit MessageGenerator(const Descriptor* descriptor, | ||||
|                             const string& dllexport_decl); | ||||
|   ~MessageGenerator(); | ||||
|  | ||||
|   // Header stuff. | ||||
|  | ||||
|   // Generate typedef. | ||||
|   void GenerateStructTypedef(io::Printer* printer); | ||||
|  | ||||
|   // Generate descriptor prototype | ||||
|   void GenerateDescriptorDeclarations(io::Printer* printer); | ||||
|  | ||||
|   // Generate descriptor prototype | ||||
|   void GenerateClosureTypedef(io::Printer* printer); | ||||
|  | ||||
|   // Generate definitions of all nested enums (must come before class | ||||
|   // definitions because those classes use the enums definitions). | ||||
|   void GenerateEnumDefinitions(io::Printer* printer); | ||||
|  | ||||
|   // Generate definitions for this class and all its nested types. | ||||
|   void GenerateStructDefinition(io::Printer* printer); | ||||
|  | ||||
|   // Generate __INIT macro for populating this structure | ||||
|   void GenerateStructStaticInitMacro(io::Printer* printer); | ||||
|  | ||||
|   // Generate standard helper functions declarations for this message. | ||||
|   void GenerateHelperFunctionDeclarations(io::Printer* printer, bool is_submessage); | ||||
|  | ||||
|   // Source file stuff. | ||||
|  | ||||
|   // Generate code that initializes the global variable storing the message's | ||||
|   // descriptor. | ||||
|   void GenerateMessageDescriptor(io::Printer* printer); | ||||
|   void GenerateHelperFunctionDefinitions(io::Printer* printer, bool is_submessage); | ||||
|  | ||||
|  private: | ||||
|  | ||||
|   string GetDefaultValueC(const FieldDescriptor *fd); | ||||
|  | ||||
|   const Descriptor* descriptor_; | ||||
|   string dllexport_decl_; | ||||
|   FieldGeneratorMap field_generators_; | ||||
|   scoped_array<scoped_ptr<MessageGenerator> > nested_generators_; | ||||
|   scoped_array<scoped_ptr<EnumGenerator> > enum_generators_; | ||||
|   scoped_array<scoped_ptr<ExtensionGenerator> > extension_generators_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageGenerator); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_MESSAGE_H__ | ||||
| @@ -0,0 +1,97 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_MESSAGE_FIELD_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_MESSAGE_FIELD_H__ | ||||
|  | ||||
| #include <map> | ||||
| #include <string> | ||||
| #include <protoc-c/c_field.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class MessageFieldGenerator : public FieldGenerator { | ||||
|  public: | ||||
|   explicit MessageFieldGenerator(const FieldDescriptor* descriptor); | ||||
|   ~MessageFieldGenerator(); | ||||
|  | ||||
|   // implements FieldGenerator --------------------------------------- | ||||
|   void GenerateStructMembers(io::Printer* printer) const; | ||||
|   void GenerateDescriptorInitializer(io::Printer* printer) const; | ||||
|   string GetDefaultValue(void) const; | ||||
|   void GenerateStaticInit(io::Printer* printer) const; | ||||
|  | ||||
|  private: | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageFieldGenerator); | ||||
| }; | ||||
|  | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_MESSAGE_FIELD_H__ | ||||
| @@ -0,0 +1,96 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_PRIMITIVE_FIELD_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_PRIMITIVE_FIELD_H__ | ||||
|  | ||||
| #include <map> | ||||
| #include <string> | ||||
| #include <protoc-c/c_field.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class PrimitiveFieldGenerator : public FieldGenerator { | ||||
|  public: | ||||
|   explicit PrimitiveFieldGenerator(const FieldDescriptor* descriptor); | ||||
|   ~PrimitiveFieldGenerator(); | ||||
|  | ||||
|   // implements FieldGenerator --------------------------------------- | ||||
|   void GenerateStructMembers(io::Printer* printer) const; | ||||
|   void GenerateDescriptorInitializer(io::Printer* printer) const; | ||||
|   string GetDefaultValue(void) const; | ||||
|   void GenerateStaticInit(io::Printer* printer) const; | ||||
|  | ||||
|  private: | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(PrimitiveFieldGenerator); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_PRIMITIVE_FIELD_H__ | ||||
| @@ -0,0 +1,112 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_SERVICE_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_SERVICE_H__ | ||||
|  | ||||
| #include <map> | ||||
| #include <string> | ||||
| #include <google/protobuf/descriptor.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
|   namespace io { | ||||
|     class Printer;             // printer.h | ||||
|   } | ||||
| } | ||||
|  | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class ServiceGenerator { | ||||
|  public: | ||||
|   // See generator.cc for the meaning of dllexport_decl. | ||||
|   explicit ServiceGenerator(const ServiceDescriptor* descriptor, | ||||
|                             const string& dllexport_decl); | ||||
|   ~ServiceGenerator(); | ||||
|  | ||||
|   // Header stuff. | ||||
|   void GenerateMainHFile(io::Printer* printer); | ||||
|   void GenerateVfuncs(io::Printer* printer); | ||||
|   void GenerateInitMacros(io::Printer* printer); | ||||
|   void GenerateDescriptorDeclarations(io::Printer* printer); | ||||
|   void GenerateCallersDeclarations(io::Printer* printer); | ||||
|  | ||||
|   // Source file stuff. | ||||
|   void GenerateCFile(io::Printer* printer); | ||||
|   void GenerateServiceDescriptor(io::Printer* printer); | ||||
|   void GenerateInit(io::Printer* printer); | ||||
|   void GenerateCallersImplementations(io::Printer* printer); | ||||
|  | ||||
|   const ServiceDescriptor* descriptor_; | ||||
|   std::map<string, string> vars_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ServiceGenerator); | ||||
| }; | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_SERVICE_H__ | ||||
| @@ -0,0 +1,100 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // http://code.google.com/p/protobuf/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Author: kenton@google.com (Kenton Varda) | ||||
| //  Based on original Protocol Buffers design by | ||||
| //  Sanjay Ghemawat, Jeff Dean, and others. | ||||
|  | ||||
| // Copyright (c) 2008-2013, Dave Benson.  All rights reserved. | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| // | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| // Modified to implement C code by Dave Benson. | ||||
|  | ||||
| #ifndef GOOGLE_PROTOBUF_COMPILER_C_STRING_FIELD_H__ | ||||
| #define GOOGLE_PROTOBUF_COMPILER_C_STRING_FIELD_H__ | ||||
|  | ||||
| #include <map> | ||||
| #include <string> | ||||
| #include <protoc-c/c_field.h> | ||||
|  | ||||
| namespace google { | ||||
| namespace protobuf { | ||||
| namespace compiler { | ||||
| namespace c { | ||||
|  | ||||
| class StringFieldGenerator : public FieldGenerator { | ||||
|  public: | ||||
|   explicit StringFieldGenerator(const FieldDescriptor* descriptor); | ||||
|   ~StringFieldGenerator(); | ||||
|  | ||||
|   // implements FieldGenerator --------------------------------------- | ||||
|   void GenerateStructMembers(io::Printer* printer) const; | ||||
|   void GenerateDescriptorInitializer(io::Printer* printer) const; | ||||
|   void GenerateDefaultValueDeclarations(io::Printer* printer) const; | ||||
|   void GenerateDefaultValueImplementations(io::Printer* printer) const; | ||||
|   string GetDefaultValue(void) const; | ||||
|   void GenerateStaticInit(io::Printer* printer) const; | ||||
|  | ||||
|  private: | ||||
|   std::map<string, string> variables_; | ||||
|  | ||||
|   GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(StringFieldGenerator); | ||||
| }; | ||||
|  | ||||
|  | ||||
| }  // namespace c | ||||
| }  // namespace compiler | ||||
| }  // namespace protobuf | ||||
|  | ||||
| }  // namespace google | ||||
| #endif  // GOOGLE_PROTOBUF_COMPILER_C_STRING_FIELD_H__ | ||||
| @@ -0,0 +1,62 @@ | ||||
|  | ||||
| /* data included from the c++ packed-data generator, | ||||
|    and from the c test code. */ | ||||
|  | ||||
| #define THOUSAND     1000 | ||||
| #define MILLION      1000000 | ||||
| #define BILLION      1000000000LL | ||||
| #define TRILLION     1000000000000LL | ||||
| #define QUADRILLION  1000000000000000LL | ||||
| #define QUINTILLION  1000000000000000000LL | ||||
|  | ||||
| int32_t int32_arr0[2] = { -1, 1 }; | ||||
| int32_t int32_arr1[5] = { 42, 666, -1123123, 0, 47 }; | ||||
| int32_t int32_arr_min_max[2] = { INT32_MIN, INT32_MAX }; | ||||
|  | ||||
| uint32_t uint32_roundnumbers[4] = { BILLION, MILLION, 1, 0 }; | ||||
| uint32_t uint32_0_max[2] = { 0, UINT32_MAX }; | ||||
|  | ||||
| int64_t int64_roundnumbers[15] = { -QUINTILLION, -QUADRILLION, -TRILLION, | ||||
|                                    -BILLION, -MILLION, -THOUSAND, | ||||
|                                    1, | ||||
|                                    THOUSAND, MILLION, BILLION, | ||||
|                                    TRILLION, QUADRILLION, QUINTILLION }; | ||||
| int64_t int64_min_max[2] = { INT64_MIN, INT64_MAX }; | ||||
|  | ||||
| uint64_t uint64_roundnumbers[9] = { 1, | ||||
|                                    THOUSAND, MILLION, BILLION, | ||||
|                                    TRILLION, QUADRILLION, QUINTILLION }; | ||||
| uint64_t uint64_0_1_max[3] = { 0, 1, UINT64_MAX }; | ||||
| uint64_t uint64_random[] = {0, | ||||
|                           666, | ||||
|                           4200000000ULL, | ||||
|                           16ULL * (uint64_t) QUINTILLION + 33 }; | ||||
|  | ||||
| #define FLOATING_POINT_RANDOM \ | ||||
| -1000.0, -100.0, -42.0, 0, 666, 131313 | ||||
| float float_random[] = { FLOATING_POINT_RANDOM }; | ||||
| double double_random[] = { FLOATING_POINT_RANDOM }; | ||||
|  | ||||
| protobuf_c_boolean boolean_0[]  = {0 }; | ||||
| protobuf_c_boolean boolean_1[]  = {1 }; | ||||
| protobuf_c_boolean boolean_random[] = {0,1,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,1,0 }; | ||||
|  | ||||
| TEST_ENUM_SMALL_TYPE_NAME enum_small_0[] = { TEST_ENUM_SMALL(VALUE) }; | ||||
| TEST_ENUM_SMALL_TYPE_NAME enum_small_1[] = { TEST_ENUM_SMALL(OTHER_VALUE) }; | ||||
| #define T(v) (TEST_ENUM_SMALL_TYPE_NAME)(v) | ||||
| TEST_ENUM_SMALL_TYPE_NAME enum_small_random[] = {T(0),T(1),T(1),T(0),T(0),T(1),T(1),T(1),T(0),T(0),T(0),T(0),T(0),T(1),T(1),T(1),T(1),T(1),T(1),T(0),T(1),T(1),T(0),T(1),T(1),T(0) }; | ||||
| #undef T | ||||
|  | ||||
| #define T(v) (TEST_ENUM_TYPE_NAME)(v) | ||||
| TEST_ENUM_TYPE_NAME enum_0[] = { T(0) }; | ||||
| TEST_ENUM_TYPE_NAME enum_1[] = { T(1) }; | ||||
| TEST_ENUM_TYPE_NAME enum_random[] = {  | ||||
|    T(0), T(268435455), T(127), T(16384), T(16383), | ||||
|    T(2097152), T(2097151), T(128), T(268435456), | ||||
|    T(0), T(2097152), T(268435455), T(127), T(16383), T(16384) }; | ||||
| #undef T | ||||
|  | ||||
| char *repeated_strings_0[] = { (char*)"onestring" }; | ||||
| char *repeated_strings_1[] = { (char*)"two", (char*)"string" }; | ||||
| char *repeated_strings_2[] = { (char*)"many", (char*)"tiny", (char*)"little", (char*)"strings", (char*)"should", (char*)"be", (char*)"handled" }; | ||||
| char *repeated_strings_3[] = { (char*)"one very long strings XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; | ||||
		Reference in New Issue
	
	Block a user