11754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato/*
21754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Copyright (C) 2016 The Android Open Source Project
31754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
41754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
51754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * you may not use this file except in compliance with the License.
61754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * You may obtain a copy of the License at
71754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
81754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *      http://www.apache.org/licenses/LICENSE-2.0
91754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
101754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Unless required by applicable law or agreed to in writing, software
111754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
121754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * See the License for the specific language governing permissions and
141754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * limitations under the License.
151754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato */
161754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
171754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
187669012623a18855913c84ec0690066fbfd823eaJoe Onorato#include <frameworks/base/core/proto/android/os/incident.pb.h>
191754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
201754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
211754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#include <map>
221754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
231754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratousing namespace android::os;
241754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratousing namespace google::protobuf;
251754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratousing namespace google::protobuf::io;
261754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratousing namespace google::protobuf::internal;
271754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratousing namespace std;
281754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
291754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratoint
301754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratomain(int, const char**)
311754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato{
321754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    map<string,FieldDescriptor const*> sections;
331754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    int N;
341754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
351754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    printf("// Auto generated file. Do not modify\n");
361754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    printf("\n");
371754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    printf("#include \"incident_sections.h\"\n");
381754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    printf("\n");
391754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
401754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    Descriptor const* descriptor = IncidentProto::descriptor();
411754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    N = descriptor->field_count();
421754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    for (int i=0; i<N; i++) {
431754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        const FieldDescriptor* field = descriptor->field(i);
441754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        if (field->type() == FieldDescriptor::TYPE_MESSAGE) {
451754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato            sections[field->name()] = field;
461754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        }
471754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    }
481754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
491754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    printf("IncidentSection const INCIDENT_SECTIONS[] = {\n");
501754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    N = sections.size();
511754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    int i = 0;
521754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    for (map<string,FieldDescriptor const*>::const_iterator it = sections.begin();
531754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato            it != sections.end(); it++, i++) {
541754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        const FieldDescriptor* field = it->second;
551754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        printf("    { %d, \"%s\" }", field->number(), field->name().c_str());
561754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        if (i != N-1) {
571754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato            printf(",\n");
581754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        } else {
591754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato            printf("\n");
601754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato        }
611754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    }
621754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    printf("};\n");
631754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
641754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    printf("const int INCIDENT_SECTION_COUNT = %d;\n", N);
651754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
661754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    return 0;
671754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato}
68