commit
b08b6bf62e
97 changed files with 121 additions and 49470 deletions
@ -1,8 +0,0 @@ |
||||
@echo off |
||||
SET BUILD_TARGET=%~1 |
||||
SET BUILD_CONFIG=%~2 |
||||
|
||||
IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild |
||||
IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug |
||||
|
||||
CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo build.csproj /t:%BUILD_TARGET% /toolsversion:4.0 "/p:Configuration=%BUILD_CONFIG%" %3 %4 %5 %6 |
@ -1,122 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For Clean |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_CleanFolder"> |
||||
<Message Importance="normal" Text="Removing temporary directory '$(CleanFolderDirectory)'"/> |
||||
<Error Text="Can not remove empty directory name." Condition=" '$(CleanFolderDirectory)' == '' " /> |
||||
|
||||
<Exec WorkingDirectory="$(MSBuildProjectDirectory)" Condition="Exists($(CleanFolderDirectory))" Outputs="@(Ignore)" |
||||
Command="MOVE /Y "$(CleanFolderDirectory)" "$(CleanFolderDirectory)-deleted" > NUL" /> |
||||
|
||||
<RemoveDir Directories="$(CleanFolderDirectory)-deleted" Condition="Exists('$(CleanFolderDirectory)-deleted')" /> |
||||
</Target> |
||||
|
||||
<Target Name="_CleanTempOutput"> |
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=%(TempBuildFolder.Identity);" Targets="_CleanFolder" /> |
||||
</Target> |
||||
|
||||
<Target Name="_CleanAll" DependsOnTargets="_CleanTempOutput"> |
||||
<MakeDir Directories="$(BuildTempDirectory)" /> |
||||
<MakeDir Directories="$(BuildOutputDirectory)" /> |
||||
</Target> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For Build |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_CompileAll"> |
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;" Targets="_BuildAllConfigurations" /> |
||||
</Target> |
||||
|
||||
<Target Name="_BuildAllConfigurations"> |
||||
<MSBuild Properties="TargetVersion=cf20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=cf35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=net20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=net35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=net40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=sl20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=sl30;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=sl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="TargetVersion=pl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
</Target> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For Tools |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_BuildTools"> |
||||
|
||||
<MSBuild Targets="Build" ToolsVersion="3.5" Projects="$(ProjectDirectory)\src\ProtocolBuffers.sln" Properties="Configuration=Release;Platform=Any CPU;" /> |
||||
<Copy SourceFiles="%(ToolsOutputItem.Identity)" DestinationFolder="$(BuildOutputDirectory)\tools" /> |
||||
|
||||
<Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.v2.0.config" DestinationFiles="$(NUnitExePath).config" /> |
||||
<Exec |
||||
WorkingDirectory="%(ToolsTestContainer.RootDir)%(ToolsTestContainer.Directory)" |
||||
Command=""$(NUnitExePath)" /nologo /noshadow "%(ToolsTestContainer.Identity)" /xml:"$(BuildTempDirectory)\%(ToolsTestContainer.Filename).xml"" /> |
||||
|
||||
</Target> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For GenerateSource |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_GenerateProjects"> |
||||
<Exec Command=""$(CsProjectProjector)" csproj_templates src\ProtocolBuffersLibrary.sln" WorkingDirectory="$(ProjectDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_CleanTempSource"> |
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=$(SourceTempDirectory);" Targets="_CleanFolder" /> |
||||
<MakeDir Directories="$(SourceTempDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_GenerateSource" DependsOnTargets="_CleanTempSource"> |
||||
<Message Importance="high" Text="Generating source from proto files" /> |
||||
<Exec Command=""$(ProtocExePath)" --proto_path=$(ProtosDirectory) --descriptor_set_out=compiled.pb @(Protos->'%(RelativeDir)%(Filename)%(Extension)', ' ')" WorkingDirectory="$(SourceTempDirectory)" /> |
||||
<Exec Command=""$(ProtogenExePath)" compiled.pb" WorkingDirectory="$(SourceTempDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_CopyGeneratedSource" DependsOnTargets="_GenerateSource"> |
||||
<Copy SourceFiles="%(GeneratedSource.Identity)" DestinationFiles="%(GeneratedSource.TargetDirectory)\%(GeneratedSource.Filename)%(GeneratedSource.Extension)" /> |
||||
</Target> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For Package |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_PackageAll"> |
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=_Publish;" Targets="_BuildAllConfigurations" /> |
||||
</Target> |
||||
|
||||
<Target Name="_GeneratePackage"> |
||||
<Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputPackage)\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" /> |
||||
<Exec Command=""$(ZipExePath)" a -tzip $(BuildTempDirectory)\$(PackageName)-binaries.zip * -x!*.pdb -r" WorkingDirectory="$(BuildOutputPackage)" /> |
||||
<Exec Command=""$(ZipExePath)" a -tzip $(BuildTempDirectory)\$(PackageName)-symbols.zip * -r" WorkingDirectory="$(BuildOutputPackage)" /> |
||||
</Target> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For Benchmark |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_RunBenchmarks"> |
||||
<ItemGroup> |
||||
<BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage1,ProtoBench" /> |
||||
<BenchmarkParameter Include="google_message1.dat" /> |
||||
<BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage1,ProtoBench" /> |
||||
<BenchmarkParameter Include="google_message1.dat" /> |
||||
<BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage2,ProtoBench" /> |
||||
<BenchmarkParameter Include="google_message2.dat" /> |
||||
<BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage2,ProtoBench" /> |
||||
<BenchmarkParameter Include="google_message2.dat" /> |
||||
</ItemGroup> |
||||
|
||||
<Message Text="Running ProtoBench.exe" /> |
||||
<Exec Command="ProtoBench.exe $(BenchmarkArgs) @(BenchmarkParameter->'%(Identity)', ' ') "/log:$(BenchmarkOutputFile)"" |
||||
WorkingDirectory="$(SourceDirectory)\ProtoBench\bin\NET35\Release" /> |
||||
|
||||
</Target> |
||||
|
||||
</Project> |
@ -1,59 +0,0 @@ |
||||
<?xml version="1.0"?> |
||||
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nuspec.xsd"> |
||||
<metadata> |
||||
<id>Google.ProtocolBuffers</id> |
||||
<version>$version$</version> |
||||
<owners>Jon Skeet</owners> |
||||
<authors>Jon Skeet</authors> |
||||
<licenseUrl>http://code.google.com/p/protobuf-csharp-port/source/browse/license.txt</licenseUrl> |
||||
<projectUrl>http://code.google.com/p/protobuf-csharp-port/</projectUrl> |
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
||||
<copyright>Copyright 2008 Google Inc. All rights reserved.</copyright> |
||||
<tags>Protocol Buffers Binary Serialization Format Google</tags> |
||||
|
||||
<title>Google.ProtocolBuffers</title> |
||||
<summary>A managed code generator and library for Google's data interchange format.</summary> |
||||
<description><![CDATA[ |
||||
Protocol Buffers is a binary serialization format and technology, released to the open source community by Google in 2008. |
||||
Its primary use is to produce small fast binary representations of a 'message' or object for serialization or transportation. |
||||
There are various implementations of Protocol Buffers in .NET. This project is a fairly close port of the Google Java implementation. |
||||
|
||||
There are two main parts: |
||||
|
||||
tools/protoc.exe, which takes the textual representation of the protocol buffer and turns it into a binary representation for use with ProtoGen.exe. |
||||
tools/ProtoGen.exe, which takes binary representations of protocol buffer descriptors (as generated by the "stock" protoc binary supplied by Google) and creates C# source code. This is only required at build time. |
||||
|
||||
lib/*/Google.ProtocolBuffers.dll, which is a supporting library. This is required at execution time. |
||||
lib/*/Google.ProtocolBuffers.Serialization.dll, a supplementary library that provides extensions for reading and writing protocol buffers to xml, json, and others. |
||||
|
||||
LINKS: |
||||
|
||||
Project Home - http://code.google.com/p/protobuf-csharp-port |
||||
Online Help - http://help.protobuffers.net |
||||
Developer Guide - http://code.google.com/apis/protocolbuffers/docs/overview.html |
||||
Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html |
||||
|
||||
]]></description> |
||||
|
||||
<references> |
||||
<reference file="Google.ProtocolBuffers.dll"/> |
||||
<reference file="Google.ProtocolBuffers.Serialization.dll"/> |
||||
</references> |
||||
|
||||
</metadata> |
||||
<files> |
||||
<!-- Release Binaries --> |
||||
<file src="..\build_output\Release\**\Google.ProtocolBuffers.???" target="lib\" /> |
||||
<file src="..\build_output\Release\**\Google.ProtocolBuffers.Serialization.???" target="lib\" /> |
||||
<!-- Tools --> |
||||
<file src="..\build_output\tools\**\*" target="tools\" /> |
||||
<file src="..\build_output\protos\**\*" target="tools\" /> |
||||
<!-- Content --> |
||||
<file src="..\build_output\CHANGES.txt" target="tools\"/> |
||||
<file src="..\build_output\license.txt" target="tools\"/> |
||||
<file src="..\build_output\tools\protoc-license.txt" target="tools\"/> |
||||
<!-- Source --> |
||||
<file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/> |
||||
<file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/> |
||||
</files> |
||||
</package> |
@ -1,60 +0,0 @@ |
||||
<?xml version="1.0"?> |
||||
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nuspec.xsd"> |
||||
<metadata> |
||||
<id>Google.ProtocolBuffersLite</id> |
||||
<version>$version$</version> |
||||
<owners>Jon Skeet</owners> |
||||
<authors>Jon Skeet</authors> |
||||
<licenseUrl>http://code.google.com/p/protobuf-csharp-port/source/browse/license.txt</licenseUrl> |
||||
<projectUrl>http://code.google.com/p/protobuf-csharp-port/</projectUrl> |
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
||||
<copyright>Copyright 2008 Google Inc. All rights reserved.</copyright> |
||||
<tags>Protocol Buffers Binary Serialization Format Google</tags> |
||||
|
||||
<title>Google.ProtocolBuffersLite</title> |
||||
<summary>A managed code generator and library for Google's data interchange format.</summary> |
||||
<description><![CDATA[ |
||||
Protocol Buffers is a binary serialization format and technology, released to the open source community by Google in 2008. |
||||
Its primary use is to produce small fast binary representations of a 'message' or object for serialization or transportation. |
||||
There are various implementations of Protocol Buffers in .NET. This project is a fairly close port of the Google Java implementation. |
||||
|
||||
There are two main parts: |
||||
|
||||
tools/protoc.exe, which takes the textual representation of the protocol buffer and turns it into a binary representation for use with ProtoGen.exe. |
||||
tools/ProtoGen.exe, which takes binary representations of protocol buffer descriptors (as generated by the "stock" protoc binary supplied by Google) and creates C# source code. This is only required at build time. |
||||
|
||||
lib/*/Google.ProtocolBuffersLite.dll, which is a supporting library. This is required at execution time. |
||||
lib/*/Google.ProtocolBuffersLite.Serialization.dll, a supplementary library that provides extensions for reading and writing protocol buffers to xml, json, and others. |
||||
|
||||
LINKS: |
||||
|
||||
Project Home - http://code.google.com/p/protobuf-csharp-port |
||||
Online Help - http://help.protobuffers.net |
||||
Developer Guide - http://code.google.com/apis/protocolbuffers/docs/overview.html |
||||
Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html |
||||
|
||||
]]></description> |
||||
|
||||
<references> |
||||
<reference file="Google.ProtocolBuffersLite.dll"/> |
||||
<reference file="Google.ProtocolBuffersLite.Serialization.dll"/> |
||||
</references> |
||||
|
||||
</metadata> |
||||
|
||||
<files> |
||||
<!-- Release Binaries --> |
||||
<file src="..\build_output\Release\**\Google.ProtocolBuffersLite.???" target="lib\" /> |
||||
<file src="..\build_output\Release\**\Google.ProtocolBuffersLite.Serialization.???" target="lib\" /> |
||||
<!-- Tools --> |
||||
<file src="..\build_output\tools\**\*" target="tools\" /> |
||||
<file src="..\build_output\protos\**\*" target="tools\" /> |
||||
<!-- Content --> |
||||
<file src="..\build_output\CHANGES.txt" target="tools\"/> |
||||
<file src="..\build_output\license.txt" target="tools\"/> |
||||
<file src="..\build_output\tools\protoc-license.txt" target="tools\"/> |
||||
<!-- Source --> |
||||
<file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/> |
||||
<file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/> |
||||
</files> |
||||
</package> |
@ -1,2 +0,0 @@ |
||||
@echo off |
||||
CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo build.csproj /toolsversion:4.0 /t:RunBenchmarks %1 %2 %3 %4 |
@ -1,20 +0,0 @@ |
||||
@echo off |
||||
SET BUILD_VERSION=%~1 |
||||
SET BUILD_TARGET=%~2 |
||||
SET BUILD_CONFIG=%~3 |
||||
|
||||
IF NOT "%BUILD_VERSION%"=="" GOTO RUN |
||||
ECHO. |
||||
ECHO Usage: build.bat platform [target] [config] [msbuild arguments] |
||||
ECHO. |
||||
ECHO - platform: CF20, CF35, NET20, NET35, NET40, PL40, SL20, SL30, or SL40 |
||||
ECHO - [target]: Rebuild, Clean, Build, Test, or Publish |
||||
ECHO - [config]: Debug or Release |
||||
ECHO. |
||||
EXIT /B 1 |
||||
|
||||
:RUN |
||||
IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild |
||||
IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug |
||||
|
||||
CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo target.csproj /toolsversion:4.0 %4 %5 %6 "/t:%BUILD_TARGET%" "/p:Configuration=%BUILD_CONFIG%;TargetVersion=%BUILD_VERSION%" |
@ -1,241 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
||||
<!-- build targets --> |
||||
<Target Name="Clean" DependsOnTargets="_CleanAll" /> |
||||
<Target Name="BuildTools" DependsOnTargets="_BuildTools" /> |
||||
<Target Name="GenerateProjects" DependsOnTargets="_GenerateProjects" /> |
||||
<Target Name="GenerateSource" DependsOnTargets="_GenerateSource;_CopyGeneratedSource" /> |
||||
<Target Name="RebuildSource" DependsOnTargets="Clean;BuildTools;GenerateSource" /> |
||||
<Target Name="Build" DependsOnTargets="GenerateProjects;BuildTools;GenerateSource;_CompileAll" /> |
||||
<Target Name="Rebuild" DependsOnTargets="Clean;Build" /> |
||||
<Target Name="GeneratePackage" DependsOnTargets="_PackageAll;_GeneratePackage" /> |
||||
<Target Name="FullBuild" DependsOnTargets="Rebuild;GeneratePackage" /> |
||||
<!-- misc targets --> |
||||
<Target Name="RunBenchmarks" DependsOnTargets="_CleanAll;_BuildTools;_RunBenchmarks" /> |
||||
|
||||
<PropertyGroup> |
||||
<ProjectName>Protocol Buffers</ProjectName> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">Any CPU</Platform> |
||||
|
||||
<!--Directory Paths--> |
||||
<ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory> |
||||
<SourceDirectory>$(ProjectDirectory)\src</SourceDirectory> |
||||
<LibDirectory>$(ProjectDirectory)\lib</LibDirectory> |
||||
<ProtosDirectory>$(ProjectDirectory)\protos</ProtosDirectory> |
||||
|
||||
<SourceTempDirectory>$(ProjectDirectory)\build_temp\GeneratedSource</SourceTempDirectory> |
||||
<BuildTempDirectory>$(ProjectDirectory)\build_temp</BuildTempDirectory> |
||||
<BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory> |
||||
<BuildOutputPackage>$(BuildOutputDirectory)</BuildOutputPackage> |
||||
|
||||
<BenchmarkArgs>/v2 /fast /formats</BenchmarkArgs> |
||||
<BenchmarkOutputFile>$(BuildTempDirectory)\..\BenchmarkResults.txt</BenchmarkOutputFile> |
||||
<BenchmarkProtosDirectory>$(ProjectDirectory)\benchmarks</BenchmarkProtosDirectory> |
||||
|
||||
<PackageName Condition=" '$(PackageName)' == '' ">$(Configuration)</PackageName> |
||||
|
||||
<!--Tool Paths--> |
||||
<ProtocExePath>$(BuildOutputDirectory)\tools\protoc.exe</ProtocExePath> |
||||
<ProtogenExePath>$(BuildOutputDirectory)\tools\protogen.exe</ProtogenExePath> |
||||
<NUnitExePath>$(LibDirectory)\NUnit\tools\nunit-console.exe</NUnitExePath> |
||||
<CsProjectProjector>$(LibDirectory)\CsProjectProjector\CsProjectProjector.exe</CsProjectProjector> |
||||
<ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath> |
||||
|
||||
</PropertyGroup> |
||||
|
||||
<Import Project="Common.targets"/> |
||||
|
||||
<!-- Proto Files --> |
||||
<ItemGroup> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_issues.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_extras.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_extras_full.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_extras_lite.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_extras_xmltest.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_generic_services.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_rpc_interop.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\extest\unittest_rpc_interop_lite.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\descriptor.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\csharp_options.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_csharp_options.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_custom_options.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_embed_optimize_for.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_empty.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_import.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_import_lite.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_lite.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_lite_imports_nonlite.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_mset.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_no_generic_services.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\protobuf\unittest_optimize_for.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\test\google_size.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\google\test\google_speed.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\tutorial\addressbook.proto" /> |
||||
<!-- for benchmark --> |
||||
<Protos Include="$(ProtosDirectory)\benchmarks\google_size.proto" /> |
||||
<Protos Include="$(ProtosDirectory)\benchmarks\google_speed.proto" /> |
||||
</ItemGroup> |
||||
<!-- Generated Source --> |
||||
<ItemGroup> |
||||
<!-- Main protos --> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\CSharpOptions.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\DescriptorProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
|
||||
<!-- Address book sample --> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\AddressBookProtos.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\AddressBook</TargetDirectory> |
||||
</GeneratedSource> |
||||
<!-- Unit test --> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasIssuesProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestXmlSerializerTestProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestCSharpOptionsProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestCustomOptionsProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmbedOptimizeForProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmptyProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestMessageSetProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestNoGenericServicesProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestOptimizeForProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInterop.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInteropLite.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestGenericServices.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<!-- Lite unit test --> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasFullProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasLiteProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteImportNonLiteProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSizeProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSpeedProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\GoogleSizeProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\GoogleSpeedProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
<GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs"> |
||||
<TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> |
||||
</GeneratedSource> |
||||
</ItemGroup> |
||||
<!-- Package Items --> |
||||
<ItemGroup> |
||||
<StaticPackageItem Include="$(ProjectDirectory)\CHANGES.txt" /> |
||||
<StaticPackageItem Include="$(ProjectDirectory)\license.txt" /> |
||||
<StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\descriptor.proto"> |
||||
<TargetDirectory>\protos\google\protobuf</TargetDirectory> |
||||
</StaticPackageItem> |
||||
<StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\compiler\plugin.proto"> |
||||
<TargetDirectory>\protos\google\protobuf\compiler</TargetDirectory> |
||||
</StaticPackageItem> |
||||
<StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\csharp_options.proto"> |
||||
<TargetDirectory>\protos\google\protobuf</TargetDirectory> |
||||
</StaticPackageItem> |
||||
<StaticPackageItem Include="$(ProjectDirectory)\protos\tutorial\addressbook.proto"> |
||||
<TargetDirectory>\protos\tutorial</TargetDirectory> |
||||
</StaticPackageItem> |
||||
</ItemGroup> |
||||
<!-- Tools --> |
||||
<ItemGroup> |
||||
<ToolsTestContainer Include="$(SourceDirectory)\ProtoGen.Test\bin\NET35\Release\Google.ProtocolBuffers.ProtoGen.Test.dll" /> |
||||
|
||||
<ToolsOutputItem Include="$(SourceDirectory)\ProtocolBuffers\bin\NET35\Release\Google.ProtocolBuffers.dll" /> |
||||
<ToolsOutputItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\NET35\Release\Google.ProtocolBuffers.Serialization.dll" /> |
||||
<ToolsOutputItem Include="$(SourceDirectory)\ProtoGen\bin\NET35\Release\ProtoGen.exe" /> |
||||
<ToolsOutputItem Include="$(SourceDirectory)\ProtoGen\bin\NET35\Release\ProtoGen.exe.config" /> |
||||
<ToolsOutputItem Include="$(SourceDirectory)\ProtoMunge\bin\NET35\Release\ProtoMunge.exe" /> |
||||
<ToolsOutputItem Include="$(SourceDirectory)\ProtoDump\bin\NET35\Release\ProtoDump.exe" /> |
||||
<ToolsOutputItem Include="$(SourceDirectory)\ProtoBench\bin\NET35\Release\ProtoBench.exe" /> |
||||
<ToolsOutputItem Include="$(LibDirectory)\protoc.exe" /> |
||||
<ToolsOutputItem Include="$(LibDirectory)\protoc-license.txt" /> |
||||
</ItemGroup> |
||||
<!-- Temporary Directories --> |
||||
<ItemGroup> |
||||
<TempBuildFolder Include="$(BuildTempDirectory)" /> |
||||
<TempBuildFolder Include="$(BuildOutputDirectory)" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\AddressBook\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\AddressBook\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoBench\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoBench\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Serialization\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Test\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Test\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffersLite.Test\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoDump\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoDump\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoGen\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoGen\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoGen.Test\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoGen.Test\bin" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoMunge\obj" /> |
||||
<TempBuildFolder Include="$(SourceDirectory)\ProtoMunge\bin" /> |
||||
</ItemGroup> |
||||
</Project> |
@ -1,248 +0,0 @@ |
||||
#!/usr/bin/env python |
||||
# |
||||
# Copyright 2006, 2007 Google Inc. All Rights Reserved. |
||||
# Author: danderson@google.com (David Anderson) |
||||
# |
||||
# Script for uploading files to a Google Code project. |
||||
# |
||||
# This is intended to be both a useful script for people who want to |
||||
# streamline project uploads and a reference implementation for |
||||
# uploading files to Google Code projects. |
||||
# |
||||
# To upload a file to Google Code, you need to provide a path to the |
||||
# file on your local machine, a small summary of what the file is, a |
||||
# project name, and a valid account that is a member or owner of that |
||||
# project. You can optionally provide a list of labels that apply to |
||||
# the file. The file will be uploaded under the same name that it has |
||||
# in your local filesystem (that is, the "basename" or last path |
||||
# component). Run the script with '--help' to get the exact syntax |
||||
# and available options. |
||||
# |
||||
# Note that the upload script requests that you enter your |
||||
# googlecode.com password. This is NOT your Gmail account password! |
||||
# This is the password you use on googlecode.com for committing to |
||||
# Subversion and uploading files. You can find your password by going |
||||
# to http://code.google.com/hosting/settings when logged in with your |
||||
# Gmail account. If you have already committed to your project's |
||||
# Subversion repository, the script will automatically retrieve your |
||||
# credentials from there (unless disabled, see the output of '--help' |
||||
# for details). |
||||
# |
||||
# If you are looking at this script as a reference for implementing |
||||
# your own Google Code file uploader, then you should take a look at |
||||
# the upload() function, which is the meat of the uploader. You |
||||
# basically need to build a multipart/form-data POST request with the |
||||
# right fields and send it to https://PROJECT.googlecode.com/files . |
||||
# Authenticate the request using HTTP Basic authentication, as is |
||||
# shown below. |
||||
# |
||||
# Licensed under the terms of the Apache Software License 2.0: |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Questions, comments, feature requests and patches are most welcome. |
||||
# Please direct all of these to the Google Code users group: |
||||
# http://groups.google.com/group/google-code-hosting |
||||
|
||||
"""Google Code file uploader script. |
||||
""" |
||||
|
||||
__author__ = 'danderson@google.com (David Anderson)' |
||||
|
||||
import httplib |
||||
import os.path |
||||
import optparse |
||||
import getpass |
||||
import base64 |
||||
import sys |
||||
|
||||
|
||||
def upload(file, project_name, user_name, password, summary, labels=None): |
||||
"""Upload a file to a Google Code project's file server. |
||||
|
||||
Args: |
||||
file: The local path to the file. |
||||
project_name: The name of your project on Google Code. |
||||
user_name: Your Google account name. |
||||
password: The googlecode.com password for your account. |
||||
Note that this is NOT your global Google Account password! |
||||
summary: A small description for the file. |
||||
labels: an optional list of label strings with which to tag the file. |
||||
|
||||
Returns: a tuple: |
||||
http_status: 201 if the upload succeeded, something else if an |
||||
error occured. |
||||
http_reason: The human-readable string associated with http_status |
||||
file_url: If the upload succeeded, the URL of the file on Google |
||||
Code, None otherwise. |
||||
""" |
||||
# The login is the user part of user@gmail.com. If the login provided |
||||
# is in the full user@domain form, strip it down. |
||||
if user_name.endswith('@gmail.com'): |
||||
user_name = user_name[:user_name.index('@gmail.com')] |
||||
|
||||
form_fields = [('summary', summary)] |
||||
if labels is not None: |
||||
form_fields.extend([('label', l.strip()) for l in labels]) |
||||
|
||||
content_type, body = encode_upload_request(form_fields, file) |
||||
|
||||
upload_host = '%s.googlecode.com' % project_name |
||||
upload_uri = '/files' |
||||
auth_token = base64.b64encode('%s:%s'% (user_name, password)) |
||||
headers = { |
||||
'Authorization': 'Basic %s' % auth_token, |
||||
'User-Agent': 'Googlecode.com uploader v0.9.4', |
||||
'Content-Type': content_type, |
||||
} |
||||
|
||||
server = httplib.HTTPSConnection(upload_host) |
||||
server.request('POST', upload_uri, body, headers) |
||||
resp = server.getresponse() |
||||
server.close() |
||||
|
||||
if resp.status == 201: |
||||
location = resp.getheader('Location', None) |
||||
else: |
||||
location = None |
||||
return resp.status, resp.reason, location |
||||
|
||||
|
||||
def encode_upload_request(fields, file_path): |
||||
"""Encode the given fields and file into a multipart form body. |
||||
|
||||
fields is a sequence of (name, value) pairs. file is the path of |
||||
the file to upload. The file will be uploaded to Google Code with |
||||
the same file name. |
||||
|
||||
Returns: (content_type, body) ready for httplib.HTTP instance |
||||
""" |
||||
BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla' |
||||
CRLF = '\r\n' |
||||
|
||||
body = [] |
||||
|
||||
# Add the metadata about the upload first |
||||
for key, value in fields: |
||||
body.extend( |
||||
['--' + BOUNDARY, |
||||
'Content-Disposition: form-data; name="%s"' % key, |
||||
'', |
||||
value, |
||||
]) |
||||
|
||||
# Now add the file itself |
||||
file_name = os.path.basename(file_path) |
||||
f = open(file_path, 'rb') |
||||
file_content = f.read() |
||||
f.close() |
||||
|
||||
body.extend( |
||||
['--' + BOUNDARY, |
||||
'Content-Disposition: form-data; name="filename"; filename="%s"' |
||||
% file_name, |
||||
# The upload server determines the mime-type, no need to set it. |
||||
'Content-Type: application/octet-stream', |
||||
'', |
||||
file_content, |
||||
]) |
||||
|
||||
# Finalize the form body |
||||
body.extend(['--' + BOUNDARY + '--', '']) |
||||
|
||||
return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body) |
||||
|
||||
|
||||
def upload_find_auth(file_path, project_name, summary, labels=None, |
||||
user_name=None, password=None, tries=3): |
||||
"""Find credentials and upload a file to a Google Code project's file server. |
||||
|
||||
file_path, project_name, summary, and labels are passed as-is to upload. |
||||
|
||||
Args: |
||||
file_path: The local path to the file. |
||||
project_name: The name of your project on Google Code. |
||||
summary: A small description for the file. |
||||
labels: an optional list of label strings with which to tag the file. |
||||
config_dir: Path to Subversion configuration directory, 'none', or None. |
||||
user_name: Your Google account name. |
||||
tries: How many attempts to make. |
||||
""" |
||||
|
||||
while tries > 0: |
||||
if user_name is None: |
||||
# Read username if not specified or loaded from svn config, or on |
||||
# subsequent tries. |
||||
sys.stdout.write('Please enter your googlecode.com username: ') |
||||
sys.stdout.flush() |
||||
user_name = sys.stdin.readline().rstrip() |
||||
if password is None: |
||||
# Read password if not loaded from svn config, or on subsequent tries. |
||||
print 'Please enter your googlecode.com password.' |
||||
print '** Note that this is NOT your Gmail account password! **' |
||||
print 'It is the password you use to access Subversion repositories,' |
||||
print 'and can be found here: http://code.google.com/hosting/settings' |
||||
password = getpass.getpass() |
||||
|
||||
status, reason, url = upload(file_path, project_name, user_name, password, |
||||
summary, labels) |
||||
# Returns 403 Forbidden instead of 401 Unauthorized for bad |
||||
# credentials as of 2007-07-17. |
||||
if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]: |
||||
# Rest for another try. |
||||
user_name = password = None |
||||
tries = tries - 1 |
||||
else: |
||||
# We're done. |
||||
break |
||||
|
||||
return status, reason, url |
||||
|
||||
|
||||
def main(): |
||||
parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY ' |
||||
'-p PROJECT [options] FILE') |
||||
parser.add_option('-s', '--summary', dest='summary', |
||||
help='Short description of the file') |
||||
parser.add_option('-p', '--project', dest='project', |
||||
help='Google Code project name') |
||||
parser.add_option('-u', '--user', dest='user', |
||||
help='Your Google Code username') |
||||
parser.add_option('-w', '--password', dest='password', |
||||
help='Your Google Code password') |
||||
parser.add_option('-l', '--labels', dest='labels', |
||||
help='An optional list of comma-separated labels to attach ' |
||||
'to the file') |
||||
|
||||
options, args = parser.parse_args() |
||||
|
||||
if not options.summary: |
||||
parser.error('File summary is missing.') |
||||
elif not options.project: |
||||
parser.error('Project name is missing.') |
||||
elif len(args) < 1: |
||||
parser.error('File to upload not provided.') |
||||
elif len(args) > 1: |
||||
parser.error('Only one file may be specified.') |
||||
|
||||
file_path = args[0] |
||||
|
||||
if options.labels: |
||||
labels = options.labels.split(',') |
||||
else: |
||||
labels = None |
||||
|
||||
status, reason, url = upload_find_auth(file_path, options.project, |
||||
options.summary, labels, |
||||
options.user, options.password) |
||||
if url: |
||||
print 'The file was uploaded successfully.' |
||||
print 'URL: %s' % url |
||||
return 0 |
||||
else: |
||||
print 'An error occurred. Your file was not uploaded.' |
||||
print 'Google Code upload server said: %s (%s)' % (reason, status) |
||||
return 1 |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
sys.exit(main()) |
@ -1,79 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<!-- original location: https://hg01.codeplex.com/nuget/raw-file/tip/src/Core/Authoring/nuspec.xsd --> |
||||
<xs:schema id="nuspec" xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
||||
<xs:element name="package"> |
||||
<xs:complexType> |
||||
<xs:sequence> |
||||
<xs:element name="metadata" maxOccurs="1" minOccurs="1"> |
||||
<xs:complexType> |
||||
<xs:all> |
||||
<xs:element name="id" maxOccurs="1" minOccurs="1" type="xs:string" /> |
||||
<xs:element name="version" maxOccurs="1" minOccurs="1" type="xs:string" /> |
||||
<xs:element name="title" maxOccurs="1" minOccurs="0" type="xs:string" /> |
||||
<xs:element name="authors" maxOccurs="1" minOccurs="1" type="xs:string" /> |
||||
<xs:element name="owners" maxOccurs="1" minOccurs="0" type="xs:string" /> |
||||
<xs:element name="licenseUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" /> |
||||
<xs:element name="projectUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" /> |
||||
<xs:element name="iconUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" /> |
||||
<xs:element name="requireLicenseAcceptance" maxOccurs="1" minOccurs="0" type="xs:boolean" /> |
||||
<xs:element name="description" maxOccurs="1" minOccurs="1" type="xs:string" /> |
||||
<xs:element name="summary" maxOccurs="1" minOccurs="0" type="xs:string" /> |
||||
<xs:element name="releaseNotes" maxOccurs="1" minOccurs="0" type="xs:string" /> |
||||
<xs:element name="copyright" maxOccurs="1" minOccurs="0" type="xs:string" /> |
||||
<xs:element name="language" maxOccurs="1" minOccurs="0" type="xs:string" default="en-US" /> |
||||
<xs:element name="tags" maxOccurs="1" minOccurs="0" type="xs:string" /> |
||||
<xs:element name="dependencies" maxOccurs="1" minOccurs="0"> |
||||
<xs:complexType> |
||||
<xs:sequence> |
||||
<xs:element name="dependency" minOccurs="0" maxOccurs="unbounded"> |
||||
<xs:complexType> |
||||
<xs:attribute name="id" type="xs:string" use="required" /> |
||||
<xs:attribute name="version" type="xs:string" use="optional" /> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
</xs:sequence> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
<xs:element name="frameworkAssemblies" maxOccurs="1" minOccurs="0"> |
||||
<xs:complexType> |
||||
<xs:sequence> |
||||
<xs:element name="frameworkAssembly" minOccurs="0" maxOccurs="unbounded"> |
||||
<xs:complexType> |
||||
<xs:attribute name="assemblyName" type="xs:string" use="required" /> |
||||
<xs:attribute name="targetFramework" type="xs:string" use="optional" /> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
</xs:sequence> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
<xs:element name="references" maxOccurs="1" minOccurs="0"> |
||||
<xs:complexType> |
||||
<xs:sequence> |
||||
<xs:element name="reference" minOccurs="0" maxOccurs="unbounded"> |
||||
<xs:complexType> |
||||
<xs:attribute name="file" type="xs:string" use="required" /> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
</xs:sequence> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
</xs:all> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
<xs:element name="files" minOccurs="0" maxOccurs="1" nillable="true"> |
||||
<xs:complexType> |
||||
<xs:sequence> |
||||
<xs:element name="file" minOccurs="0" maxOccurs="unbounded"> |
||||
<xs:complexType> |
||||
<xs:attribute name="src" use="required" type="xs:string" /> |
||||
<xs:attribute name="target" use="optional" type="xs:string" /> |
||||
<xs:attribute name="exclude" use="optional" type="xs:string" /> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
</xs:sequence> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
</xs:sequence> |
||||
</xs:complexType> |
||||
</xs:element> |
||||
</xs:schema> |
@ -1,186 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project DefaultTargets="Publish" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
||||
<!-- build targets --> |
||||
<Target Name="Clean" DependsOnTargets="_Clean" /> |
||||
<Target Name="Build" DependsOnTargets="_Clean;_Prerequisites;_StampVersion;_GenerateSource;_Build" /> |
||||
<Target Name="Label" DependsOnTargets="_HgLabel" /> |
||||
<Target Name="Package" DependsOnTargets="_HgPack;_NugetPack" /> |
||||
<Target Name="Prepare" DependsOnTargets="Clean;Build;Label;Package" /> |
||||
<Target Name="PushAll" DependsOnTargets="_HgPush;_NugetPush" /> |
||||
<Target Name="Publish" DependsOnTargets="Prepare;PushAll" /> |
||||
|
||||
<PropertyGroup> |
||||
<ProjectName>Protocol Buffers</ProjectName> |
||||
<VersionMajor>2</VersionMajor> |
||||
<VersionMinor>4</VersionMinor> |
||||
<VersionBuild>1</VersionBuild> |
||||
<VersionRevision></VersionRevision> |
||||
<VersionLabel></VersionLabel> |
||||
|
||||
<PackagePrefix>protobuf-csharp-port-</PackagePrefix> |
||||
<PublishDebug>false</PublishDebug> |
||||
|
||||
<GoogleUsername></GoogleUsername> |
||||
<GooglePassword></GooglePassword> |
||||
|
||||
<!--Directory Paths--> |
||||
<ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory> |
||||
<BuildTempDirectory>$(ProjectDirectory)\build_temp</BuildTempDirectory> |
||||
<BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory> |
||||
<SourceDirectory>$(ProjectDirectory)\src</SourceDirectory> |
||||
<LibDirectory>$(ProjectDirectory)\lib</LibDirectory> |
||||
|
||||
<!-- File Paths --> |
||||
<SigningKey>$(ProjectDirectory)\release-key\Google.ProtocolBuffers.snk</SigningKey> |
||||
|
||||
<!--Tool Paths--> |
||||
<HgTool>hg.exe</HgTool> |
||||
<Python>C:\Python25\python.exe</Python> |
||||
<SnTool>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@InstallationFolder)Bin\sn.exe</SnTool> |
||||
<StampVer>$(LibDirectory)\StampVersion.exe</StampVer> |
||||
<ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath> |
||||
<NuGet>$(LibDirectory)\NuGet.exe</NuGet> |
||||
<ProtogenExePath>$(BuildOutputDirectory)\tools\protogen.exe</ProtogenExePath> |
||||
</PropertyGroup> |
||||
|
||||
<!-- Import user settings --> |
||||
<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')" /> |
||||
|
||||
<!-- Files --> |
||||
<ItemGroup> |
||||
</ItemGroup> |
||||
|
||||
<!-- Tasks --> |
||||
|
||||
<Target Name="_Prerequisites" DependsOnTargets="_CheckEnvironment;_ReadVersion" /> |
||||
|
||||
<Target Name="_Clean"> |
||||
<MSBuild Properties="Configuration=Debug;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MSBuild Properties="Configuration=Release;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" /> |
||||
<MakeDir Directories="$(BuildTempDirectory)" /> |
||||
<MakeDir Directories="$(BuildOutputDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_WriteUserConfig"> |
||||
<ItemGroup> |
||||
<Lines Include="<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>" /> |
||||
<Lines Include=" <PropertyGroup>"/> |
||||
<Lines Include=" <GoogleUsername> (Enter your google-code user/password here) </GoogleUsername>"/> |
||||
<Lines Include=" <GooglePassword></GooglePassword>"/> |
||||
<Lines Include=" </PropertyGroup>" /> |
||||
<Lines Include="</Project>" /> |
||||
</ItemGroup> |
||||
<WriteLinesToFile File="$(MSBuildProjectFullPath).user" Lines="@(Lines)" Overwrite="true" Condition="!Exists('$(MSBuildProjectFullPath).user')" /> |
||||
<Exec Command="Notepad.exe $(MSBuildProjectFullPath).user" /> |
||||
</Target> |
||||
|
||||
<Target Name="_CheckEnvironment"> |
||||
<!-- Require google credentials --> |
||||
<CallTarget Targets="_WriteUserConfig" Condition=" '$(GooglePassword)' == '' " /> |
||||
<Error Text="Restart after you verify your credentials in $(MSBuildProjectFullPath).user" Condition=" '$(GooglePassword)' == '' " /> |
||||
<!-- Require Win7.0A SDK to verify strong-name --> |
||||
<Error Text="Unable to locate Win7SDK Tools: $(SnTool)" Condition="!Exists($(SnTool))" /> |
||||
<!-- Require Python 2.5 installed --> |
||||
<!-- Error Text="Unable to locate Python 2.5: $(Python)" Condition="!Exists($(Python))" / --> |
||||
<!-- Require production signing key --> |
||||
<Exec Command="$(HgTool) clone https://bitbucket.org/rknapp/protobuf-csharp-port-keyfile $(ProjectDirectory)\release-key" Condition="!Exists('$(SigningKey)')" /> |
||||
<Error Text="Unable to locate release signing key: $(SigningKey)" Condition="!Exists($(SigningKey))" /> |
||||
</Target> |
||||
|
||||
<Target Name="_ReadVersion" Condition=" '$(VersionLabel)' == '' "> |
||||
<Exec Command="$(HgTool) log -l 1 --template "{rev}" > "$(BuildTempDirectory)\revision.txt""></Exec> |
||||
<ReadLinesFromFile File="$(BuildTempDirectory)\revision.txt"> |
||||
<Output TaskParameter="Lines" PropertyName="VersionRevision"/> |
||||
</ReadLinesFromFile> |
||||
|
||||
<PropertyGroup> |
||||
<VersionLabel>$(VersionMajor).$(VersionMinor).$(VersionBuild).$(VersionRevision)</VersionLabel> |
||||
</PropertyGroup> |
||||
|
||||
<Message Text="Building version $(VersionLabel)" Importance="high" /> |
||||
</Target> |
||||
|
||||
<Target Name="_StampVersion" DependsOnTargets="_Prerequisites"> |
||||
<Exec Command="$(StampVer) /major:$(VersionMajor) /minor:$(VersionMinor) /build:$(VersionBuild) /revision:$(VersionRevision)" WorkingDirectory="$(SourceDirectory)" /> |
||||
<Exec Command="FIND "$(VersionLabel)" ProtocolBuffers\Properties\AssemblyInfo.cs" WorkingDirectory="$(SourceDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_GenerateSource" DependsOnTargets="_Prerequisites"> |
||||
<MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="GenerateProjects;BuildTools;GenerateSource" Projects="$(MSBuildProjectDirectory)\build.csproj" /> |
||||
<Exec Command=""$(SnTool)" -T "$(ProtogenExePath)" > signkey.txt" WorkingDirectory="$(BuildTempDirectory)" /> |
||||
<!-- Make sure we are signing with the correct key --> |
||||
<Exec Command="FIND "55f7125234beb589" signkey.txt" WorkingDirectory="$(BuildTempDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_Build" DependsOnTargets="_Prerequisites"> |
||||
<!-- Release Build --> |
||||
<MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" /> |
||||
<MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-release" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" /> |
||||
<!-- Debug Build --> |
||||
<MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" /> |
||||
<MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-full" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" /> |
||||
</Target> |
||||
|
||||
<Target Name="_HgPack" DependsOnTargets="_Prerequisites"> |
||||
<Exec Command="$(HgTool) archive $(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip" WorkingDirectory="$(ProjectDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_HgLabel" DependsOnTargets="_Prerequisites"> |
||||
<Exec Command="$(HgTool) commit -m "version $(VersionLabel)"" WorkingDirectory="$(ProjectDirectory)" /> |
||||
<Exec Command="$(HgTool) tag $(VersionLabel)" WorkingDirectory="$(ProjectDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_HgPush" DependsOnTargets="_Prerequisites"> |
||||
<Exec Command="$(HgTool) push" WorkingDirectory="$(ProjectDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_PkgPush" DependsOnTargets="_Prerequisites"> |
||||
<PropertyGroup> |
||||
<UploadPackage>$(Python) "$(MSBuildProjectDirectory)\googlecode_upload.py" --project protobuf-csharp-port --user "$(GoogleUsername)" --password "$(GooglePassword)"</UploadPackage> |
||||
|
||||
<SourcePackage>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip</SourcePackage> |
||||
<ReleasePackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-binaries.zip</ReleasePackageBin> |
||||
<ReleasePackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-symbols.zip</ReleasePackageSyb> |
||||
<DebugPackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-binaries.zip</DebugPackageBin> |
||||
<DebugPackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-symbols.zip</DebugPackageSyb> |
||||
</PropertyGroup> |
||||
|
||||
<Error Condition="!Exists('$(SourcePackage)')" Text="File not found: $(SourcePackage)" /> |
||||
<Error Condition="!Exists('$(ReleasePackageBin)')" Text="File not found: $(ReleasePackageBin)" /> |
||||
<Error Condition="!Exists('$(ReleasePackageSyb)')" Text="File not found: $(ReleasePackageSyb)" /> |
||||
<Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageBin)')" Text="File not found: $(DebugPackageBin)" /> |
||||
<Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageSyb)')" Text="File not found: $(DebugPackageSyb)" /> |
||||
|
||||
<Exec WorkingDirectory="$(ProjectDirectory)" |
||||
Command="$(UploadPackage) --labels Type-Source,Featured --summary "Version $(VersionLabel) source" $(SourcePackage)" /> |
||||
|
||||
<Exec WorkingDirectory="$(ProjectDirectory)" |
||||
Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) release binaries only" $(ReleasePackageBin)" /> |
||||
<Exec WorkingDirectory="$(ProjectDirectory)" |
||||
Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) release binaries and symbols" $(ReleasePackageSyb)" /> |
||||
|
||||
<Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' " |
||||
Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) all binaries" $(DebugPackageBin)" /> |
||||
<Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' " |
||||
Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) all binaries and symbols" $(DebugPackageSyb)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_NugetPack" DependsOnTargets="_Prerequisites"> |
||||
<Exec WorkingDirectory="$(MSBuildProjectDirectory)" |
||||
Command="$(NuGet) update -self" /> |
||||
<Exec WorkingDirectory="$(MSBuildProjectDirectory)" |
||||
Command="$(NuGet) pack Google.ProtocolBuffers.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" /> |
||||
<Exec WorkingDirectory="$(MSBuildProjectDirectory)" |
||||
Command="$(NuGet) pack Google.ProtocolBuffersLite.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" /> |
||||
</Target> |
||||
|
||||
<Target Name="_NugetPush" DependsOnTargets="_Prerequisites"> |
||||
<Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).nupkg" ContinueOnError="true" /> |
||||
<Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).nupkg" ContinueOnError="true" /> |
||||
|
||||
<Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).symbols.nupkg" ContinueOnError="true" /> |
||||
<Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).symbols.nupkg" ContinueOnError="true" /> |
||||
</Target> |
||||
|
||||
</Project> |
@ -1,167 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
High-level Targets |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="Clean" DependsOnTargets="_Clean" /> |
||||
<Target Name="Build" DependsOnTargets="_Compile;_Test" /> |
||||
<Target Name="Test" DependsOnTargets="_Test" /> |
||||
<Target Name="Rebuild" DependsOnTargets="Clean;Build" /> |
||||
<Target Name="Publish" DependsOnTargets="Clean;Build;_Publish" /> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Properties |
||||
*********************************************************************************************** --> |
||||
|
||||
<PropertyGroup> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">Any CPU</Platform> |
||||
<TargetVersion Condition=" '$(TargetVersion)' == '' ">NET20</TargetVersion> |
||||
<BuildParams></BuildParams> |
||||
|
||||
<!--Directory Paths--> |
||||
<ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory> |
||||
<SourceDirectory>$(ProjectDirectory)\src</SourceDirectory> |
||||
<LibDirectory>$(ProjectDirectory)\lib</LibDirectory> |
||||
|
||||
<!--File Paths--> |
||||
<BuildTempDirectory>$(ProjectDirectory)\build_temp\$(Configuration)\$(TargetVersion)</BuildTempDirectory> |
||||
<BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\$(TargetVersion)</BuildOutputDirectory> |
||||
<SolutionFile>$(SourceDirectory)\ProtocolBuffersLibrary.$(TargetVersion).sln</SolutionFile> |
||||
|
||||
<!--Tool Paths--> |
||||
<NUnitExePath>$(LibDirectory)\NUnit\tools\nunit-console.exe</NUnitExePath> |
||||
<StatLightExePath>$(LibDirectory)\StatLight\tools\StatLight.exe</StatLightExePath> |
||||
</PropertyGroup> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Target Versions |
||||
*********************************************************************************************** --> |
||||
|
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'NET20' "> |
||||
<BuildTools>3.5</BuildTools> |
||||
<TestFramework>NUNIT</TestFramework> |
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'NET35' "> |
||||
<BuildTools>3.5</BuildTools> |
||||
<TestFramework>NUNIT</TestFramework> |
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'NET40' "> |
||||
<BuildTools>4.0</BuildTools> |
||||
<TestFramework>NUNIT</TestFramework> |
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'CF20' "> |
||||
<BuildTools>3.5</BuildTools> |
||||
<TestFramework>NONE</TestFramework> |
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'CF35' "> |
||||
<BuildTools>3.5</BuildTools> |
||||
<TestFramework>NONE</TestFramework> |
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'SL20' "> |
||||
<BuildTools>3.5</BuildTools> |
||||
<TestFramework>SILVERLIGHT</TestFramework> |
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'SL30' "> |
||||
<BuildTools>3.5</BuildTools> |
||||
<TestFramework>SILVERLIGHT</TestFramework> |
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'SL40' "> |
||||
<BuildTools>4.0</BuildTools> |
||||
<TestFramework>SILVERLIGHT</TestFramework> |
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(TargetVersion)' == 'PL40' "> |
||||
<BuildTools>4.0</BuildTools> |
||||
<TestFramework>SILVERLIGHT</TestFramework> |
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
||||
<BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\portable-net40+sl4+sl5+wp7+wp8+win8</BuildOutputDirectory> |
||||
</PropertyGroup> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
File Groups |
||||
*********************************************************************************************** --> |
||||
|
||||
<ItemGroup> |
||||
<WorkingDirectories Include="$(BuildTempDirectory)" /> |
||||
<WorkingDirectories Include="$(BuildOutputDirectory)" /> |
||||
|
||||
<TestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.dll" /> |
||||
<TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.dll" /> |
||||
<TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.dll" /> |
||||
|
||||
<StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.xap" /> |
||||
<StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.xap" /> |
||||
<StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.xap" /> |
||||
|
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.dll" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.pdb" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.xml" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.dll" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.pdb" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.xml" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.dll" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.pdb" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.xml" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.dll" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.pdb" /> |
||||
<PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.xml" /> |
||||
</ItemGroup> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For Build |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_Configured"> |
||||
<Message Text="Building $(TargetVersion) for configuration $(Configuration), platform $(Platform)" Importance="normal" /> |
||||
<Error Text="Unknown or missing value for TargetVersion=[value]" Condition=" '$(BuildTools)' == '' " /> |
||||
</Target> |
||||
|
||||
<Target Name="_Clean" DependsOnTargets="_Configured"> |
||||
<RemoveDir Directories="@(WorkingDirectories)" Condition="Exists(%(WorkingDirectories.Identity))" /> |
||||
<MSBuild Targets="Clean" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)" |
||||
Properties="Configuration=$(Configuration);Platform=$(Platform);" |
||||
/> |
||||
</Target> |
||||
|
||||
<Target Name="_Compile" DependsOnTargets="_Configured"> |
||||
<MSBuild Targets="Build" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)" |
||||
Properties="Configuration=$(Configuration);Platform=$(Platform);$(BuildParams)" |
||||
/> |
||||
</Target> |
||||
|
||||
<Target Name="_Publish" DependsOnTargets="_Configured"> |
||||
<MakeDir Directories="$(BuildOutputDirectory)" /> |
||||
<Copy SourceFiles="@(PublishItem)" DestinationFolder="$(BuildOutputDirectory)" /> |
||||
</Target> |
||||
|
||||
<!-- ********************************************************************************************** |
||||
Targets For Test |
||||
*********************************************************************************************** --> |
||||
|
||||
<Target Name="_Test" DependsOnTargets="_Configured"> |
||||
<MakeDir Directories="$(BuildTempDirectory)" /> |
||||
<CallTarget Targets="_RunNunit" Condition=" '$(TestFramework)'=='NUNIT' " /> |
||||
<CallTarget Targets="_RunStatLight" Condition=" '$(TestFramework)'=='SILVERLIGHT' " /> |
||||
</Target> |
||||
|
||||
<Target Name="_RunNunit"> |
||||
<Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.$(TargetFrameworkVersion).config" DestinationFiles="$(NUnitExePath).config" /> |
||||
<Exec Command=""$(NUnitExePath)" /nologo /noshadow "%(TestContainer.Identity)" /xml:"$(BuildTempDirectory)\%(TestContainer.Filename).xml"" /> |
||||
</Target> |
||||
|
||||
<Target Name="_RunStatLight"> |
||||
<Exec |
||||
Command=""$(StatLightExePath)" -x %(StatLightTestContainer.Identity) --ReportOutputFileType=NUnit --ReportOutputFile=$(BuildTempDirectory)\%(StatLightTestContainer.Filename).xml" /> |
||||
</Target> |
||||
|
||||
</Project> |
@ -1,71 +0,0 @@ |
||||
syntax = "proto2"; |
||||
|
||||
package protobuf_unittest_extra; |
||||
|
||||
option csharp_namespace = "Google.ProtocolBuffers.TestProtos"; |
||||
option optimize_for = CODE_SIZE; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
message TestInteropPerson { |
||||
required string name = 1; |
||||
required int32 id = 2; |
||||
optional string email = 3; |
||||
repeated int32 codes = 10 [packed=true]; |
||||
|
||||
enum PhoneType { |
||||
MOBILE = 0; |
||||
HOME = 1; |
||||
WORK = 2; |
||||
} |
||||
|
||||
message PhoneNumber { |
||||
required string number = 1; |
||||
optional PhoneType type = 2 [default = HOME]; |
||||
} |
||||
|
||||
repeated PhoneNumber phone = 4; |
||||
|
||||
repeated group Addresses = 5 { |
||||
required string address = 1; |
||||
optional string address2 = 2; |
||||
required string city = 3; |
||||
required string state = 4; |
||||
required fixed32 zip = 5; |
||||
} |
||||
|
||||
extensions 100 to 199; |
||||
} |
||||
|
||||
message TestInteropEmployeeId { |
||||
required string number = 1; |
||||
} |
||||
|
||||
extend TestInteropPerson { |
||||
// Note: changed from required to optional, as required fields are not |
||||
// permitted in extensions. (The fact that this was allowed in protogen |
||||
// before was almost certainly a bug.) |
||||
optional TestInteropEmployeeId employee_id = 126; |
||||
} |
||||
|
||||
message TestMissingFieldsA { |
||||
required string name = 1; |
||||
required int32 id = 2; |
||||
optional string email = 3; |
||||
|
||||
message SubA { |
||||
required int32 count = 5; |
||||
repeated string values = 6; |
||||
} |
||||
optional SubA testA = 11; |
||||
} |
||||
|
||||
message TestMissingFieldsB { |
||||
required string name = 1; |
||||
required int32 id = 2; |
||||
optional string website = 4; |
||||
|
||||
message SubB { |
||||
repeated string values = 7; |
||||
} |
||||
optional SubB testB = 12; |
||||
} |
@ -1,115 +0,0 @@ |
||||
syntax = "proto2"; |
||||
|
||||
package protobuf_unittest_extra; |
||||
|
||||
option csharp_namespace = "Google.ProtocolBuffers.TestProtos"; |
||||
option optimize_for = LITE_RUNTIME; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
message TestRequiredLite { |
||||
required int32 d = 1; |
||||
required ExtraEnum en = 2 [default = DEFAULT]; |
||||
} |
||||
|
||||
enum ExtraEnum { |
||||
DEFAULT = 10; |
||||
EXLITE_FOO = 7; |
||||
EXLITE_BAR = 8; |
||||
EXLITE_BAZ = 9; |
||||
} |
||||
|
||||
message TestInteropPersonLite { |
||||
required string name = 1; |
||||
required int32 id = 2; |
||||
optional string email = 3; |
||||
repeated int32 codes = 10 [packed=true]; |
||||
|
||||
enum PhoneType { |
||||
MOBILE = 0; |
||||
HOME = 1; |
||||
WORK = 2; |
||||
} |
||||
|
||||
message PhoneNumber { |
||||
required string number = 1; |
||||
optional PhoneType type = 2 [default = HOME]; |
||||
} |
||||
|
||||
repeated PhoneNumber phone = 4; |
||||
|
||||
repeated group Addresses = 5 { |
||||
required string address = 1; |
||||
optional string address2 = 2; |
||||
required string city = 3; |
||||
required string state = 4; |
||||
required fixed32 zip = 5; |
||||
} |
||||
|
||||
extensions 100 to 199; |
||||
} |
||||
|
||||
message TestInteropEmployeeIdLite { |
||||
required string number = 1; |
||||
} |
||||
|
||||
extend TestInteropPersonLite { |
||||
// Note: changed from required to optional, as required fields are not |
||||
// permitted in extensions. (The fact that this was allowed in protogen |
||||
// before was almost certainly a bug.) |
||||
optional TestInteropEmployeeIdLite employee_id_lite = 126; |
||||
} |
||||
|
||||
/* Removed from unittest_lite.proto and added back here */ |
||||
|
||||
message TestUnpackedExtensionsLite { |
||||
extensions 1 to max; |
||||
} |
||||
|
||||
message TestUnpackedTypesLite { |
||||
repeated int32 unpacked_int32 = 90; |
||||
repeated int64 unpacked_int64 = 91; |
||||
repeated uint32 unpacked_uint32 = 92; |
||||
repeated uint64 unpacked_uint64 = 93; |
||||
repeated sint32 unpacked_sint32 = 94; |
||||
repeated sint64 unpacked_sint64 = 95; |
||||
repeated fixed32 unpacked_fixed32 = 96; |
||||
repeated fixed64 unpacked_fixed64 = 97; |
||||
repeated sfixed32 unpacked_sfixed32 = 98; |
||||
repeated sfixed64 unpacked_sfixed64 = 99; |
||||
repeated float unpacked_float = 100; |
||||
repeated double unpacked_double = 101; |
||||
repeated bool unpacked_bool = 102; |
||||
repeated UnpackedTypesForeignEnumLite unpacked_enum = 103; |
||||
} |
||||
|
||||
extend TestUnpackedExtensionsLite { |
||||
repeated int32 unpacked_int32_extension_lite = 90; |
||||
repeated int64 unpacked_int64_extension_lite = 91; |
||||
repeated uint32 unpacked_uint32_extension_lite = 92; |
||||
repeated uint64 unpacked_uint64_extension_lite = 93; |
||||
repeated sint32 unpacked_sint32_extension_lite = 94; |
||||
repeated sint64 unpacked_sint64_extension_lite = 95; |
||||
repeated fixed32 unpacked_fixed32_extension_lite = 96; |
||||
repeated fixed64 unpacked_fixed64_extension_lite = 97; |
||||
repeated sfixed32 unpacked_sfixed32_extension_lite = 98; |
||||
repeated sfixed64 unpacked_sfixed64_extension_lite = 99; |
||||
repeated float unpacked_float_extension_lite = 100; |
||||
repeated double unpacked_double_extension_lite = 101; |
||||
repeated bool unpacked_bool_extension_lite = 102; |
||||
repeated UnpackedTypesForeignEnumLite unpacked_enum_extension_lite = 103; |
||||
} |
||||
|
||||
enum UnpackedTypesForeignEnumLite { |
||||
FOREIGN_LITE_FOO = 4; |
||||
FOREIGN_LITE_BAR = 5; |
||||
FOREIGN_LITE_BAZ = 6; |
||||
} |
||||
|
||||
message BucketOfBytes { |
||||
optional bytes value = 1; |
||||
|
||||
} |
||||
message BucketOfBytesEx { |
||||
optional bytes value = 1; |
||||
optional bytes value2 = 255; |
||||
} |
@ -1,53 +0,0 @@ |
||||
syntax = "proto2"; |
||||
|
||||
option csharp_namespace = "Google.ProtocolBuffers.TestProtos"; |
||||
|
||||
package protobuf_unittest_extra; |
||||
|
||||
option optimize_for = SPEED; |
||||
|
||||
enum EnumOptions { |
||||
ONE = 0; |
||||
TWO = 1; |
||||
THREE = 2; |
||||
} |
||||
|
||||
message TestXmlChild { |
||||
repeated EnumOptions options = 3; |
||||
optional bytes binary = 4; |
||||
} |
||||
|
||||
message TestXmlNoFields { |
||||
} |
||||
|
||||
message TestXmlRescursive { |
||||
optional TestXmlRescursive child = 1; |
||||
} |
||||
|
||||
message TestXmlMessage { |
||||
|
||||
optional int64 number = 6; |
||||
repeated int32 numbers = 2; |
||||
optional string text = 3; |
||||
repeated string textlines = 700; |
||||
optional bool valid = 5; |
||||
|
||||
optional TestXmlChild child = 1; |
||||
repeated group Children = 401 { |
||||
repeated EnumOptions options = 3; |
||||
optional bytes binary = 4; |
||||
} |
||||
|
||||
extensions 100 to 199; |
||||
} |
||||
|
||||
message TestXmlExtension { |
||||
required int32 number = 1; |
||||
} |
||||
|
||||
extend TestXmlMessage { |
||||
optional EnumOptions extension_enum = 101; |
||||
optional string extension_text = 102; |
||||
repeated int32 extension_number = 103 [packed = true]; |
||||
optional TestXmlExtension extension_message = 199; |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,31 +0,0 @@ |
||||
using System; |
||||
using System.Reflection; |
||||
using System.Runtime.CompilerServices; |
||||
using System.Runtime.InteropServices; |
||||
|
||||
// General Information about an assembly is controlled through the following |
||||
// set of attributes. Change these attribute values to modify the information |
||||
// associated with an assembly. |
||||
|
||||
[assembly: AssemblyTitle("ProtoBench")] |
||||
[assembly: AssemblyDescription("")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyCompany("")] |
||||
[assembly: AssemblyProduct("ProtoBench")] |
||||
[assembly: AssemblyCopyright("Copyright © 2009")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
|
||||
// Version information for an assembly consists of the following four values: |
||||
// |
||||
// Major Version |
||||
// Minor Version |
||||
// Build Number |
||||
// Revision |
||||
// |
||||
// You can specify all the values or you can default the Build and Revision Numbers |
||||
// by using the '*' as shown below: |
||||
// [assembly: AssemblyVersion("2.4.1.555")] |
||||
|
||||
[assembly: AssemblyVersion("2.4.1.555")] |
||||
[assembly: AssemblyFileVersion("2.4.1.555")] |
File diff suppressed because it is too large
Load Diff
@ -1,347 +0,0 @@ |
||||
// Generated by the protocol buffer compiler. DO NOT EDIT! |
||||
// source: google/protobuf/unittest_import.proto |
||||
#pragma warning disable 1591, 0612, 3021 |
||||
#region Designer generated code |
||||
|
||||
using pb = global::Google.ProtocolBuffers; |
||||
using pbc = global::Google.ProtocolBuffers.Collections; |
||||
using pbd = global::Google.ProtocolBuffers.Descriptors; |
||||
using scg = global::System.Collections.Generic; |
||||
namespace Google.ProtocolBuffers.TestProtos { |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public static partial class UnittestImport { |
||||
|
||||
#region Extension registration |
||||
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) { |
||||
} |
||||
#endregion |
||||
#region Static variables |
||||
internal static pbd::MessageDescriptor internal__static_protobuf_unittest_import_ImportMessage__Descriptor; |
||||
internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder> internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable; |
||||
#endregion |
||||
#region Descriptor |
||||
public static pbd::FileDescriptor Descriptor { |
||||
get { return descriptor; } |
||||
} |
||||
private static pbd::FileDescriptor descriptor; |
||||
|
||||
static UnittestImport() { |
||||
byte[] descriptorData = global::System.Convert.FromBase64String( |
||||
string.Concat( |
||||
"CiVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0LnByb3RvEhhwcm90", |
||||
"b2J1Zl91bml0dGVzdF9pbXBvcnQaLGdvb2dsZS9wcm90b2J1Zi91bml0dGVz", |
||||
"dF9pbXBvcnRfcHVibGljLnByb3RvIhoKDUltcG9ydE1lc3NhZ2USCQoBZBgB", |
||||
"IAEoBSo8CgpJbXBvcnRFbnVtEg4KCklNUE9SVF9GT08QBxIOCgpJTVBPUlRf", |
||||
"QkFSEAgSDgoKSU1QT1JUX0JBWhAJQkMKGGNvbS5nb29nbGUucHJvdG9idWYu", |
||||
"dGVzdEgB+AEBqgIhR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9z", |
||||
"UAA=")); |
||||
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { |
||||
descriptor = root; |
||||
internal__static_protobuf_unittest_import_ImportMessage__Descriptor = Descriptor.MessageTypes[0]; |
||||
internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable = |
||||
new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder>(internal__static_protobuf_unittest_import_ImportMessage__Descriptor, |
||||
new string[] { "D", }); |
||||
pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance(); |
||||
RegisterAllExtensions(registry); |
||||
global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.RegisterAllExtensions(registry); |
||||
return registry; |
||||
}; |
||||
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData, |
||||
new pbd::FileDescriptor[] { |
||||
global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.Descriptor, |
||||
}, assigner); |
||||
} |
||||
#endregion |
||||
|
||||
} |
||||
#region Enums |
||||
public enum ImportEnum { |
||||
IMPORT_FOO = 7, |
||||
IMPORT_BAR = 8, |
||||
IMPORT_BAZ = 9, |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
#region Messages |
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class ImportMessage : pb::GeneratedMessage<ImportMessage, ImportMessage.Builder> { |
||||
private ImportMessage() { } |
||||
private static readonly ImportMessage defaultInstance = new ImportMessage().MakeReadOnly(); |
||||
private static readonly string[] _importMessageFieldNames = new string[] { "d" }; |
||||
private static readonly uint[] _importMessageFieldTags = new uint[] { 8 }; |
||||
public static ImportMessage DefaultInstance { |
||||
get { return defaultInstance; } |
||||
} |
||||
|
||||
public override ImportMessage DefaultInstanceForType { |
||||
get { return DefaultInstance; } |
||||
} |
||||
|
||||
protected override ImportMessage ThisMessage { |
||||
get { return this; } |
||||
} |
||||
|
||||
public static pbd::MessageDescriptor Descriptor { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImport.internal__static_protobuf_unittest_import_ImportMessage__Descriptor; } |
||||
} |
||||
|
||||
protected override pb::FieldAccess.FieldAccessorTable<ImportMessage, ImportMessage.Builder> InternalFieldAccessors { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImport.internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable; } |
||||
} |
||||
|
||||
public const int DFieldNumber = 1; |
||||
private bool hasD; |
||||
private int d_; |
||||
public bool HasD { |
||||
get { return hasD; } |
||||
} |
||||
public int D { |
||||
get { return d_; } |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
public override void WriteTo(pb::ICodedOutputStream output) { |
||||
CalcSerializedSize(); |
||||
string[] field_names = _importMessageFieldNames; |
||||
if (hasD) { |
||||
output.WriteInt32(1, field_names[0], D); |
||||
} |
||||
UnknownFields.WriteTo(output); |
||||
} |
||||
|
||||
private int memoizedSerializedSize = -1; |
||||
public override int SerializedSize { |
||||
get { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
return CalcSerializedSize(); |
||||
} |
||||
} |
||||
|
||||
private int CalcSerializedSize() { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
|
||||
size = 0; |
||||
if (hasD) { |
||||
size += pb::CodedOutputStream.ComputeInt32Size(1, D); |
||||
} |
||||
size += UnknownFields.SerializedSize; |
||||
memoizedSerializedSize = size; |
||||
return size; |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ByteString data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(byte[] data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(global::System.IO.Stream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseDelimitedFrom(global::System.IO.Stream input) { |
||||
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ICodedInputStream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
private ImportMessage MakeReadOnly() { |
||||
return this; |
||||
} |
||||
|
||||
public static Builder CreateBuilder() { return new Builder(); } |
||||
public override Builder ToBuilder() { return CreateBuilder(this); } |
||||
public override Builder CreateBuilderForType() { return new Builder(); } |
||||
public static Builder CreateBuilder(ImportMessage prototype) { |
||||
return new Builder(prototype); |
||||
} |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class Builder : pb::GeneratedBuilder<ImportMessage, Builder> { |
||||
protected override Builder ThisBuilder { |
||||
get { return this; } |
||||
} |
||||
public Builder() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
} |
||||
internal Builder(ImportMessage cloneFrom) { |
||||
result = cloneFrom; |
||||
resultIsReadOnly = true; |
||||
} |
||||
|
||||
private bool resultIsReadOnly; |
||||
private ImportMessage result; |
||||
|
||||
private ImportMessage PrepareBuilder() { |
||||
if (resultIsReadOnly) { |
||||
ImportMessage original = result; |
||||
result = new ImportMessage(); |
||||
resultIsReadOnly = false; |
||||
MergeFrom(original); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { return result.IsInitialized; } |
||||
} |
||||
|
||||
protected override ImportMessage MessageBeingBuilt { |
||||
get { return PrepareBuilder(); } |
||||
} |
||||
|
||||
public override Builder Clear() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
return this; |
||||
} |
||||
|
||||
public override Builder Clone() { |
||||
if (resultIsReadOnly) { |
||||
return new Builder(result); |
||||
} else { |
||||
return new Builder().MergeFrom(result); |
||||
} |
||||
} |
||||
|
||||
public override pbd::MessageDescriptor DescriptorForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.ImportMessage.Descriptor; } |
||||
} |
||||
|
||||
public override ImportMessage DefaultInstanceForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; } |
||||
} |
||||
|
||||
public override ImportMessage BuildPartial() { |
||||
if (resultIsReadOnly) { |
||||
return result; |
||||
} |
||||
resultIsReadOnly = true; |
||||
return result.MakeReadOnly(); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::IMessage other) { |
||||
if (other is ImportMessage) { |
||||
return MergeFrom((ImportMessage) other); |
||||
} else { |
||||
base.MergeFrom(other); |
||||
return this; |
||||
} |
||||
} |
||||
|
||||
public override Builder MergeFrom(ImportMessage other) { |
||||
if (other == global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance) return this; |
||||
PrepareBuilder(); |
||||
if (other.HasD) { |
||||
D = other.D; |
||||
} |
||||
this.MergeUnknownFields(other.UnknownFields); |
||||
return this; |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input) { |
||||
return MergeFrom(input, pb::ExtensionRegistry.Empty); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
PrepareBuilder(); |
||||
pb::UnknownFieldSet.Builder unknownFields = null; |
||||
uint tag; |
||||
string field_name; |
||||
while (input.ReadTag(out tag, out field_name)) { |
||||
if(tag == 0 && field_name != null) { |
||||
int field_ordinal = global::System.Array.BinarySearch(_importMessageFieldNames, field_name, global::System.StringComparer.Ordinal); |
||||
if(field_ordinal >= 0) |
||||
tag = _importMessageFieldTags[field_ordinal]; |
||||
else { |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
continue; |
||||
} |
||||
} |
||||
switch (tag) { |
||||
case 0: { |
||||
throw pb::InvalidProtocolBufferException.InvalidTag(); |
||||
} |
||||
default: { |
||||
if (pb::WireFormat.IsEndGroupTag(tag)) { |
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
break; |
||||
} |
||||
case 8: { |
||||
result.hasD = input.ReadInt32(ref result.d_); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
|
||||
|
||||
public bool HasD { |
||||
get { return result.hasD; } |
||||
} |
||||
public int D { |
||||
get { return result.D; } |
||||
set { SetD(value); } |
||||
} |
||||
public Builder SetD(int value) { |
||||
PrepareBuilder(); |
||||
result.hasD = true; |
||||
result.d_ = value; |
||||
return this; |
||||
} |
||||
public Builder ClearD() { |
||||
PrepareBuilder(); |
||||
result.hasD = false; |
||||
result.d_ = 0; |
||||
return this; |
||||
} |
||||
} |
||||
static ImportMessage() { |
||||
object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImport.Descriptor, null); |
||||
} |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
} |
||||
|
||||
#endregion Designer generated code |
@ -1,333 +0,0 @@ |
||||
// Generated by the protocol buffer compiler. DO NOT EDIT! |
||||
// source: google/protobuf/unittest_import_public.proto |
||||
#pragma warning disable 1591, 0612, 3021 |
||||
#region Designer generated code |
||||
|
||||
using pb = global::Google.ProtocolBuffers; |
||||
using pbc = global::Google.ProtocolBuffers.Collections; |
||||
using pbd = global::Google.ProtocolBuffers.Descriptors; |
||||
using scg = global::System.Collections.Generic; |
||||
namespace Google.ProtocolBuffers.TestProtos { |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public static partial class UnittestImportPublic { |
||||
|
||||
#region Extension registration |
||||
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) { |
||||
} |
||||
#endregion |
||||
#region Static variables |
||||
internal static pbd::MessageDescriptor internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor; |
||||
internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage, global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder> internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable; |
||||
#endregion |
||||
#region Descriptor |
||||
public static pbd::FileDescriptor Descriptor { |
||||
get { return descriptor; } |
||||
} |
||||
private static pbd::FileDescriptor descriptor; |
||||
|
||||
static UnittestImportPublic() { |
||||
byte[] descriptorData = global::System.Convert.FromBase64String( |
||||
string.Concat( |
||||
"Cixnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0X3B1YmxpYy5wcm90", |
||||
"bxIYcHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0IiAKE1B1YmxpY0ltcG9ydE1l", |
||||
"c3NhZ2USCQoBZRgBIAEoBUI+Chhjb20uZ29vZ2xlLnByb3RvYnVmLnRlc3Sq", |
||||
"AiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3M=")); |
||||
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { |
||||
descriptor = root; |
||||
internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor = Descriptor.MessageTypes[0]; |
||||
internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable = |
||||
new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage, global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder>(internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor, |
||||
new string[] { "E", }); |
||||
pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance(); |
||||
RegisterAllExtensions(registry); |
||||
return registry; |
||||
}; |
||||
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData, |
||||
new pbd::FileDescriptor[] { |
||||
}, assigner); |
||||
} |
||||
#endregion |
||||
|
||||
} |
||||
#region Messages |
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class PublicImportMessage : pb::GeneratedMessage<PublicImportMessage, PublicImportMessage.Builder> { |
||||
private PublicImportMessage() { } |
||||
private static readonly PublicImportMessage defaultInstance = new PublicImportMessage().MakeReadOnly(); |
||||
private static readonly string[] _publicImportMessageFieldNames = new string[] { "e" }; |
||||
private static readonly uint[] _publicImportMessageFieldTags = new uint[] { 8 }; |
||||
public static PublicImportMessage DefaultInstance { |
||||
get { return defaultInstance; } |
||||
} |
||||
|
||||
public override PublicImportMessage DefaultInstanceForType { |
||||
get { return DefaultInstance; } |
||||
} |
||||
|
||||
protected override PublicImportMessage ThisMessage { |
||||
get { return this; } |
||||
} |
||||
|
||||
public static pbd::MessageDescriptor Descriptor { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor; } |
||||
} |
||||
|
||||
protected override pb::FieldAccess.FieldAccessorTable<PublicImportMessage, PublicImportMessage.Builder> InternalFieldAccessors { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable; } |
||||
} |
||||
|
||||
public const int EFieldNumber = 1; |
||||
private bool hasE; |
||||
private int e_; |
||||
public bool HasE { |
||||
get { return hasE; } |
||||
} |
||||
public int E { |
||||
get { return e_; } |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
public override void WriteTo(pb::ICodedOutputStream output) { |
||||
CalcSerializedSize(); |
||||
string[] field_names = _publicImportMessageFieldNames; |
||||
if (hasE) { |
||||
output.WriteInt32(1, field_names[0], E); |
||||
} |
||||
UnknownFields.WriteTo(output); |
||||
} |
||||
|
||||
private int memoizedSerializedSize = -1; |
||||
public override int SerializedSize { |
||||
get { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
return CalcSerializedSize(); |
||||
} |
||||
} |
||||
|
||||
private int CalcSerializedSize() { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
|
||||
size = 0; |
||||
if (hasE) { |
||||
size += pb::CodedOutputStream.ComputeInt32Size(1, E); |
||||
} |
||||
size += UnknownFields.SerializedSize; |
||||
memoizedSerializedSize = size; |
||||
return size; |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ByteString data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(byte[] data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(global::System.IO.Stream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseDelimitedFrom(global::System.IO.Stream input) { |
||||
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ICodedInputStream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
private PublicImportMessage MakeReadOnly() { |
||||
return this; |
||||
} |
||||
|
||||
public static Builder CreateBuilder() { return new Builder(); } |
||||
public override Builder ToBuilder() { return CreateBuilder(this); } |
||||
public override Builder CreateBuilderForType() { return new Builder(); } |
||||
public static Builder CreateBuilder(PublicImportMessage prototype) { |
||||
return new Builder(prototype); |
||||
} |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class Builder : pb::GeneratedBuilder<PublicImportMessage, Builder> { |
||||
protected override Builder ThisBuilder { |
||||
get { return this; } |
||||
} |
||||
public Builder() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
} |
||||
internal Builder(PublicImportMessage cloneFrom) { |
||||
result = cloneFrom; |
||||
resultIsReadOnly = true; |
||||
} |
||||
|
||||
private bool resultIsReadOnly; |
||||
private PublicImportMessage result; |
||||
|
||||
private PublicImportMessage PrepareBuilder() { |
||||
if (resultIsReadOnly) { |
||||
PublicImportMessage original = result; |
||||
result = new PublicImportMessage(); |
||||
resultIsReadOnly = false; |
||||
MergeFrom(original); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { return result.IsInitialized; } |
||||
} |
||||
|
||||
protected override PublicImportMessage MessageBeingBuilt { |
||||
get { return PrepareBuilder(); } |
||||
} |
||||
|
||||
public override Builder Clear() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
return this; |
||||
} |
||||
|
||||
public override Builder Clone() { |
||||
if (resultIsReadOnly) { |
||||
return new Builder(result); |
||||
} else { |
||||
return new Builder().MergeFrom(result); |
||||
} |
||||
} |
||||
|
||||
public override pbd::MessageDescriptor DescriptorForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Descriptor; } |
||||
} |
||||
|
||||
public override PublicImportMessage DefaultInstanceForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance; } |
||||
} |
||||
|
||||
public override PublicImportMessage BuildPartial() { |
||||
if (resultIsReadOnly) { |
||||
return result; |
||||
} |
||||
resultIsReadOnly = true; |
||||
return result.MakeReadOnly(); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::IMessage other) { |
||||
if (other is PublicImportMessage) { |
||||
return MergeFrom((PublicImportMessage) other); |
||||
} else { |
||||
base.MergeFrom(other); |
||||
return this; |
||||
} |
||||
} |
||||
|
||||
public override Builder MergeFrom(PublicImportMessage other) { |
||||
if (other == global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance) return this; |
||||
PrepareBuilder(); |
||||
if (other.HasE) { |
||||
E = other.E; |
||||
} |
||||
this.MergeUnknownFields(other.UnknownFields); |
||||
return this; |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input) { |
||||
return MergeFrom(input, pb::ExtensionRegistry.Empty); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
PrepareBuilder(); |
||||
pb::UnknownFieldSet.Builder unknownFields = null; |
||||
uint tag; |
||||
string field_name; |
||||
while (input.ReadTag(out tag, out field_name)) { |
||||
if(tag == 0 && field_name != null) { |
||||
int field_ordinal = global::System.Array.BinarySearch(_publicImportMessageFieldNames, field_name, global::System.StringComparer.Ordinal); |
||||
if(field_ordinal >= 0) |
||||
tag = _publicImportMessageFieldTags[field_ordinal]; |
||||
else { |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
continue; |
||||
} |
||||
} |
||||
switch (tag) { |
||||
case 0: { |
||||
throw pb::InvalidProtocolBufferException.InvalidTag(); |
||||
} |
||||
default: { |
||||
if (pb::WireFormat.IsEndGroupTag(tag)) { |
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
break; |
||||
} |
||||
case 8: { |
||||
result.hasE = input.ReadInt32(ref result.e_); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
|
||||
|
||||
public bool HasE { |
||||
get { return result.hasE; } |
||||
} |
||||
public int E { |
||||
get { return result.E; } |
||||
set { SetE(value); } |
||||
} |
||||
public Builder SetE(int value) { |
||||
PrepareBuilder(); |
||||
result.hasE = true; |
||||
result.e_ = value; |
||||
return this; |
||||
} |
||||
public Builder ClearE() { |
||||
PrepareBuilder(); |
||||
result.hasE = false; |
||||
result.e_ = 0; |
||||
return this; |
||||
} |
||||
} |
||||
static PublicImportMessage() { |
||||
object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.Descriptor, null); |
||||
} |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
} |
||||
|
||||
#endregion Designer generated code |
@ -1,3 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<configuration> |
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration> |
Binary file not shown.
Binary file not shown.
@ -1,307 +0,0 @@ |
||||
#region Copyright notice and license |
||||
|
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
|
||||
#endregion |
||||
|
||||
using System; |
||||
using System.Collections; |
||||
using System.Collections.Generic; |
||||
using System.IO; |
||||
using Google.Protobuf; |
||||
using Google.Protobuf.Descriptors; |
||||
using Google.ProtocolBuffers.Descriptors; |
||||
|
||||
namespace Google.ProtocolBuffers.ProtoMunge |
||||
{ |
||||
/// <summary> |
||||
/// Utility console application which takes a message descriptor and a corresponding message, |
||||
/// and produces a new message with similar but random data. The data is the same length |
||||
/// as the original, but with random values within appropriate bands. (For instance, a compressed |
||||
/// integer in the range 0-127 will end up as another integer in the same range, to keep the length |
||||
/// the same.) |
||||
/// TODO(jonskeet): Potentially refactor to use an instance instead, making it simpler to |
||||
/// be thread-safe for external use. |
||||
/// </summary> |
||||
public sealed class Program |
||||
{ |
||||
private static readonly Random rng = new Random(); |
||||
|
||||
private static int Main(string[] args) |
||||
{ |
||||
if (args.Length != 3) |
||||
{ |
||||
Console.Error.WriteLine("Usage: ProtoMunge <descriptor type name> <input data> <output file>"); |
||||
Console.Error.WriteLine( |
||||
"The descriptor type name is the fully-qualified message name, including assembly."); |
||||
Console.Error.WriteLine( |
||||
"(At a future date it may be possible to do this without building the .NET assembly at all.)"); |
||||
return 1; |
||||
} |
||||
IMessage defaultMessage; |
||||
try |
||||
{ |
||||
defaultMessage = MessageUtil.GetDefaultMessage(args[0]); |
||||
} |
||||
catch (ArgumentException e) |
||||
{ |
||||
Console.Error.WriteLine(e.Message); |
||||
return 1; |
||||
} |
||||
try |
||||
{ |
||||
IBuilder builder = defaultMessage.WeakCreateBuilderForType(); |
||||
byte[] inputData = File.ReadAllBytes(args[1]); |
||||
builder.WeakMergeFrom(ByteString.CopyFrom(inputData)); |
||||
IMessage original = builder.WeakBuild(); |
||||
IMessage munged = Munge(original); |
||||
if (original.SerializedSize != munged.SerializedSize) |
||||
{ |
||||
throw new Exception("Serialized sizes don't match"); |
||||
} |
||||
File.WriteAllBytes(args[2], munged.ToByteArray()); |
||||
return 0; |
||||
} |
||||
catch (Exception e) |
||||
{ |
||||
Console.Error.WriteLine("Error: {0}", e.Message); |
||||
Console.Error.WriteLine(); |
||||
Console.Error.WriteLine("Detailed exception information: {0}", e); |
||||
return 1; |
||||
} |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Munges a message recursively. |
||||
/// </summary> |
||||
/// <returns>A new message of the same type as the original message, |
||||
/// but munged so that all the data is desensitised.</returns> |
||||
private static IMessage Munge(IMessage message) |
||||
{ |
||||
IBuilder builder = message.WeakCreateBuilderForType(); |
||||
foreach (var pair in message.AllFields) |
||||
{ |
||||
if (pair.Key.IsRepeated) |
||||
{ |
||||
foreach (object singleValue in (IEnumerable) pair.Value) |
||||
{ |
||||
builder.WeakAddRepeatedField(pair.Key, CheckedMungeValue(pair.Key, singleValue)); |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
builder[pair.Key] = CheckedMungeValue(pair.Key, pair.Value); |
||||
} |
||||
} |
||||
IMessage munged = builder.WeakBuild(); |
||||
if (message.SerializedSize != munged.SerializedSize) |
||||
{ |
||||
Console.WriteLine("Sub message sizes: {0}/{1}", message.SerializedSize, munged.SerializedSize); |
||||
} |
||||
return munged; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Munges a single value and checks that the length ends up the same as it was before. |
||||
/// </summary> |
||||
private static object CheckedMungeValue(FieldDescriptor fieldDescriptor, object value) |
||||
{ |
||||
int currentSize = CodedOutputStream.ComputeFieldSize(fieldDescriptor.FieldType, fieldDescriptor.FieldNumber, |
||||
value); |
||||
object mungedValue = MungeValue(fieldDescriptor, value); |
||||
int mungedSize = CodedOutputStream.ComputeFieldSize(fieldDescriptor.FieldType, fieldDescriptor.FieldNumber, |
||||
mungedValue); |
||||
// Exceptions log more easily than assertions |
||||
if (currentSize != mungedSize) |
||||
{ |
||||
throw new Exception("Munged value had wrong size. Field type: " + fieldDescriptor.FieldType |
||||
+ "; old value: " + value + "; new value: " + mungedValue); |
||||
} |
||||
return mungedValue; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Munges a single value of the specified field descriptor. (i.e. if the field is |
||||
/// actually a repeated int, this method receives a single int value to munge, and |
||||
/// is called multiple times). |
||||
/// </summary> |
||||
private static object MungeValue(FieldDescriptor fieldDescriptor, object value) |
||||
{ |
||||
switch (fieldDescriptor.FieldType) |
||||
{ |
||||
case FieldType.SInt64: |
||||
case FieldType.Int64: |
||||
return (long) MungeVarint64((ulong) (long) value); |
||||
case FieldType.UInt64: |
||||
return MungeVarint64((ulong) value); |
||||
case FieldType.SInt32: |
||||
return (int) MungeVarint32((uint) (int) value); |
||||
case FieldType.Int32: |
||||
return MungeInt32((int) value); |
||||
case FieldType.UInt32: |
||||
return MungeVarint32((uint) value); |
||||
case FieldType.Double: |
||||
return rng.NextDouble(); |
||||
case FieldType.Float: |
||||
return (float) rng.NextDouble(); |
||||
case FieldType.Fixed64: |
||||
{ |
||||
byte[] data = new byte[8]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToUInt64(data, 0); |
||||
} |
||||
case FieldType.Fixed32: |
||||
{ |
||||
byte[] data = new byte[4]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToUInt32(data, 0); |
||||
} |
||||
case FieldType.Bool: |
||||
return rng.Next(2) == 1; |
||||
case FieldType.String: |
||||
return MungeString((string) value); |
||||
case FieldType.Group: |
||||
case FieldType.Message: |
||||
return Munge((IMessage) value); |
||||
case FieldType.Bytes: |
||||
return MungeByteString((ByteString) value); |
||||
case FieldType.SFixed64: |
||||
{ |
||||
byte[] data = new byte[8]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToInt64(data, 0); |
||||
} |
||||
case FieldType.SFixed32: |
||||
{ |
||||
byte[] data = new byte[4]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToInt32(data, 0); |
||||
} |
||||
case FieldType.Enum: |
||||
return MungeEnum(fieldDescriptor, (EnumValueDescriptor) value); |
||||
default: |
||||
// TODO(jonskeet): Different exception? |
||||
throw new ArgumentException("Invalid field descriptor"); |
||||
} |
||||
} |
||||
|
||||
private static object MungeString(string original) |
||||
{ |
||||
foreach (char c in original) |
||||
{ |
||||
if (c > 127) |
||||
{ |
||||
throw new ArgumentException("Can't handle non-ascii yet"); |
||||
} |
||||
} |
||||
char[] chars = new char[original.Length]; |
||||
// Convert to pure ASCII - no control characters. |
||||
for (int i = 0; i < chars.Length; i++) |
||||
{ |
||||
chars[i] = (char) rng.Next(32, 127); |
||||
} |
||||
return new string(chars); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Int32 fields are slightly strange - we need to keep the sign the same way it is: |
||||
/// negative numbers can munge to any other negative number (it'll always take |
||||
/// 10 bytes) but positive numbers have to stay positive, so we can't use the |
||||
/// full range of 32 bits. |
||||
/// </summary> |
||||
private static int MungeInt32(int value) |
||||
{ |
||||
if (value < 0) |
||||
{ |
||||
return rng.Next(int.MinValue, 0); |
||||
} |
||||
int length = CodedOutputStream.ComputeRawVarint32Size((uint) value); |
||||
uint min = length == 1 ? 0 : 1U << ((length - 1)*7); |
||||
uint max = length == 5 ? int.MaxValue : (1U << (length*7)) - 1; |
||||
return (int) NextRandomUInt64(min, max); |
||||
} |
||||
|
||||
private static uint MungeVarint32(uint original) |
||||
{ |
||||
int length = CodedOutputStream.ComputeRawVarint32Size(original); |
||||
uint min = length == 1 ? 0 : 1U << ((length - 1)*7); |
||||
uint max = length == 5 ? uint.MaxValue : (1U << (length*7)) - 1; |
||||
return (uint) NextRandomUInt64(min, max); |
||||
} |
||||
|
||||
private static ulong MungeVarint64(ulong original) |
||||
{ |
||||
int length = CodedOutputStream.ComputeRawVarint64Size(original); |
||||
ulong min = length == 1 ? 0 : 1UL << ((length - 1)*7); |
||||
ulong max = length == 10 ? ulong.MaxValue : (1UL << (length*7)) - 1; |
||||
return NextRandomUInt64(min, max); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Returns a random number in the range [min, max] (both inclusive). |
||||
/// </summary> |
||||
private static ulong NextRandomUInt64(ulong min, ulong max) |
||||
{ |
||||
if (min > max) |
||||
{ |
||||
throw new ArgumentException("min must be <= max; min=" + min + "; max = " + max); |
||||
} |
||||
ulong range = max - min; |
||||
// This isn't actually terribly good at very large ranges - but it doesn't really matter for the sake |
||||
// of this program. |
||||
return min + (ulong) (range*rng.NextDouble()); |
||||
} |
||||
|
||||
private static object MungeEnum(FieldDescriptor fieldDescriptor, EnumValueDescriptor original) |
||||
{ |
||||
// Find all the values which get encoded to the same size as the current value, and pick one at random |
||||
int originalSize = CodedOutputStream.ComputeRawVarint32Size((uint) original.Number); |
||||
List<EnumValueDescriptor> sameSizeValues = new List<EnumValueDescriptor>(); |
||||
foreach (EnumValueDescriptor candidate in fieldDescriptor.EnumType.Values) |
||||
{ |
||||
if (CodedOutputStream.ComputeRawVarint32Size((uint) candidate.Number) == originalSize) |
||||
{ |
||||
sameSizeValues.Add(candidate); |
||||
} |
||||
} |
||||
return sameSizeValues[rng.Next(sameSizeValues.Count)]; |
||||
} |
||||
|
||||
private static object MungeByteString(ByteString byteString) |
||||
{ |
||||
byte[] data = new byte[byteString.Length]; |
||||
rng.NextBytes(data); |
||||
return ByteString.CopyFrom(data); |
||||
} |
||||
} |
||||
} |
@ -1,30 +0,0 @@ |
||||
using System.Reflection; |
||||
using System.Runtime.CompilerServices; |
||||
using System.Runtime.InteropServices; |
||||
|
||||
// General Information about an assembly is controlled through the following |
||||
// set of attributes. Change these attribute values to modify the information |
||||
// associated with an assembly. |
||||
|
||||
[assembly: AssemblyTitle("ProtoMunge")] |
||||
[assembly: AssemblyDescription("")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyCompany("")] |
||||
[assembly: AssemblyProduct("ProtoMunge")] |
||||
[assembly: AssemblyCopyright("Copyright © 2008")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
|
||||
// Version information for an assembly consists of the following four values: |
||||
// |
||||
// Major Version |
||||
// Minor Version |
||||
// Build Number |
||||
// Revision |
||||
// |
||||
// You can specify all the values or you can default the Build and Revision Numbers |
||||
// by using the '*' as shown below: |
||||
// [assembly: AssemblyVersion("2.4.1.555")] |
||||
|
||||
[assembly: AssemblyVersion("2.4.1.555")] |
||||
[assembly: AssemblyFileVersion("2.4.1.555")] |
@ -1,3 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<configuration> |
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration> |
@ -1,60 +0,0 @@ |
||||
#region Copyright notice and license |
||||
|
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
|
||||
#endregion |
||||
|
||||
using System.Reflection; |
||||
using Google.Protobuf.Descriptors; |
||||
using NUnit.Framework; |
||||
|
||||
namespace Google.Protobuf |
||||
{ |
||||
public class WireFormatTest |
||||
{ |
||||
/// <summary> |
||||
/// Keeps the attributes on FieldType and the switch statement in WireFormat in sync. |
||||
/// </summary> |
||||
[Test] |
||||
public void FieldTypeToWireTypeMapping() |
||||
{ |
||||
foreach (FieldInfo field in typeof(FieldType).GetFields(BindingFlags.Static | BindingFlags.Public)) |
||||
{ |
||||
FieldType fieldType = (FieldType) field.GetValue(null); |
||||
FieldMappingAttribute mapping = |
||||
(FieldMappingAttribute) field.GetCustomAttributes(typeof(FieldMappingAttribute), false)[0]; |
||||
Assert.AreEqual(mapping.WireType, WireFormat.GetWireType(fieldType)); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,122 +0,0 @@ |
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
using System; |
||||
using System.Collections; |
||||
using System.Collections.Generic; |
||||
|
||||
namespace Google.Protobuf.Collections |
||||
{ |
||||
/// <summary> |
||||
/// Utility class for dictionaries. |
||||
/// </summary> |
||||
public static class Dictionaries |
||||
{ |
||||
/// <summary> |
||||
/// Compares two dictionaries for equality. Each value is compared with equality using Equals |
||||
/// for non-IEnumerable implementations, and using EnumerableEquals otherwise. |
||||
/// TODO(jonskeet): This is clearly pretty slow, and involves lots of boxing/unboxing... |
||||
/// </summary> |
||||
public static bool Equals<TKey, TValue>(IDictionary<TKey, TValue> left, IDictionary<TKey, TValue> right) |
||||
{ |
||||
if (left.Count != right.Count) |
||||
{ |
||||
return false; |
||||
} |
||||
foreach (KeyValuePair<TKey, TValue> leftEntry in left) |
||||
{ |
||||
TValue rightValue; |
||||
if (!right.TryGetValue(leftEntry.Key, out rightValue)) |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
IEnumerable leftEnumerable = leftEntry.Value as IEnumerable; |
||||
IEnumerable rightEnumerable = rightValue as IEnumerable; |
||||
if (leftEnumerable == null || rightEnumerable == null) |
||||
{ |
||||
if (!Equals(leftEntry.Value, rightValue)) |
||||
{ |
||||
return false; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if (!Enumerables.Equals(leftEnumerable, rightEnumerable)) |
||||
{ |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
public static IDictionary<TKey, TValue> AsReadOnly<TKey, TValue>(IDictionary<TKey, TValue> dictionary) |
||||
{ |
||||
return dictionary.IsReadOnly ? dictionary : new ReadOnlyDictionary<TKey, TValue>(dictionary); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Creates a hashcode for a dictionary by XORing the hashcodes of all the fields |
||||
/// and values. (By XORing, we avoid ordering issues.) |
||||
/// TODO(jonskeet): Currently XORs other stuff too, and assumes non-null values. |
||||
/// </summary> |
||||
public static int GetHashCode<TKey, TValue>(IDictionary<TKey, TValue> dictionary) |
||||
{ |
||||
int ret = 31; |
||||
foreach (KeyValuePair<TKey, TValue> entry in dictionary) |
||||
{ |
||||
int hash = entry.Key.GetHashCode() ^ GetDeepHashCode(entry.Value); |
||||
ret ^= hash; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Determines the hash of a value by either taking it directly or hashing all the elements |
||||
/// for IEnumerable implementations. |
||||
/// </summary> |
||||
private static int GetDeepHashCode(object value) |
||||
{ |
||||
IEnumerable iterable = value as IEnumerable; |
||||
if (iterable == null) |
||||
{ |
||||
return value.GetHashCode(); |
||||
} |
||||
int hash = 29; |
||||
foreach (object element in iterable) |
||||
{ |
||||
hash = hash*37 + element.GetHashCode(); |
||||
} |
||||
return hash; |
||||
} |
||||
} |
||||
} |
@ -1,74 +0,0 @@ |
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
using System; |
||||
using System.Collections; |
||||
|
||||
namespace Google.Protobuf.Collections |
||||
{ |
||||
/// <summary> |
||||
/// Utility class for IEnumerable (and potentially the generic version in the future). |
||||
/// </summary> |
||||
public static class Enumerables |
||||
{ |
||||
public static bool Equals(IEnumerable left, IEnumerable right) |
||||
{ |
||||
IEnumerator leftEnumerator = left.GetEnumerator(); |
||||
try |
||||
{ |
||||
foreach (object rightObject in right) |
||||
{ |
||||
if (!leftEnumerator.MoveNext()) |
||||
{ |
||||
return false; |
||||
} |
||||
if (!Equals(leftEnumerator.Current, rightObject)) |
||||
{ |
||||
return false; |
||||
} |
||||
} |
||||
if (leftEnumerator.MoveNext()) |
||||
{ |
||||
return false; |
||||
} |
||||
} |
||||
finally |
||||
{ |
||||
IDisposable leftEnumeratorDisposable = leftEnumerator as IDisposable; |
||||
if (leftEnumeratorDisposable != null) |
||||
{ |
||||
leftEnumeratorDisposable.Dispose(); |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
} |
||||
} |
@ -1,110 +0,0 @@ |
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
using System.Collections.Generic; |
||||
using System.Collections.ObjectModel; |
||||
|
||||
namespace Google.Protobuf.Collections |
||||
{ |
||||
/// <summary> |
||||
/// Utility non-generic class for calling into Lists{T} using type inference. |
||||
/// </summary> |
||||
public static class Lists |
||||
{ |
||||
/// <summary> |
||||
/// Returns a read-only view of the specified list. |
||||
/// </summary> |
||||
public static IList<T> AsReadOnly<T>(IList<T> list) |
||||
{ |
||||
return Lists<T>.AsReadOnly(list); |
||||
} |
||||
|
||||
public static bool Equals<T>(IList<T> left, IList<T> right) |
||||
{ |
||||
if (left == right) |
||||
{ |
||||
return true; |
||||
} |
||||
if (left == null || right == null) |
||||
{ |
||||
return false; |
||||
} |
||||
if (left.Count != right.Count) |
||||
{ |
||||
return false; |
||||
} |
||||
IEqualityComparer<T> comparer = EqualityComparer<T>.Default; |
||||
for (int i = 0; i < left.Count; i++) |
||||
{ |
||||
if (!comparer.Equals(left[i], right[i])) |
||||
{ |
||||
return false; |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
public static int GetHashCode<T>(IList<T> list) |
||||
{ |
||||
int hash = 31; |
||||
foreach (T element in list) |
||||
{ |
||||
hash = hash*29 + element.GetHashCode(); |
||||
} |
||||
return hash; |
||||
} |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Utility class for dealing with lists. |
||||
/// </summary> |
||||
public static class Lists<T> |
||||
{ |
||||
private static readonly ReadOnlyCollection<T> empty = new ReadOnlyCollection<T>(new T[0]); |
||||
|
||||
/// <summary> |
||||
/// Returns an immutable empty list. |
||||
/// </summary> |
||||
public static ReadOnlyCollection<T> Empty |
||||
{ |
||||
get { return empty; } |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Returns either the original reference if it's already read-only, |
||||
/// or a new ReadOnlyCollection wrapping the original list. |
||||
/// </summary> |
||||
public static IList<T> AsReadOnly(IList<T> list) |
||||
{ |
||||
return list.IsReadOnly ? list : new ReadOnlyCollection<T>(list); |
||||
} |
||||
} |
||||
} |
@ -1,85 +0,0 @@ |
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Reflection; |
||||
using Google.Protobuf.Collections; |
||||
|
||||
namespace Google.Protobuf.Descriptors |
||||
{ |
||||
/// <summary> |
||||
/// Defined specifically for the <see cref="FieldType" /> enumeration, |
||||
/// this allows each field type to specify the mapped type and wire type. |
||||
/// </summary> |
||||
[AttributeUsage(AttributeTargets.Field)] |
||||
public sealed class FieldMappingAttribute : Attribute |
||||
{ |
||||
public FieldMappingAttribute(MappedType mappedType, WireFormat.WireType wireType) |
||||
{ |
||||
MappedType = mappedType; |
||||
WireType = wireType; |
||||
} |
||||
|
||||
public MappedType MappedType { get; private set; } |
||||
public WireFormat.WireType WireType { get; private set; } |
||||
|
||||
|
||||
/// <summary> |
||||
/// Immutable mapping from field type to mapped type. Built using the attributes on |
||||
/// FieldType values. |
||||
/// </summary> |
||||
private static readonly IDictionary<FieldType, FieldMappingAttribute> FieldTypeToMappedTypeMap = MapFieldTypes(); |
||||
|
||||
private static IDictionary<FieldType, FieldMappingAttribute> MapFieldTypes() |
||||
{ |
||||
var map = new Dictionary<FieldType, FieldMappingAttribute>(); |
||||
foreach (FieldInfo field in typeof(FieldType).GetFields(BindingFlags.Static | BindingFlags.Public)) |
||||
{ |
||||
FieldType fieldType = (FieldType) field.GetValue(null); |
||||
FieldMappingAttribute mapping = |
||||
(FieldMappingAttribute) field.GetCustomAttributes(typeof(FieldMappingAttribute), false)[0]; |
||||
map[fieldType] = mapping; |
||||
} |
||||
return Dictionaries.AsReadOnly(map); |
||||
} |
||||
|
||||
internal static MappedType MappedTypeFromFieldType(FieldType type) |
||||
{ |
||||
return FieldTypeToMappedTypeMap[type].MappedType; |
||||
} |
||||
|
||||
internal static WireFormat.WireType WireTypeFromFieldType(FieldType type, bool packed) |
||||
{ |
||||
return packed ? WireFormat.WireType.LengthDelimited : FieldTypeToMappedTypeMap[type].WireType; |
||||
} |
||||
} |
||||
} |
@ -1,52 +0,0 @@ |
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
|
||||
namespace Google.Protobuf.Descriptors |
||||
{ |
||||
/// <summary> |
||||
/// Type as it's mapped onto a .NET type. |
||||
/// </summary> |
||||
public enum MappedType |
||||
{ |
||||
Int32, |
||||
Int64, |
||||
UInt32, |
||||
UInt64, |
||||
Single, |
||||
Double, |
||||
Boolean, |
||||
String, |
||||
ByteString, |
||||
Message, |
||||
Enum |
||||
} |
||||
} |
@ -1,159 +0,0 @@ |
||||
#region Copyright notice and license |
||||
|
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// 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. |
||||
|
||||
#endregion |
||||
|
||||
using System; |
||||
using System.IO; |
||||
using System.Text; |
||||
|
||||
namespace Google.Protobuf |
||||
{ |
||||
/// <summary> |
||||
/// Helper class to control indentation. Used for TextFormat and by ProtoGen. |
||||
/// </summary> |
||||
public sealed class TextGenerator |
||||
{ |
||||
/// <summary> |
||||
/// The string to use at the end of each line. We assume that "Print" is only called using \n |
||||
/// to indicate a line break; that's what we use to detect when we need to indent etc, and |
||||
/// *just* the \n is replaced with the contents of lineBreak. |
||||
/// </summary> |
||||
private readonly string lineBreak; |
||||
|
||||
/// <summary> |
||||
/// Writer to write formatted text to. |
||||
/// </summary> |
||||
private readonly TextWriter writer; |
||||
|
||||
/// <summary> |
||||
/// Keeps track of whether the next piece of text should be indented |
||||
/// </summary> |
||||
private bool atStartOfLine = true; |
||||
|
||||
/// <summary> |
||||
/// Keeps track of the current level of indentation |
||||
/// </summary> |
||||
private readonly StringBuilder indent = new StringBuilder(); |
||||
|
||||
/// <summary> |
||||
/// Creates a generator writing to the given writer. The writer |
||||
/// is not closed by this class. |
||||
/// </summary> |
||||
public TextGenerator(TextWriter writer, string lineBreak) |
||||
{ |
||||
this.writer = writer; |
||||
this.lineBreak = lineBreak; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Indents text by two spaces. After calling Indent(), two spaces |
||||
/// will be inserted at the beginning of each line of text. Indent() may |
||||
/// be called multiple times to produce deeper indents. |
||||
/// </summary> |
||||
public void Indent() |
||||
{ |
||||
indent.Append(" "); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Reduces the current indent level by two spaces. |
||||
/// </summary> |
||||
public void Outdent() |
||||
{ |
||||
if (indent.Length == 0) |
||||
{ |
||||
throw new InvalidOperationException("Too many calls to Outdent()"); |
||||
} |
||||
indent.Length -= 2; |
||||
} |
||||
|
||||
public void WriteLine(string text) |
||||
{ |
||||
Print(text); |
||||
Print("\n"); |
||||
} |
||||
|
||||
public void WriteLine(string format, params object[] args) |
||||
{ |
||||
WriteLine(string.Format(format, args)); |
||||
} |
||||
|
||||
public void WriteLine() |
||||
{ |
||||
WriteLine(""); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Prints the given text to the output stream, indenting at line boundaries. |
||||
/// </summary> |
||||
/// <param name="text"></param> |
||||
public void Print(string text) |
||||
{ |
||||
int pos = 0; |
||||
|
||||
for (int i = 0; i < text.Length; i++) |
||||
{ |
||||
if (text[i] == '\n') |
||||
{ |
||||
// Strip off the \n from what we write |
||||
Write(text.Substring(pos, i - pos)); |
||||
Write(lineBreak); |
||||
pos = i + 1; |
||||
atStartOfLine = true; |
||||
} |
||||
} |
||||
Write(text.Substring(pos)); |
||||
} |
||||
|
||||
public void Write(string format, params object[] args) |
||||
{ |
||||
Write(string.Format(format, args)); |
||||
} |
||||
|
||||
private void Write(string data) |
||||
{ |
||||
if (data.Length == 0) |
||||
{ |
||||
return; |
||||
} |
||||
if (atStartOfLine) |
||||
{ |
||||
atStartOfLine = false; |
||||
writer.Write(indent); |
||||
} |
||||
writer.Write(data); |
||||
} |
||||
} |
||||
} |
Binary file not shown.
Binary file not shown.
@ -1,116 +0,0 @@ |
||||
optional_int32: 101 |
||||
optional_int64: 102 |
||||
optional_uint32: 103 |
||||
optional_uint64: 104 |
||||
optional_sint32: 105 |
||||
optional_sint64: 106 |
||||
optional_fixed32: 107 |
||||
optional_fixed64: 108 |
||||
optional_sfixed32: 109 |
||||
optional_sfixed64: 110 |
||||
optional_float: 111 |
||||
optional_double: 112 |
||||
optional_bool: true |
||||
optional_string: "115" |
||||
optional_bytes: "116" |
||||
OptionalGroup { |
||||
a: 117 |
||||
} |
||||
optional_nested_message { |
||||
bb: 118 |
||||
} |
||||
optional_foreign_message { |
||||
c: 119 |
||||
} |
||||
optional_import_message { |
||||
d: 120 |
||||
} |
||||
optional_nested_enum: BAZ |
||||
optional_foreign_enum: FOREIGN_BAZ |
||||
optional_import_enum: IMPORT_BAZ |
||||
optional_string_piece: "124" |
||||
optional_cord: "125" |
||||
repeated_int32: 201 |
||||
repeated_int32: 301 |
||||
repeated_int64: 202 |
||||
repeated_int64: 302 |
||||
repeated_uint32: 203 |
||||
repeated_uint32: 303 |
||||
repeated_uint64: 204 |
||||
repeated_uint64: 304 |
||||
repeated_sint32: 205 |
||||
repeated_sint32: 305 |
||||
repeated_sint64: 206 |
||||
repeated_sint64: 306 |
||||
repeated_fixed32: 207 |
||||
repeated_fixed32: 307 |
||||
repeated_fixed64: 208 |
||||
repeated_fixed64: 308 |
||||
repeated_sfixed32: 209 |
||||
repeated_sfixed32: 309 |
||||
repeated_sfixed64: 210 |
||||
repeated_sfixed64: 310 |
||||
repeated_float: 211 |
||||
repeated_float: 311 |
||||
repeated_double: 212 |
||||
repeated_double: 312 |
||||
repeated_bool: true |
||||
repeated_bool: false |
||||
repeated_string: "215" |
||||
repeated_string: "315" |
||||
repeated_bytes: "216" |
||||
repeated_bytes: "316" |
||||
RepeatedGroup { |
||||
a: 217 |
||||
} |
||||
RepeatedGroup { |
||||
a: 317 |
||||
} |
||||
repeated_nested_message { |
||||
bb: 218 |
||||
} |
||||
repeated_nested_message { |
||||
bb: 318 |
||||
} |
||||
repeated_foreign_message { |
||||
c: 219 |
||||
} |
||||
repeated_foreign_message { |
||||
c: 319 |
||||
} |
||||
repeated_import_message { |
||||
d: 220 |
||||
} |
||||
repeated_import_message { |
||||
d: 320 |
||||
} |
||||
repeated_nested_enum: BAR |
||||
repeated_nested_enum: BAZ |
||||
repeated_foreign_enum: FOREIGN_BAR |
||||
repeated_foreign_enum: FOREIGN_BAZ |
||||
repeated_import_enum: IMPORT_BAR |
||||
repeated_import_enum: IMPORT_BAZ |
||||
repeated_string_piece: "224" |
||||
repeated_string_piece: "324" |
||||
repeated_cord: "225" |
||||
repeated_cord: "325" |
||||
default_int32: 401 |
||||
default_int64: 402 |
||||
default_uint32: 403 |
||||
default_uint64: 404 |
||||
default_sint32: 405 |
||||
default_sint64: 406 |
||||
default_fixed32: 407 |
||||
default_fixed64: 408 |
||||
default_sfixed32: 409 |
||||
default_sfixed64: 410 |
||||
default_float: 411 |
||||
default_double: 412 |
||||
default_bool: false |
||||
default_string: "415" |
||||
default_bytes: "416" |
||||
default_nested_enum: FOO |
||||
default_foreign_enum: FOREIGN_FOO |
||||
default_import_enum: IMPORT_FOO |
||||
default_string_piece: "424" |
||||
default_cord: "425" |
@ -1,116 +0,0 @@ |
||||
[protobuf_unittest.optional_int32_extension]: 101 |
||||
[protobuf_unittest.optional_int64_extension]: 102 |
||||
[protobuf_unittest.optional_uint32_extension]: 103 |
||||
[protobuf_unittest.optional_uint64_extension]: 104 |
||||
[protobuf_unittest.optional_sint32_extension]: 105 |
||||
[protobuf_unittest.optional_sint64_extension]: 106 |
||||
[protobuf_unittest.optional_fixed32_extension]: 107 |
||||
[protobuf_unittest.optional_fixed64_extension]: 108 |
||||
[protobuf_unittest.optional_sfixed32_extension]: 109 |
||||
[protobuf_unittest.optional_sfixed64_extension]: 110 |
||||
[protobuf_unittest.optional_float_extension]: 111 |
||||
[protobuf_unittest.optional_double_extension]: 112 |
||||
[protobuf_unittest.optional_bool_extension]: true |
||||
[protobuf_unittest.optional_string_extension]: "115" |
||||
[protobuf_unittest.optional_bytes_extension]: "116" |
||||
[protobuf_unittest.optionalgroup_extension] { |
||||
a: 117 |
||||
} |
||||
[protobuf_unittest.optional_nested_message_extension] { |
||||
bb: 118 |
||||
} |
||||
[protobuf_unittest.optional_foreign_message_extension] { |
||||
c: 119 |
||||
} |
||||
[protobuf_unittest.optional_import_message_extension] { |
||||
d: 120 |
||||
} |
||||
[protobuf_unittest.optional_nested_enum_extension]: BAZ |
||||
[protobuf_unittest.optional_foreign_enum_extension]: FOREIGN_BAZ |
||||
[protobuf_unittest.optional_import_enum_extension]: IMPORT_BAZ |
||||
[protobuf_unittest.optional_string_piece_extension]: "124" |
||||
[protobuf_unittest.optional_cord_extension]: "125" |
||||
[protobuf_unittest.repeated_int32_extension]: 201 |
||||
[protobuf_unittest.repeated_int32_extension]: 301 |
||||
[protobuf_unittest.repeated_int64_extension]: 202 |
||||
[protobuf_unittest.repeated_int64_extension]: 302 |
||||
[protobuf_unittest.repeated_uint32_extension]: 203 |
||||
[protobuf_unittest.repeated_uint32_extension]: 303 |
||||
[protobuf_unittest.repeated_uint64_extension]: 204 |
||||
[protobuf_unittest.repeated_uint64_extension]: 304 |
||||
[protobuf_unittest.repeated_sint32_extension]: 205 |
||||
[protobuf_unittest.repeated_sint32_extension]: 305 |
||||
[protobuf_unittest.repeated_sint64_extension]: 206 |
||||
[protobuf_unittest.repeated_sint64_extension]: 306 |
||||
[protobuf_unittest.repeated_fixed32_extension]: 207 |
||||
[protobuf_unittest.repeated_fixed32_extension]: 307 |
||||
[protobuf_unittest.repeated_fixed64_extension]: 208 |
||||
[protobuf_unittest.repeated_fixed64_extension]: 308 |
||||
[protobuf_unittest.repeated_sfixed32_extension]: 209 |
||||
[protobuf_unittest.repeated_sfixed32_extension]: 309 |
||||
[protobuf_unittest.repeated_sfixed64_extension]: 210 |
||||
[protobuf_unittest.repeated_sfixed64_extension]: 310 |
||||
[protobuf_unittest.repeated_float_extension]: 211 |
||||
[protobuf_unittest.repeated_float_extension]: 311 |
||||
[protobuf_unittest.repeated_double_extension]: 212 |
||||
[protobuf_unittest.repeated_double_extension]: 312 |
||||
[protobuf_unittest.repeated_bool_extension]: true |
||||
[protobuf_unittest.repeated_bool_extension]: false |
||||
[protobuf_unittest.repeated_string_extension]: "215" |
||||
[protobuf_unittest.repeated_string_extension]: "315" |
||||
[protobuf_unittest.repeated_bytes_extension]: "216" |
||||
[protobuf_unittest.repeated_bytes_extension]: "316" |
||||
[protobuf_unittest.repeatedgroup_extension] { |
||||
a: 217 |
||||
} |
||||
[protobuf_unittest.repeatedgroup_extension] { |
||||
a: 317 |
||||
} |
||||
[protobuf_unittest.repeated_nested_message_extension] { |
||||
bb: 218 |
||||
} |
||||
[protobuf_unittest.repeated_nested_message_extension] { |
||||
bb: 318 |
||||
} |
||||
[protobuf_unittest.repeated_foreign_message_extension] { |
||||
c: 219 |
||||
} |
||||
[protobuf_unittest.repeated_foreign_message_extension] { |
||||
c: 319 |
||||
} |
||||
[protobuf_unittest.repeated_import_message_extension] { |
||||
d: 220 |
||||
} |
||||
[protobuf_unittest.repeated_import_message_extension] { |
||||
d: 320 |
||||
} |
||||
[protobuf_unittest.repeated_nested_enum_extension]: BAR |
||||
[protobuf_unittest.repeated_nested_enum_extension]: BAZ |
||||
[protobuf_unittest.repeated_foreign_enum_extension]: FOREIGN_BAR |
||||
[protobuf_unittest.repeated_foreign_enum_extension]: FOREIGN_BAZ |
||||
[protobuf_unittest.repeated_import_enum_extension]: IMPORT_BAR |
||||
[protobuf_unittest.repeated_import_enum_extension]: IMPORT_BAZ |
||||
[protobuf_unittest.repeated_string_piece_extension]: "224" |
||||
[protobuf_unittest.repeated_string_piece_extension]: "324" |
||||
[protobuf_unittest.repeated_cord_extension]: "225" |
||||
[protobuf_unittest.repeated_cord_extension]: "325" |
||||
[protobuf_unittest.default_int32_extension]: 401 |
||||
[protobuf_unittest.default_int64_extension]: 402 |
||||
[protobuf_unittest.default_uint32_extension]: 403 |
||||
[protobuf_unittest.default_uint64_extension]: 404 |
||||
[protobuf_unittest.default_sint32_extension]: 405 |
||||
[protobuf_unittest.default_sint64_extension]: 406 |
||||
[protobuf_unittest.default_fixed32_extension]: 407 |
||||
[protobuf_unittest.default_fixed64_extension]: 408 |
||||
[protobuf_unittest.default_sfixed32_extension]: 409 |
||||
[protobuf_unittest.default_sfixed64_extension]: 410 |
||||
[protobuf_unittest.default_float_extension]: 411 |
||||
[protobuf_unittest.default_double_extension]: 412 |
||||
[protobuf_unittest.default_bool_extension]: false |
||||
[protobuf_unittest.default_string_extension]: "415" |
||||
[protobuf_unittest.default_bytes_extension]: "416" |
||||
[protobuf_unittest.default_nested_enum_extension]: FOO |
||||
[protobuf_unittest.default_foreign_enum_extension]: FOREIGN_FOO |
||||
[protobuf_unittest.default_import_enum_extension]: IMPORT_FOO |
||||
[protobuf_unittest.default_string_piece_extension]: "424" |
||||
[protobuf_unittest.default_cord_extension]: "425" |
Loading…
Reference in new issue