1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*- 2*b9df5ad1SAndroid Build Coastguard Worker## 3*b9df5ad1SAndroid Build Coastguard Worker## Copyright (C) 2013 The Android Open Source Project 4*b9df5ad1SAndroid Build Coastguard Worker## 5*b9df5ad1SAndroid Build Coastguard Worker## Licensed under the Apache License, Version 2.0 (the "License"); 6*b9df5ad1SAndroid Build Coastguard Worker## you may not use this file except in compliance with the License. 7*b9df5ad1SAndroid Build Coastguard Worker## You may obtain a copy of the License at 8*b9df5ad1SAndroid Build Coastguard Worker## 9*b9df5ad1SAndroid Build Coastguard Worker## http://www.apache.org/licenses/LICENSE-2.0 10*b9df5ad1SAndroid Build Coastguard Worker## 11*b9df5ad1SAndroid Build Coastguard Worker## Unless required by applicable law or agreed to in writing, software 12*b9df5ad1SAndroid Build Coastguard Worker## distributed under the License is distributed on an "AS IS" BASIS, 13*b9df5ad1SAndroid Build Coastguard Worker## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*b9df5ad1SAndroid Build Coastguard Worker## See the License for the specific language governing permissions and 15*b9df5ad1SAndroid Build Coastguard Worker## limitations under the License. 16*b9df5ad1SAndroid Build Coastguard Worker## 17*b9df5ad1SAndroid Build Coastguard Worker\ 18*b9df5ad1SAndroid Build Coastguard Worker## This section of enum integer definitions is inserted into 19*b9df5ad1SAndroid Build Coastguard Worker## android.hardware.camera2.CameraMetadata. 20*b9df5ad1SAndroid Build Coastguard Worker /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 21*b9df5ad1SAndroid Build Coastguard Worker * The enum values below this point are generated from metadata 22*b9df5ad1SAndroid Build Coastguard Worker * definitions in /system/media/camera/docs. Do not modify by hand or 23*b9df5ad1SAndroid Build Coastguard Worker * modify the comment blocks at the start or end. 24*b9df5ad1SAndroid Build Coastguard Worker *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/ 25*b9df5ad1SAndroid Build Coastguard Worker## 26*b9df5ad1SAndroid Build Coastguard Worker## Generate an enum's integers 27*b9df5ad1SAndroid Build Coastguard Worker<%def name="generate_enum(entry, target_class)">\ 28*b9df5ad1SAndroid Build Coastguard Worker // 29*b9df5ad1SAndroid Build Coastguard Worker // Enumeration values for ${target_class}#${entry.name | jkey_identifier} 30*b9df5ad1SAndroid Build Coastguard Worker // 31*b9df5ad1SAndroid Build Coastguard Worker 32*b9df5ad1SAndroid Build Coastguard Worker % for value in [v for v in entry.enum.values if v.visibility != 'system']: 33*b9df5ad1SAndroid Build Coastguard Worker /** 34*b9df5ad1SAndroid Build Coastguard Worker % if value.notes: 35*b9df5ad1SAndroid Build Coastguard Worker${value.notes | javadoc(metadata)}\ 36*b9df5ad1SAndroid Build Coastguard Worker % endif 37*b9df5ad1SAndroid Build Coastguard Worker % if value.sdk_notes: 38*b9df5ad1SAndroid Build Coastguard Worker${value.sdk_notes | javadoc(metadata)}\ 39*b9df5ad1SAndroid Build Coastguard Worker % endif 40*b9df5ad1SAndroid Build Coastguard Worker * @see ${target_class}#${entry.name | jkey_identifier} 41*b9df5ad1SAndroid Build Coastguard Worker % if entry.applied_visibility in ('hidden', 'ndk_public', 'fwk_only', 'extension')\ 42*b9df5ad1SAndroid Build Coastguard Worker or value.hidden: 43*b9df5ad1SAndroid Build Coastguard Worker * @hide 44*b9df5ad1SAndroid Build Coastguard Worker %endif 45*b9df5ad1SAndroid Build Coastguard Worker % if value.deprecated: 46*b9df5ad1SAndroid Build Coastguard Worker * @deprecated Please refer to this API documentation to find the alternatives 47*b9df5ad1SAndroid Build Coastguard Worker % endif 48*b9df5ad1SAndroid Build Coastguard Worker */ 49*b9df5ad1SAndroid Build Coastguard Worker % if value.deprecated: 50*b9df5ad1SAndroid Build Coastguard Worker @Deprecated 51*b9df5ad1SAndroid Build Coastguard Worker % endif 52*b9df5ad1SAndroid Build Coastguard Worker % if value.visibility == 'test': 53*b9df5ad1SAndroid Build Coastguard Worker @TestApi 54*b9df5ad1SAndroid Build Coastguard Worker % endif 55*b9df5ad1SAndroid Build Coastguard Worker % if value.aconfig_flag: 56*b9df5ad1SAndroid Build Coastguard Worker @FlaggedApi(Flags.FLAG_${value.aconfig_flag | jkey_identifier}) 57*b9df5ad1SAndroid Build Coastguard Worker % endif 58*b9df5ad1SAndroid Build Coastguard Worker public static final int ${jenum_value(entry, value)} = ${enum_calculate_value_string(value)}; 59*b9df5ad1SAndroid Build Coastguard Worker 60*b9df5ad1SAndroid Build Coastguard Worker % endfor 61*b9df5ad1SAndroid Build Coastguard Worker</%def>\ 62*b9df5ad1SAndroid Build Coastguard Worker## 63*b9df5ad1SAndroid Build Coastguard Worker## Generate a list of only Static, Controls, or Dynamic properties. 64*b9df5ad1SAndroid Build Coastguard Worker<%def name="single_kind_keys(xml_name, target_class)">\ 65*b9df5ad1SAndroid Build Coastguard Worker% for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace 66*b9df5ad1SAndroid Build Coastguard Worker % for section in outer_namespace.sections: 67*b9df5ad1SAndroid Build Coastguard Worker % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == xml_name) and \ 68*b9df5ad1SAndroid Build Coastguard Worker any_visible(section, xml_name, ('public','hidden', 'ndk_public', 'java_public', \ 69*b9df5ad1SAndroid Build Coastguard Worker 'fwk_java_public', 'fwk_public', 'fwk_only', 'extension') ): 70*b9df5ad1SAndroid Build Coastguard Worker % for inner_namespace in get_children_by_filtering_kind(section, xml_name, 'namespaces'): 71*b9df5ad1SAndroid Build Coastguard Worker## We only support 1 level of inner namespace, i.e. android.a.b and android.a.b.c works, but not android.a.b.c.d 72*b9df5ad1SAndroid Build Coastguard Worker## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier. 73*b9df5ad1SAndroid Build Coastguard Worker % for entry in filter_visibility(inner_namespace.entries, ('hidden','public', 'ndk_public', \ 74*b9df5ad1SAndroid Build Coastguard Worker 'java_public', 'fwk_pubic', 'fwk_only', 'extension')): 75*b9df5ad1SAndroid Build Coastguard Worker % if entry.enum \ 76*b9df5ad1SAndroid Build Coastguard Worker and not (entry.typedef and entry.typedef.languages.get('java')) \ 77*b9df5ad1SAndroid Build Coastguard Worker and not entry.is_clone(): 78*b9df5ad1SAndroid Build Coastguard Worker${generate_enum(entry, target_class)}\ 79*b9df5ad1SAndroid Build Coastguard Worker % endif 80*b9df5ad1SAndroid Build Coastguard Worker % endfor 81*b9df5ad1SAndroid Build Coastguard Worker % endfor 82*b9df5ad1SAndroid Build Coastguard Worker % for entry in filter_visibility( \ 83*b9df5ad1SAndroid Build Coastguard Worker get_children_by_filtering_kind(section, xml_name, 'entries'), \ 84*b9df5ad1SAndroid Build Coastguard Worker ('hidden', 'public', 'ndk_public', 'java_public', 'fwk_java_public', 'fwk_public', \ 85*b9df5ad1SAndroid Build Coastguard Worker 'fwk_only', 'extension')): 86*b9df5ad1SAndroid Build Coastguard Worker % if entry.enum \ 87*b9df5ad1SAndroid Build Coastguard Worker and not (entry.typedef and entry.typedef.languages.get('java')) \ 88*b9df5ad1SAndroid Build Coastguard Worker and not entry.is_clone(): 89*b9df5ad1SAndroid Build Coastguard Worker${generate_enum(entry, target_class)}\ 90*b9df5ad1SAndroid Build Coastguard Worker % endif 91*b9df5ad1SAndroid Build Coastguard Worker % endfor 92*b9df5ad1SAndroid Build Coastguard Worker % endif 93*b9df5ad1SAndroid Build Coastguard Worker % endfor 94*b9df5ad1SAndroid Build Coastguard Worker% endfor 95*b9df5ad1SAndroid Build Coastguard Worker</%def>\ 96*b9df5ad1SAndroid Build Coastguard Worker 97*b9df5ad1SAndroid Build Coastguard Worker## 98*b9df5ad1SAndroid Build Coastguard Worker## Static properties only 99*b9df5ad1SAndroid Build Coastguard Worker${single_kind_keys('static','CameraCharacteristics')}\ 100*b9df5ad1SAndroid Build Coastguard Worker## 101*b9df5ad1SAndroid Build Coastguard Worker## Controls properties only 102*b9df5ad1SAndroid Build Coastguard Worker${single_kind_keys('controls','CaptureRequest')}\ 103*b9df5ad1SAndroid Build Coastguard Worker## 104*b9df5ad1SAndroid Build Coastguard Worker## Dynamic properties only 105*b9df5ad1SAndroid Build Coastguard Worker${single_kind_keys('dynamic','CaptureResult')}\ 106*b9df5ad1SAndroid Build Coastguard Worker /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 107*b9df5ad1SAndroid Build Coastguard Worker * End generated code 108*b9df5ad1SAndroid Build Coastguard Worker *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ 109