On Sun, 2009-05-31 at 16:37 -0700, Zach Welch wrote:
> Hi all,
> 
> The following things nagged at me when I did the target_type clean-up:
> 
> 1) Remove redundant structure typedefs:
>   a) Entails the following steps (for each named struct "type"):
>         i) s/^typedef struct type_s/struct type_s/
>        ii) s/^} type_t;/};/
>       iii) s/type_t/struct type_s/
>        iv) Fix any messes that these commands miss or make. ;)
>   b) Eliminates what are essentially duplicated symbols:
>     - simplifies the Doxygen documentation tremendously.
>     - eliminates style ambiguity and forward referencing.
[snip]
> I will post patches to clean-up and removal of jtag_tap_t in reply to
> this thread, to provide better foundation for concrete discussion about
> issue #1.  While I think this would help the code and documentation a
> lot, I would even go further to suggest "s/_s//" from all struct names.

Here is the first patch to remove the forward declaration.  I can't
figure out why I am not getting warnings with this, without adding
forward declarations for the struct in various places.

I found some problems with the other patch and have been too distracted
to fix it, but I wanted to get this one out to the list for review and
feedback about the expected-but-strangely-absent warnings.

Cheers,

Zach
Index: src/helper/types.h
===================================================================
--- src/helper/types.h	(revision 1970)
+++ src/helper/types.h	(working copy)
@@ -46,8 +46,6 @@
 typedef unsigned long long u64;
 #endif
 
-typedef struct jtag_tap_s jtag_tap_t;
-
 #ifdef HAVE_STDBOOL_H
 #include <stdbool.h>
 #else	/* HAVE_STDBOOL_H */
Index: src/jtag/jtag.h
===================================================================
--- src/jtag/jtag.h	(revision 1970)
+++ src/jtag/jtag.h	(working copy)
@@ -263,7 +263,7 @@
 
 typedef struct scan_field_s
 {
-	jtag_tap_t* tap;                /* tap pointer this instruction refers to */
+	struct jtag_tap_s *tap;                /* tap pointer this instruction refers to */
 	int         num_bits;           /* number of bits this field specifies (up to 32) */
 	u8*         out_value;          /* value to be scanned into the device */
 	u8*         in_value;           /* pointer to a 32-bit memory location to take data scanned out */
@@ -368,7 +368,7 @@
 /* this is really: typedef jtag_tap_t */
 /* But - the typedef is done in "types.h" */
 /* due to "forward decloration reasons" */
-struct jtag_tap_s
+typedef struct jtag_tap_s 
 {
 	const char* chip;
 	const char* tapname;
@@ -388,8 +388,8 @@
 
 	jtag_tap_event_action_t* event_action;
 
-	jtag_tap_t* next_tap;
-};
+	struct jtag_tap_s *next_tap;
+} jtag_tap_t;
 extern jtag_tap_t* jtag_AllTaps(void);
 extern jtag_tap_t* jtag_TapByPosition(int n);
 extern jtag_tap_t* jtag_TapByString(const char* dotted_name);
Index: src/target/xscale.h
===================================================================
--- src/target/xscale.h	(revision 1970)
+++ src/target/xscale.h	(working copy)
@@ -32,7 +32,7 @@
 typedef struct xscale_jtag_s
 {
 	/* position in JTAG scan chain */
-	jtag_tap_t *tap;
+	struct jtag_tap_s *tap;
 
 	/* IR length and instructions */	
 	int ir_length;
Index: src/target/target.h
===================================================================
--- src/target/target.h	(revision 1971)
+++ src/target/target.h	(working copy)
@@ -117,7 +117,7 @@
 	target_type_t *type;				/* target type definition (name, access functions) */
 	const char *cmd_name;				/* tcl Name of target */
 	int target_number;					/* generaly, target index but may not be in order */
-	jtag_tap_t *tap;					/* where on the jtag chain is this */
+	struct jtag_tap_s *tap;					/* where on the jtag chain is this */
 	const char *variant;				/* what varient of this chip is it? */
 	target_event_action_t *event_action;
 
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to