| #include "generate_java.h" | 
 | #include "Type.h" | 
 | #include <string.h> | 
 | #include <stdio.h> | 
 | #include <stdlib.h> | 
 | #include <string.h> | 
 |  | 
 | // ================================================= | 
 | VariableFactory::VariableFactory(const string& base) | 
 |     :m_base(base), | 
 |      m_index(0) | 
 | { | 
 | } | 
 |  | 
 | Variable* | 
 | VariableFactory::Get(Type* type) | 
 | { | 
 |     char name[100]; | 
 |     sprintf(name, "%s%d", m_base.c_str(), m_index); | 
 |     m_index++; | 
 |     Variable* v = new Variable(type, name); | 
 |     m_vars.push_back(v); | 
 |     return v; | 
 | } | 
 |  | 
 | Variable* | 
 | VariableFactory::Get(int index) | 
 | { | 
 |     return m_vars[index]; | 
 | } | 
 |  | 
 | // ================================================= | 
 | string | 
 | gather_comments(extra_text_type* extra) | 
 | { | 
 |     string s; | 
 |     while (extra) { | 
 |         if (extra->which == SHORT_COMMENT) { | 
 |             s += extra->data; | 
 |         } | 
 |         else if (extra->which == LONG_COMMENT) { | 
 |             s += "/*"; | 
 |             s += extra->data; | 
 |             s += "*/"; | 
 |         } | 
 |         extra = extra->next; | 
 |     } | 
 |     return s; | 
 | } | 
 |  | 
 | string | 
 | append(const char* a, const char* b) | 
 | { | 
 |     string s = a; | 
 |     s += b; | 
 |     return s; | 
 | } | 
 |  | 
 | // ================================================= | 
 | int | 
 | generate_java(const string& filename, const string& originalSrc, | 
 |                 interface_type* iface) | 
 | { | 
 |     Class* cl; | 
 |  | 
 |     if (iface->document_item.item_type == INTERFACE_TYPE_BINDER) { | 
 |         cl = generate_binder_interface_class(iface); | 
 |     } | 
 |     else if (iface->document_item.item_type == INTERFACE_TYPE_RPC) { | 
 |         cl = generate_rpc_interface_class(iface); | 
 |     } | 
 |  | 
 |     Document* document = new Document; | 
 |         document->comment = ""; | 
 |         if (iface->package) document->package = iface->package; | 
 |         document->originalSrc = originalSrc; | 
 |         document->classes.push_back(cl); | 
 |  | 
 | //    printf("outputting... filename=%s\n", filename.c_str()); | 
 |     FILE* to; | 
 |     if (filename == "-") { | 
 |         to = stdout; | 
 |     } else { | 
 |        /* open file in binary mode to ensure that the tool produces the | 
 |         * same output on all platforms !! | 
 |         */ | 
 |         to = fopen(filename.c_str(), "wb"); | 
 |         if (to == NULL) { | 
 |             fprintf(stderr, "unable to open %s for write\n", filename.c_str()); | 
 |             return 1; | 
 |         } | 
 |     } | 
 |  | 
 |     document->Write(to); | 
 |  | 
 |     fclose(to); | 
 |     return 0; | 
 | } | 
 |  |