xref: /aosp_15_r20/external/flatbuffers/net/FlatBuffers/ByteBufferUtil.cs (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Worker /*
2*890232f2SAndroid Build Coastguard Worker  * Copyright 2017 Google Inc. All rights reserved.
3*890232f2SAndroid Build Coastguard Worker  *
4*890232f2SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*890232f2SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*890232f2SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*890232f2SAndroid Build Coastguard Worker  *
8*890232f2SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
9*890232f2SAndroid Build Coastguard Worker  *
10*890232f2SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*890232f2SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*890232f2SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*890232f2SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*890232f2SAndroid Build Coastguard Worker  * limitations under the License.
15*890232f2SAndroid Build Coastguard Worker  */
16*890232f2SAndroid Build Coastguard Worker 
17*890232f2SAndroid Build Coastguard Worker using System;
18*890232f2SAndroid Build Coastguard Worker 
19*890232f2SAndroid Build Coastguard Worker namespace FlatBuffers
20*890232f2SAndroid Build Coastguard Worker {
21*890232f2SAndroid Build Coastguard Worker 	/// <summary>
22*890232f2SAndroid Build Coastguard Worker 	/// Class that collects utility functions around `ByteBuffer`.
23*890232f2SAndroid Build Coastguard Worker 	/// </summary>
24*890232f2SAndroid Build Coastguard Worker 	public class ByteBufferUtil
25*890232f2SAndroid Build Coastguard Worker 	{
26*890232f2SAndroid Build Coastguard Worker 		// Extract the size prefix from a `ByteBuffer`.
GetSizePrefix(ByteBuffer bb)27*890232f2SAndroid Build Coastguard Worker 		public static int GetSizePrefix(ByteBuffer bb) {
28*890232f2SAndroid Build Coastguard Worker 			return bb.GetInt(bb.Position);
29*890232f2SAndroid Build Coastguard Worker 		}
30*890232f2SAndroid Build Coastguard Worker 
31*890232f2SAndroid Build Coastguard Worker 		// Create a duplicate of a size-prefixed `ByteBuffer` that has its position
32*890232f2SAndroid Build Coastguard Worker 		// advanced just past the size prefix.
RemoveSizePrefix(ByteBuffer bb)33*890232f2SAndroid Build Coastguard Worker 		public static ByteBuffer RemoveSizePrefix(ByteBuffer bb) {
34*890232f2SAndroid Build Coastguard Worker 			ByteBuffer s = bb.Duplicate();
35*890232f2SAndroid Build Coastguard Worker 			s.Position += FlatBufferConstants.SizePrefixLength;
36*890232f2SAndroid Build Coastguard Worker 			return s;
37*890232f2SAndroid Build Coastguard Worker 		}
38*890232f2SAndroid Build Coastguard Worker 	}
39*890232f2SAndroid Build Coastguard Worker }
40