• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2022 The Android Open Source Project
3   *
4   * Licensed under the Apache License, Version 2.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *      http://www.apache.org/licenses/LICENSE-2.0
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.android.server.permission.access.util
18  
19  import com.android.modules.utils.BinaryXmlSerializer
20  import java.io.IOException
21  import java.io.OutputStream
22  
23  /** Serialize content into [OutputStream] with [BinaryXmlSerializer]. */
24  @Throws(IOException::class)
serializeBinaryXmlnull25  inline fun OutputStream.serializeBinaryXml(block: BinaryXmlSerializer.() -> Unit) {
26      BinaryXmlSerializer().apply {
27          setOutput(this@serializeBinaryXml, null)
28          document(block)
29      }
30  }
31  
32  /**
33   * Write a document with [BinaryXmlSerializer].
34   *
35   * @see BinaryXmlSerializer.startDocument
36   * @see BinaryXmlSerializer.endDocument
37   */
38  @Throws(IOException::class)
documentnull39  inline fun BinaryXmlSerializer.document(block: BinaryXmlSerializer.() -> Unit) {
40      startDocument(null, true)
41      block()
42      endDocument()
43  }
44  
45  /**
46   * Write a tag with [BinaryXmlSerializer].
47   *
48   * @see BinaryXmlSerializer.startTag
49   * @see BinaryXmlSerializer.endTag
50   */
51  @Throws(IOException::class)
tagnull52  inline fun BinaryXmlSerializer.tag(name: String, block: BinaryXmlSerializer.() -> Unit) {
53      startTag(null, name)
54      block()
55      endTag(null, name)
56  }
57  
58  /** @see BinaryXmlSerializer.attribute */
59  @Suppress("NOTHING_TO_INLINE")
60  @Throws(IOException::class)
attributenull61  inline fun BinaryXmlSerializer.attribute(name: String, value: String) {
62      attribute(null, name, value)
63  }
64  
65  /** @see BinaryXmlSerializer.attributeInterned */
66  @Suppress("NOTHING_TO_INLINE")
67  @Throws(IOException::class)
attributeInternednull68  inline fun BinaryXmlSerializer.attributeInterned(name: String, value: String) {
69      attributeInterned(null, name, value)
70  }
71  
72  /** @see BinaryXmlSerializer.attributeBytesHex */
73  @Suppress("NOTHING_TO_INLINE")
74  @Throws(IOException::class)
attributeBytesHexnull75  inline fun BinaryXmlSerializer.attributeBytesHex(name: String, value: ByteArray) {
76      attributeBytesHex(null, name, value)
77  }
78  
79  /** @see BinaryXmlSerializer.attributeBytesBase64 */
80  @Suppress("NOTHING_TO_INLINE")
81  @Throws(IOException::class)
attributeBytesBase64null82  inline fun BinaryXmlSerializer.attributeBytesBase64(name: String, value: ByteArray) {
83      attributeBytesBase64(null, name, value)
84  }
85  
86  /** @see BinaryXmlSerializer.attributeInt */
87  @Suppress("NOTHING_TO_INLINE")
88  @Throws(IOException::class)
attributeIntnull89  inline fun BinaryXmlSerializer.attributeInt(name: String, value: Int) {
90      attributeInt(null, name, value)
91  }
92  
93  /** @see BinaryXmlSerializer.attributeInt */
94  @Suppress("NOTHING_TO_INLINE")
95  @Throws(IOException::class)
attributeIntWithDefaultnull96  inline fun BinaryXmlSerializer.attributeIntWithDefault(
97      name: String,
98      value: Int,
99      defaultValue: Int
100  ) {
101      if (value != defaultValue) {
102          attributeInt(null, name, value)
103      }
104  }
105  
106  /** @see BinaryXmlSerializer.attributeIntHex */
107  @Suppress("NOTHING_TO_INLINE")
108  @Throws(IOException::class)
attributeIntHexnull109  inline fun BinaryXmlSerializer.attributeIntHex(name: String, value: Int) {
110      attributeIntHex(null, name, value)
111  }
112  
113  /** @see BinaryXmlSerializer.attributeIntHex */
114  @Suppress("NOTHING_TO_INLINE")
115  @Throws(IOException::class)
attributeIntHexWithDefaultnull116  inline fun BinaryXmlSerializer.attributeIntHexWithDefault(
117      name: String,
118      value: Int,
119      defaultValue: Int
120  ) {
121      if (value != defaultValue) {
122          attributeIntHex(null, name, value)
123      }
124  }
125  
126  /** @see BinaryXmlSerializer.attributeLong */
127  @Suppress("NOTHING_TO_INLINE")
128  @Throws(IOException::class)
attributeLongnull129  inline fun BinaryXmlSerializer.attributeLong(name: String, value: Long) {
130      attributeLong(null, name, value)
131  }
132  
133  /** @see BinaryXmlSerializer.attributeLong */
134  @Suppress("NOTHING_TO_INLINE")
135  @Throws(IOException::class)
attributeLongWithDefaultnull136  inline fun BinaryXmlSerializer.attributeLongWithDefault(
137      name: String,
138      value: Long,
139      defaultValue: Long
140  ) {
141      if (value != defaultValue) {
142          attributeLong(null, name, value)
143      }
144  }
145  
146  /** @see BinaryXmlSerializer.attributeLongHex */
147  @Suppress("NOTHING_TO_INLINE")
148  @Throws(IOException::class)
attributeLongHexnull149  inline fun BinaryXmlSerializer.attributeLongHex(name: String, value: Long) {
150      attributeLongHex(null, name, value)
151  }
152  
153  /** @see BinaryXmlSerializer.attributeLongHex */
154  @Suppress("NOTHING_TO_INLINE")
155  @Throws(IOException::class)
attributeLongHexWithDefaultnull156  inline fun BinaryXmlSerializer.attributeLongHexWithDefault(
157      name: String,
158      value: Long,
159      defaultValue: Long
160  ) {
161      if (value != defaultValue) {
162          attributeLongHex(null, name, value)
163      }
164  }
165  
166  /** @see BinaryXmlSerializer.attributeFloat */
167  @Suppress("NOTHING_TO_INLINE")
168  @Throws(IOException::class)
attributeFloatnull169  inline fun BinaryXmlSerializer.attributeFloat(name: String, value: Float) {
170      attributeFloat(null, name, value)
171  }
172  
173  /** @see BinaryXmlSerializer.attributeFloat */
174  @Suppress("NOTHING_TO_INLINE")
175  @Throws(IOException::class)
attributeFloatWithDefaultnull176  inline fun BinaryXmlSerializer.attributeFloatWithDefault(
177      name: String,
178      value: Float,
179      defaultValue: Float
180  ) {
181      if (value != defaultValue) {
182          attributeFloat(null, name, value)
183      }
184  }
185  
186  /** @see BinaryXmlSerializer.attributeDouble */
187  @Suppress("NOTHING_TO_INLINE")
188  @Throws(IOException::class)
attributeDoublenull189  inline fun BinaryXmlSerializer.attributeDouble(name: String, value: Double) {
190      attributeDouble(null, name, value)
191  }
192  
193  /** @see BinaryXmlSerializer.attributeDouble */
194  @Suppress("NOTHING_TO_INLINE")
195  @Throws(IOException::class)
attributeDoubleWithDefaultnull196  inline fun BinaryXmlSerializer.attributeDoubleWithDefault(
197      name: String,
198      value: Double,
199      defaultValue: Double
200  ) {
201      if (value != defaultValue) {
202          attributeDouble(null, name, value)
203      }
204  }
205  
206  /** @see BinaryXmlSerializer.attributeBoolean */
207  @Suppress("NOTHING_TO_INLINE")
208  @Throws(IOException::class)
attributeBooleannull209  inline fun BinaryXmlSerializer.attributeBoolean(name: String, value: Boolean) {
210      attributeBoolean(null, name, value)
211  }
212  
213  /** @see BinaryXmlSerializer.attributeBoolean */
214  @Suppress("NOTHING_TO_INLINE")
215  @Throws(IOException::class)
attributeBooleanWithDefaultnull216  inline fun BinaryXmlSerializer.attributeBooleanWithDefault(
217      name: String,
218      value: Boolean,
219      defaultValue: Boolean
220  ) {
221      if (value != defaultValue) {
222          attributeBoolean(null, name, value)
223      }
224  }
225