X-Git-Url: https://bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=T0%2FCodeElement.cs;h=471a61f903f25b3afbc7f6de76927cded0b3776f;hp=5731c5a22490f5c5da59798b5fe58cafcbb57a10;hb=fb7052216d8cb257e47de57e615c3a2f573174de;hpb=e61ad42191511226309bad2cbde8cd9e8cc743cb diff --git a/T0/CodeElement.cs b/T0/CodeElement.cs index 5731c5a..471a61f 100644 --- a/T0/CodeElement.cs +++ b/T0/CodeElement.cs @@ -30,7 +30,7 @@ abstract class CodeElement { internal int LastLength { get; set; } - internal abstract int Length { get; } + // internal abstract int Length { get; } internal CodeElement() { @@ -42,7 +42,19 @@ abstract class CodeElement { throw new Exception("Code element accepts no target"); } - internal abstract int Encode(BlobWriter bw); + internal abstract int GetLength(bool oneByteCode); + + internal abstract int Encode(BlobWriter bw, bool oneByteCode); + + internal static int EncodeOneByte(uint val, BlobWriter bw) + { + if (val > 255) { + throw new Exception(string.Format( + "Cannot encode '{0}' over one byte", val)); + } + bw.Append((byte)val); + return 1; + } internal static int Encode7EUnsigned(uint val, BlobWriter bw) {