1/*
2 * Copyright (C) 2016 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
17syntax = "proto2";
18
19option optimize_for = LITE_RUNTIME;
20
21package aapt.pb;
22
23message ConfigDescription {
24	optional bytes data = 1;
25	optional string product = 2;
26}
27
28message StringPool {
29	optional bytes data = 1;
30}
31
32message CompiledFile {
33	message Symbol {
34		optional string resource_name = 1;
35		optional uint32 line_no = 2;
36	}
37
38	optional string resource_name = 1;
39	optional ConfigDescription config = 2;
40	optional string source_path = 3;
41	repeated Symbol exported_symbols = 4;
42}
43
44message ResourceTable {
45	optional StringPool string_pool = 1;
46	optional StringPool source_pool = 2;
47	optional StringPool symbol_pool = 3;
48	repeated Package packages = 4;
49}
50
51message Package {
52	optional uint32 package_id = 1;
53	optional string package_name = 2;
54	repeated Type types = 3;
55}
56
57message Type {
58	optional uint32 id = 1;
59	optional string name = 2;
60	repeated Entry entries = 3;
61}
62
63message SymbolStatus {
64	enum Visibility {
65		Unknown = 0;
66		Private = 1;
67		Public = 2;
68	}
69	optional Visibility visibility = 1;
70	optional Source source = 2;
71	optional string comment = 3;
72}
73
74message Entry {
75	optional uint32 id = 1;
76	optional string name = 2;
77	optional SymbolStatus symbol_status = 3;
78	repeated ConfigValue config_values = 4;
79}
80
81message ConfigValue {
82	optional ConfigDescription config = 1;
83	optional Value value = 2;
84}
85
86message Source {
87	optional uint32 path_idx = 1;
88	optional uint32 line_no = 2;
89	optional uint32 col_no = 3;
90}
91
92message Reference {
93	enum Type {
94		Ref = 0;
95		Attr = 1;
96	}
97	optional Type type = 1;
98	optional uint32 id = 2;
99	optional uint32 symbol_idx = 3;
100	optional bool private = 4;
101}
102
103message Id {
104}
105
106message String {
107	optional uint32 idx = 1;
108}
109
110message RawString {
111	optional uint32 idx = 1;
112}
113
114message FileReference {
115	optional uint32 path_idx = 1;
116}
117
118message Primitive {
119	optional uint32 type = 1;
120	optional uint32 data = 2;
121}
122
123message Attribute {
124	message Symbol {
125		optional Source source = 1;
126		optional string comment = 2;
127		optional Reference name = 3;
128		optional uint32 value = 4;
129	}
130	optional uint32 format_flags = 1;
131	optional int32 min_int = 2;
132	optional int32 max_int = 3;
133	repeated Symbol symbols = 4;
134}
135
136message Style {
137	message Entry {
138		optional Source source = 1;
139		optional string comment = 2;
140		optional Reference key = 3;
141		optional Item item = 4;
142	}
143
144	optional Reference parent = 1;
145	optional Source parent_source = 2;
146	repeated Entry entries = 3;
147}
148
149message Styleable {
150	message Entry {
151		optional Source source = 1;
152		optional string comment = 2;
153		optional Reference attr = 3;
154	}
155	repeated Entry entries = 1;
156}
157
158message Array {
159	message Entry {
160		optional Source source = 1;
161		optional string comment = 2;
162		optional Item item = 3;
163	}
164	repeated Entry entries = 1;
165}
166
167message Plural {
168	enum Arity {
169		Zero = 0;
170		One = 1;
171		Two = 2;
172		Few = 3;
173		Many = 4;
174		Other = 5;
175	}
176
177	message Entry {
178		optional Source source = 1;
179		optional string comment = 2;
180		optional Arity arity = 3;
181		optional Item item = 4;
182	}
183	repeated Entry entries = 1;
184}
185
186message Item {
187	optional Reference ref = 1;
188	optional String str = 2;
189	optional RawString raw_str = 3;
190	optional FileReference file = 4;
191	optional Id id = 5;
192	optional Primitive prim = 6;
193}
194
195message CompoundValue {
196	optional Attribute attr = 1;
197	optional Style style = 2;
198	optional Styleable styleable = 3;
199	optional Array array = 4;
200	optional Plural plural = 5;
201}
202
203message Value {
204	optional Source source = 1;
205	optional string comment = 2;
206	optional bool weak = 3;
207
208	optional Item item = 4;
209	optional CompoundValue compound_value = 5;
210}
211