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