1999-02-23 Andrew T. Veliath * Update version to 0.6.0. * Assign many node file and line locations to their identifier. * parser.y: Improve module and interface identifier conflict error message. * IDL.h.new.in: Improved version codes. * parser.y: Allow inhibits on codefrags, operations and attributes. 1999-02-22 Andrew T. Veliath * IDL_tree_func tree parameter changed to a structure, which contains up paths of the traversal and the real up path (in the case of identifiers referenced elsewhere after definition). The original parameter is now in the tree member. IDL_tree_to_IDL rewritten to automatically determine scoping using this information, instead of the previous scope passing. This should make any future additions require fewer source changes. * Improvements to structure and union handling, IDL_tree_to_IDL, and IDL_tree_walk. 1999-02-21 Andrew T. Veliath * Fully convert to glib memory routines. 1999-02-19 Andrew T. Veliath * parser.y: Properties for parameters moved before direction keyword. * Configuration and versioning system overhauled. 1999-02-18 Andrew T. Veliath * Update version to 0.5.10. * util.c (IDL_tree_properties_copy): New function. (IDL_parse_filename_with_input): Mostly ignore HAVE_CPP_PIPE_STDIN. * parser.y: Make codefrags work inside interfaces (only at outer level). Allow properties for operations and attributes, and change all XPIDL node properties to reside on the ident node. 1999-02-12 Andrew T. Veliath * parser.y: Allow forward decls to be suppressed as well. * util.c (yyerrorl, yywarningl): Only call g_basename if we aren't piping input from CPP. 1999-02-11 Andrew T. Veliath * Update version to 0.5.9. 1999-02-09 Tom Tromey * libIDL.texi: Use @pxref and not @xref in parentheses. 1999-02-06 Andrew T. Veliath * parser.y: Detect recursive structure members. * util.c (IDL_parse_filename_with_input): Assign filename hash before first call to callback. * parser.y: Allow const_dcl, type_dcl and except_dcl to also be inhibited. * util.c (load_inhibits): Allow any discriminator to be inhibited. 1999-01-02 Jeff Garzik * util.c: s/sprintf/g_snprintf/ s/vsprintf/g_strdup_vprintf/ Spaced out some code for readability. 1999-01-02 Raffaele Sena via Russell Nelson * Fix to autogen.sh for build directory different from package top directory. 1998-12-16 Andrew T. Veliath * Update version to 0.5.8 * util.c (IDL_emit_IDL_ident): Use IDL_ns_scope_levels_from_here and parent from callback to automatically determine the minimal necessary scoping for the identifier; this should allow much more IDL from IDL_tree_to_IDL to be fed back unchanged. (IDL_tree_get_scope): New function. (IDL_tree_to_IDL): Updated to also take an IDL_ns parameter. Use G_GNUC_PRINTF for data output function. Add new functions to handle XPIDL property output for IDL generation. * IDL.h, ns.c (IDL_ns_scope_levels_from_here): New function, determines the minimal level of scoping to prepend to a identifier to qualify it properly, from a different scope. * IDL_tree_func changed to include parent, which can differ from the node parent link. 1998-12-15 Andrew T. Veliath * (IDL_tree_to_IDL): New public function. Not yet fully implemented, but most stuff will work. Add a call from tstidl.c. (IDL_tree_walk): New public function; more generalized version of IDL_tree_walk_in_order. 1998-12-05 Andrew T. Veliath * tstidl.c: Add example of IDL_tree_error usage. * IDL.h, ns.c, util.c: Move __IDL_filename_hash to IDL_ns structure. Rename IDL_property... to IDL_tree_property... Make IDL_tree_get_node_info public. * Change private yyerrornv, yywarningnv to public IDL_tree_error and IDL_tree_warning. * tstidl.c, ns.c: Provide example of local parameter declaration namespace lookup from parameter attribute property, and modify NS assertions to make it more useful outside of parsing. * IDL.h, parser.y, lexer.l, util.c, tstidl.c: Turn interface properties into extended node properties for XPIDL (for any node). IDL_interface_get_property -=> IDL_property_get. Add IDL_property_set, IDL_property_remove. Add a potential property list between the parameter attribute and the type. Allow underscores in property keys. 1998-12-04 Andrew T. Veliath * IDL.h (IDL_NODE_IS_TYPE): Add macro. * lexer.l, IDL.h, util.c: Add IDL_CODEFRAG type, for XPIDL. * parser.y, IDL.h, util.c: Integrate XPIDL varargs support into parameter_dcls, and remove (now unneeded) VARARGS node type. 1998-12-03 Andrew T. Veliath * parser.y: Add IDL_inhibit_push, IDL_inhibit_pop, IDL_inhibit_get, IDL_file_set and IDL_file_get wrapper functions. 1998-12-01 Andrew T. Veliath * parser.y, lexer.l, util.c, IDL.h: Allow boolean XPIDL properties, which are inserted with an empty string. Add recognition of "noscript" keyword when XPIDL syntax is enabled. Add syntactical recognition for "native mytype (PRThread *)" in XPIDL mode (i.e., where `PRThread *' can be anything). 1998-11-30 Andrew T. Veliath * Interface infotag list turned into a case-insensitive property hash table with improved parsing. If an IID is provided in the property list, IDL_interface_get_property (interface, "IID") should provide the IID, for instance (without the parens). Properties can be any identifier (value) item, separated by commas inside square brackets. * Add per-filename state information. * #pragma inhibit push/pop added. The push operation will increment a counter, while the pop operation decrements it. If the counter is greater than zero, any module or interface declared during that time will be inhibited. * Made XPIDL interface properties a list, and moved before the interface keyword. * Internal flag state added. 1998-11-29 Andrew T. Veliath * util.c (IDL_tree_process_forward_dcls): (IDL_tree_remove_inhibits): (IDL_tree_remove_empty_modules): Listen to IDLF_VERBOSE. * IDL.h: Add note to IDL_tree_type explaining how the enumerator ordering is subject to change, and order should not be hardcoded into programs (alternative is suggested). Separate parse flags into general and syntax extension parse flags, with the latter starting at bit sixteen. IDLF_VERBOSE: new parse flag. 1998-11-28 Andrew T. Veliath * lexer.l, parser.y, util.c, IDL.h: Change iid_ident to infotag_ident (TOK_IID_IDENT -> TOK_INFOTAG), which is more unique in scanning, and slightly more general. * util.c (IDL_tree_free): Update for interface iid, and varargs. (IDL_tree_walk_in_order): Same. (IDL_type_varargs_new): New function. * Makefile.am: Add G_LOG_DOMAIN for libIDL. * lexer.l: Add XPIDL conditional token scan for TOK_VARARGS (...). Add token scan for iid_ident, which is an extended version of a standard IDL identifier, for XPIDL IIDs. * parser.y: Add XPIDL IID interface tagging support. (interface_iid) New production, update (interface) to handle it. Generate error if XPIDL syntax is not enabled and an IID is provided. New token, TOK_IID_IDENT, iid_ident rule. * lexer.l: Only recognize TypeCode when IDLF_TYPECODES syntax flag is present. * IDL.h (IDLF_TYPECODES): New flag; IDLF_TYPECODES. New type IDLN_TYPE_VARARGS, eventually for use with XPIDL. 1998-11-27 Andrew T. Veliath * libIDL.def: New file. * util.h (alloca): Define if compiling for Win32. * Makefile.am (MAINTAINERCLEANFILES): Change to maintainer clean from dist clean for parser.c, lexer.c. It's nice to have the generated parsers around from flex and bison, especially for Win32. * util.c (IDL_parse_filename): Don't use access under Win32. IDL_EXPORT __IDL_check_type_casts. * IDL.h (IDL_IMPORT): Add definitions required for Win32. * Makefile.msc: README.win32: New files. * Makefile.am: Define YYERROR_VERBOSE for slightly better messages in unhandled error situations. 1998-11-20 Andrew T. Veliath * tstidl.c (print_ident_comments): Print out identifiers and any comments. * util.c (IDL_parse_filename): Init __IDL_new_ident_comments, then free any remaining on return from parsing. Same for IDL_parse_filename_with_input. (IDL_tree_free_real): Free comments of identifier. * parser.y (IDL_queue_new_ident_comment): New function. ns_new_ident, cur_ns_new_or_prev_ident: Assign comments to the newly created identifier if they exist. This function, called from the input callback will queue comments to be assigned to the next newly created identifier (queue order is maintained, and stored in the comments list in the identifier node). * IDL.h: Add comments list to IDL_IDENT. 1998-11-19 Andrew T. Veliath * tstidl.c (my_input_cb): Provide example of alternate input method. * lexer.l (YY_INPUT): Allow stream input from user defined callback. (__IDL_lex_init): Set __IDL_inputcb to NULL. * util.c, util.h: Add variables for input callback. (IDL_parse_filename_with_input): New function. * IDL.h: Add IDL_input_callback, IDL_input_reason, IDL_input_data. (IDL_parse_filename_with_input): Add prototype. * lexer.l: Add XPIDL inclusive start condition. Activate condition when IDLF_XPIDL is specified in the parse flags before scanning. 1998-11-16 Andrew T. Veliath * lexer.l: Had b10_int and b10_uint reversed. * tstidl.c (print_const_dcls): Update for IDL_LL. * lexer.l: Use new IDL_LL constant. (YY_INPUT): Use this now for testing. This will eventually be used for cpp input override capability. * IDL.h (IDLF_XPIDL): New parse flag, for eventual XPIDL support. (IDL_LL): Replaces old IDL_*_FMT defines. Use this in place of the conversion operator instead of the entire % construct. Rename IDL_callback to IDL_msg_callback. Note: glib currently doesn't tell me what conversion specifier to use for GINT64, so this may currently be troublesome on some platforms (it had to be changed since the hack that was in place no longer works). * Makefile.am, configure.in: Bump version number to 0.5.3. 1998-10-25 Andrew Veliath * Update version to 0.5.2 * ns.c (IDL_ns_load_idents_to_tables): Initialize struct insert_heap_cb_data just before use. 1998-10-20 Andrew Veliath * util.c (IDL_parse_filename): Try to make #includes behave more rationally when source IDL file is not in the current directory. 1998-10-14 Andrew Veliath * parser.y (IDL_resolve_const_exp): Allow return of enumerated identifiers. Trying to use an enumeration in an arithmetic expression is disallowed. 1998-10-09 Andrew Veliath * parser.y: (positive_int_const) Improve errors and warnings for nonsensical values. 1998-10-08 Andrew Veliath * IDL.h (IDLF_NO_EVAL_CONST): New flag, obsoletes IDLF_EVAL_CONST, which has been removed. The default behavior is now to evaluate constant expressions. * IDL.h, parser.y (IDL_resolve_const_exp): New function. positive_int_const changed to attempt resolution of expression to an integral value. primary_expr will attempt resolution of scoped names, so constant evaluation is now much improved. An IDL_NODE_IS_LITERAL is also now in IDL.h. Thu Aug 27 10:52:41 1998 Andrew Veliath * Update version to 0.5.0. * Updates to libIDL.texi, and renable in Makefile.am. * Integrate default maximum warning level into IDL_parse_filename. Thu Aug 27 03:30:44 1998 Andrew Veliath * parser.y: Generate error if one tries to inherit from the same interface more than once. Also use IDL_ns_ident_to_qstring to give more concise identifiers in error messages. Thu Aug 27 01:08:56 1998 Andrew Veliath * IDL.h: Removed IDL_TRUE and IDL_FALSE, so we can just use the glib TRUE and FALSE. References switched... * util.c (IDL_tree_walk_in_order): (...pre_order changed to the more accurate ...in_order). Behavior change, return value is now void, and returning TRUE from the IDL_tree_func means traverse this node, and FALSE means don't traverse this node, instead of the previous return FALSE and stop traversal all together. This is much more useful for this context, I think. Wed Aug 26 01:48:12 1998 Andrew Veliath * util.c (IDL_tree_process_forward_dcls), (IDL_tree_remove_inhibits), (IDL_tree_remove_empty_modules): Remove debugging messages. * util.c (IDL_parse_filename): Only run optimization if tree is non-NULL, and improve useless file message. * parser.y: Complete previous declaration context error messages. 1998-08-25 Andrew Veliath * Update libIDL version to 0.4.0. * Update font lock keywords in README, added support for __declspec. * Implementation of IDL_tree_free for IDLN_GENTREE hashes in place. * Makefile.am: Change libtool version to 3:2:3. * parser.y, IDL.h: Changes for global ref counting. * util.c (IDL_tree_free): Instead of ref counting only IDENTS, ref count all nodes instead (updated __IDL_tree_free, added IDL_tree_free_real). Update remove_list_node to reflect this change. * util.h: Remove __IDL_tree_free. * util.c (__IDL_tree_free): Ref count IDLN_IDENTS. Tue Aug 25 01:46:10 1998 Tom Tromey * util.c (IDL_strcase_equal): Use g_strcasecmp. (IDL_strcase_cmp): Likewise. 1998-08-24 Andrew Veliath * Save inhibited nodes and free upon IDL_ns_free so that the full trees are available to traverse from the namespace. * 'nostubs' changed to 'inhibit' 1998-08-17 Andrew Veliath * Update version to 0.3 * Create an IDLF_COMBINE_REOPENED_MODULES to have libIDL combine all the module declarations into one tree, instead of separate trees with the same ident node. * Add __declspec support. First one implemented is for interfaces, so that __declspec (nostubs) interface foo { ... }; won't generate tree node information. Had to revamp grammar slightly to get a single lookahead. * Change IDL_long_t to IDL_longlong_t (+ unsigned version). 1998-08-10 Andrew Veliath * parser.y: Catch the interface Object construct, which isn't legal, but is in some pseudo-IDL files. * lexer.l: Bring back Object token recognition. * ns.c (IDL_ns_ident_to_qstring): If given and IDLN_IDENT, quietly call IDL_IDENT_TO_NS. * util.[ch]: Change g_strcase_hash to IDL_strcase_hash (make public). Add IDL_strcase_equal, IDL_strcase_cmp, load_forward_dcls, resolve_forward_dcls, print_unresolved_forward_dcls, IDL_tree_resolve_forward_dcls. (IDL_parse_filename): Warn on unresolved forward declarations in post-parse semantic checking. Remove __IDL_tree_print, add IDL_tree_walk_pre_order. * IDL.h: Add IDL_tree_walk_pre_order prototype and callback typedef. 1998-08-09 Andrew Veliath * parser.y: enum_type: Don't generate a nested scope. 1998-08-06 Andrew Veliath * Allow for redefinition of certain items in inheritance (doesn't detect some invalid items, but still better than before). * Change the namespace data structure from a general tree using a linked list to case-insensitive string hashes for each tree level. Used g_str_hash from glib modified for case-insensitivity (g_strcase_hash). * Fix bug where some top-level redeclarations would cause a core dump. * Change references to strdup to g_strdup, and update configure.in. * Begin major cutting for libIDL 0.3, which will have new namespace code. Move lots of stuff around. 1998-08-05 Andrew Veliath * lexer.l: Change C-language warning level to warning level 2, all other warnings to level 1 * parser.y (yywarning*): Add multiple warning levels * IDL.h: Remove IDL_WARNING, add IDL_WARNING1-3 and IDL_WARNINGMAX * IDL.h: Generate a CPP error if glib.h isn't included beforehand. * IDL.h, parser.y: Integrate Sebastian Wilhelm's patch to add type cast checking, with a number of style modifications of my own (anything I broke is my fault ;-) for libIDL and add a warning on casting a NULL pointer. * lexer.l: Implement Dick's suggestion to warn or error on underscores in identifiers with underscores or ones which begin with an underscore. 1998-08-04 Andrew Veliath * Preliminary inheritance checks * Implement pragmas for prefix, ID and version * First cut at Repository ID generation 1998-08-03 Andrew Veliath * parser.y: Add many new error messages. 1998-07-28 Andrew Veliath * acinclude.m4 (revive): Create AC_CPP_ACCEPT_IDL and AC_CPP_PIPE_STDIN tests * configure.in: Add AC_CPP_ACCEPT_IDL and AC_CPP_PIPE_STDIN in configuration * util.h, parser.y, lexer.l: If HAVE_CPP_PIPE_STDIN is defined, then compile for piped CPP input, else use the more portable symlink method. Also use getcwd instead of g_getcwd, since it has been commented out in glib. 1998-07-27 Andrew Veliath * parser.y (IDL_parse_filename): g_getcwd returns a static buffer 1998-07-25 Neil Vachharajani * parser.y: Add one more byte for / in the allocation of linkto in IDL_parse_filename 1998-07-20 Andrew Veliath * Most of inhertance is done. ChangeLog won't be updated much now in preference to CVS logs. 1998-07-01 Andrew Veliath * Fix spelling of "inheritance" :) * Add use long long type if __GNUC__ defined * Fix scoping rules (scope idents weren't being referenced properly) 1998-06-29 Andrew Veliath * Create skeleton texinfo file * configure.in improved * Wee, should now also work with standard lex with new renaming rule * Now works with standard yacc, but flex will be a requirement 1998-06-24 Andrew Veliath * Warn if identifier appears in different case * Most namespace collision detection added, except for inheritance * Use YYDEBUG * parser.y: Initial implementation of IDL_ns* stuff 1998-06-23 Andrew Veliath * Implement constant evaluation * Almost all tree generation stuff added * Implement const_dcl and const_exp * Implement type_dcl, interface and module non-terminals 1998-06-22 Andrew Veliath * Start implementing tree generation code * Add IDL_root_free, IDL_symtab_free * Modify IDL_parse_filename to include callbacks, return a symbol table * Implmenent warning/error callback functionality * Move idl.c code to parser.y, delete idl.c 1998-06-17 Andrew Veliath * Implement IDL_parse_filename * Implement supporting code for error and warning detection * Create rename.h to rename yacc/lex stuff * Add strdup definition to util.[ch] and autoconf * Create util.c, util.h * Create lexer.l, parser.l, idl.h, idl.c * Create library structure, automake and autoconf files