📄 symbol2.c
字号:
char *the_type(Tnode*);char *wsdl_type(Tnode*, char*);char *base_type(Tnode*, char*);char *xml_tag(Tnode*);char *ns_qualifiedElement(Tnode*);char *ns_qualifiedAttribute(Tnode*);char *ns_convert(char*);char *ns_add(char*, char*);char *ns_remove(char*);char *ns_remove1(char*);char *ns_remove2(char*);char *res_remove(char*);char *ns_name(char*);char *ns_cname(char*, char*);int has_class(Tnode*);int has_constructor(Tnode*);int has_destructor(Tnode*);int has_getter(Tnode*);int has_setter(Tnode*);int has_ns(Tnode*);int has_ns_t(Tnode*);int has_ns_eq(char*, char*);char *strict_check();char *ns_of(char*);char *prefix_of(char*);int has_offset(Tnode*);int reflevel(Tnode *typ);Tnode* reftype(Tnode *typ);int is_response(Tnode*);int is_XML(Tnode*);Entry *get_response(Tnode*);int is_primitive_or_string(Tnode*);int is_primitive(Tnode*);Entry *is_discriminant(Tnode*);Entry *is_dynamic_array(Tnode*);int is_transient(Tnode*);int is_external(Tnode*);int is_anyAttribute(Tnode*);int is_binary(Tnode*);int is_hexBinary(Tnode*);int is_string(Tnode*);int is_wstring(Tnode*);int is_stdstring(Tnode*);int is_stdwstring(Tnode*);int is_stdstr(Tnode*);int is_typedef(Tnode*);int get_dimension(Tnode*);char *has_soapref(Tnode*);int is_document(const char*);int is_literal(const char*);int is_keyword(const char *);int is_repetition(Entry*);int is_choice(Entry*);int is_sequence(Entry*);int is_anytype(Entry*);char *xsi_type_Tarray(Tnode*); char *xsi_type_Darray(Tnode*); void matlab_def_table(Table*);void def_table(Table*);void out_generate(Tnode *);int no_of_var(Tnode*);char *pointer_stuff(Tnode*);void in_defs(Table*);void in_defs2(Table*);void in_defs3(Table*);void out_defs(Table*);void mark_defs(Table*);void in_attach(Table*);void out_attach(Table*);void mark(Tnode*);void defaults(Tnode*);void soap_put(Tnode*);void soap_out(Tnode*);void soap_out_Darray(Tnode *);void soap_get(Tnode*);void soap_in(Tnode*); void soap_in_Darray(Tnode *);void soap_instantiate_class(Tnode *);int get_Darraydims(Tnode *typ);void soap_serve(Table*);void generate_proto(Table*, Entry*);/*void generate_call(Table*, Entry*);void generate_server(Table*, Entry*);*/void generate_header(Table*);void generate_schema(Table*);void gen_schema(FILE*,Table*,char*,char*,int,int,char*,char*,char*,char*);void gen_type_documentation(FILE *fd, Table *t, Entry *p, char *ns, char *ns1);void gen_schema_elements_attributes(FILE *fd, Table *t, char *ns, char *ns1, char *encoding, char *style);void gen_schema_elements(FILE *fd, Tnode *p, char *ns, char *ns1);int gen_schema_element(FILE *fd, Entry *q, char *ns, char *ns1);void gen_schema_attributes(FILE *fd, Tnode *p, char *ns, char *ns1);void gen_wsdl(FILE*,Table*,char*,char*,char*,char*,char*,char*,char*);void gen_nsmap(FILE*,Symbol*,char*);void gen_proxy(FILE*,Table*,Symbol*,char*,char*,char*,char*,char*);void gen_object(FILE*,Table*,Symbol*,char*,char*,char*,char*,char*);void gen_proxy_header(FILE*,Table*,Symbol*,char*,char*,char*,char*,char*);void gen_proxy_code(FILE*,Table*,Symbol*,char*,char*,char*,char*,char*);void gen_object_header(FILE*,Table*,Symbol*,char*,char*,char*,char*,char*);void gen_object_code(FILE*,Table*,Symbol*,char*,char*,char*,char*,char*);void gen_method(FILE *fd, Table *table, Entry *method);void gen_params(FILE *fd, Table *params, Entry *result, int flag);void gen_call_method(FILE *fd, Table *table, Entry *method, char *name);void gen_serve_method(FILE *fd, Table *table, Entry *param, char *name);void gen_data(char*,Table*,char*,char*,char*,char*,char*,char*);FILE *gen_env(char*,char*,int,Table*,char*,char*,char*,char*,char*,char*);void gen_field(FILE*,int,Entry*,char*,char*,char*);void gen_val(FILE*,int,Tnode*,char*,char*,char*);void gen_atts(FILE*,Table*,char*);/*mktype - make a (new) type with a reference to additional information and thewidth in bytes required to store objects of that type. A pointer to thetype is returned which can be compared to check if types are identical.*/Tnode *mktype(Type type, void *ref, int width){ Tnode *p; int t = 0; if (transient != -2 || type > Ttime) t = transient; if (type != Tstruct && type != Tclass && type != Tunion && (type != Tenum || ref)) { for (p = Tptr[type]; p; p = p->next) { if (p->ref == ref && p->sym == (Symbol*) 0 && p->width == width && p->transient == t) { if (imported && !p->imported) p->imported = imported; return p; /* type alrady exists in table */ } } } p = (Tnode*)emalloc(sizeof(Tnode)); /* install new type */ p->type = type; p->ref = ref; p->id = lookup("/*?*/"); p->base = NULL; p->sym = (Symbol*)0; p->response = (Entry*)0; p->width = width; p->generated = False; p->wsdl = False; p->next = Tptr[type]; p->transient = t; p->imported = imported; p->pattern = NULL; p->minLength = -1; p->maxLength = -1; p->num = typeNO++; Tptr[type] = p; DBGLOG(fprintf(stderr, "New type %s %s\n", c_type(p), p->imported)); if (type == Tpointer && ((Tnode*)ref)->imported && (((Tnode*)ref)->type == Tenum || ((Tnode*)ref)->type == Tstruct || ((Tnode*)ref)->type == Tclass)) p->imported = ((Tnode*)ref)->imported; else if (lflag && !is_transient(p) && (type == Tenum || type == Tstruct || type == Tclass)) mkpointer(p); return p;}Tnode *mksymtype(Tnode *typ, Symbol *sym){ Tnode *p; p = (Tnode*)emalloc(sizeof(Tnode)); /* install new type */ p->type = typ->type; p->ref = typ->ref; p->id = typ->id; p->sym = sym; p->response = (Entry*)0; p->width = typ->width; p->generated = True; /* copy of existing (generated) type */ p->wsdl = False; p->next = Tptr[typ->type]; p->transient = transient; p->imported = imported; p->pattern = NULL; p->minLength = -1; p->maxLength = -1; p->num = typeNO++; Tptr[typ->type] = p; DBGLOG(fprintf(stderr, "New typedef %s %s\n", c_type(p), p->imported)); return p;}Tnode *mktemplate(Tnode *typ, Symbol *id){ Tnode *p; for (p = Tptr[Ttemplate]; p; p = p->next) if (p->ref == typ && p->id == id && p->transient == transient) { if (imported && !p->imported) p->imported = imported; return p; /* type alrady exists in table */ } p = (Tnode*)emalloc(sizeof(Tnode)); /* install new type */ p->type = Ttemplate; p->ref = typ; p->id = id; p->sym = NULL; p->response = (Entry*)0; p->width = 0; p->generated = False; /* copy of existing (generated) type */ p->wsdl = False; p->next = Tptr[Ttemplate]; p->transient = transient; p->imported = imported; p->pattern = NULL; p->minLength = -1; p->maxLength = -1; p->num = typeNO++; Tptr[Ttemplate] = p; return p;}/* DO NOT REMOVE OR ALTER (SEE LICENCE AGREEMENT AND COPYING.txt) */voidcopyrightnote(FILE *fd, char *fn){ fprintf(fd, "/* %s\n Generated by gSOAP "VERSION" from %s\n Copyright(C) 2000-2007, Robert van Engelen, Genivia Inc. All Rights Reserved.\n This part of the software is released under one of the following licenses:\n GPL, the gSOAP public license, or Genivia's license for commercial use.\n*/", fn, filename);}voidbanner(FILE *fd, const char *text){ int i; fprintf(fd, "\n\n/"); for (i = 0; i < 78; i++) fputc('*', fd); fprintf(fd, "\\\n *%76s*\n * %-75s*\n *%76s*\n\\", "", text, ""); for (i = 0; i < 78; i++) fputc('*', fd); fprintf(fd, "/\n");}voididentify(FILE *fd, char *fn){ time_t t = time(NULL), *p = &t; char tmp[256]; strftime(tmp, 256, "%Y-%m-%d %H:%M:%S GMT", gmtime(p)); fprintf(fd, "\n\nSOAP_SOURCE_STAMP(\"@(#) %s ver "VERSION" %s\")\n", fn, tmp);}voidcompile(Table *table){ Entry *p; Tnode *typ; Pragma *pragma; int classflag = 0; char *s; char base[1024]; char soapStub[1024]; char soapH[1024]; char soapC[1024]; char soapClient[1024]; char soapServer[1024]; char soapClientLib[1024]; char soapServerLib[1024]; char pathsoapStub[1024]; char pathsoapH[1024]; char pathsoapC[1024]; char pathsoapClient[1024]; char pathsoapServer[1024]; char pathsoapClientLib[1024]; char pathsoapServerLib[1024]; char soapMatlab[1024]; char pathsoapMatlab[1024]; char soapMatlabHdr[1024]; char pathsoapMatlabHdr[1024]; if (*dirpath) fprintf(fmsg, "Using project directory path: %s\n", dirpath); if (namespaceid) { prefix = namespaceid; fprintf(fmsg, "Using code namespace: %s\n", namespaceid); } strcpy(base, prefix); if (cflag) s = ".c"; else s = ".cpp"; strcpy(soapMatlab, base); strcat(soapMatlab, "Matlab.c"); strcpy(pathsoapMatlab, dirpath); strcat(pathsoapMatlab, soapMatlab ); strcpy(soapMatlabHdr, base); strcat(soapMatlabHdr, "Matlab.h"); strcpy(pathsoapMatlabHdr, dirpath); strcat(pathsoapMatlabHdr, soapMatlabHdr); strcpy(soapStub, base); strcat(soapStub, "Stub.h"); strcpy(pathsoapStub, dirpath); strcat(pathsoapStub, soapStub); strcpy(soapH, base); strcat(soapH, "H.h"); strcpy(pathsoapH, dirpath); strcat(pathsoapH, soapH); strcpy(soapC, base); strcat(soapC, "C"); strcat(soapC, s); strcpy(pathsoapC, dirpath); strcat(pathsoapC, soapC); strcpy(soapClient, base); strcat(soapClient, "Client");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -