Avoiding #ifdefs

CoDeBrEaKeR codebreaker28 at yahoo.com
Wed Jan 6 03:38:41 EST 2010



--- On Wed, 1/6/10, Marek Vasut <marek.vasut at gmail.com> wrote:

> From: Marek Vasut <marek.vasut at gmail.com>
> Subject: Re: Avoiding #ifdefs
> To: "CoDeBrEaKeR" <codebreaker28 at yahoo.com>
> Cc: linux-arm at lists.infradead.org
> Date: Wednesday, January 6, 2010, 1:32 PM
> Dne St 6. ledna 2010 07:46:59
> CoDeBrEaKeR napsal(a):
> > Thanks,
> > 
> >  But the stucture am using is pretty insanely
> nested.
> 
> So? Why don't you show us the real code? (please also stop
> top-posting).

sorry about top posting. here's the code(directly pasting it
from the patch)

+static struct omap_dss_device zoom_tv_device = {
+	.name                   = "tv",
+	.driver_name            = "venc",
+	.type                   = OMAP_DISPLAY_TYPE_VENC,
+#ifdef CONFIG_MACH_OMAP_3630SDP
+	.phy.venc.type          = OMAP_DSS_VENC_TYPE_SVIDEO,
+#else
+	.phy.venc.type          = OMAP_DSS_VENC_TYPE_COMPOSITE,
+#endif
+	.platform_enable        = zoom_panel_enable_tv,
+	.platform_disable       = zoom_panel_disable_tv,
+};
+
+static struct omap_dss_device *zoom_dss_devices[] = {
+	&zoom_lcd_device,
+	&zoom_tv_device,
+};
+
+static struct omap_dss_board_info zoom_dss_data = {
+	.num_devices = ARRAY_SIZE(zoom_dss_devices),
+	.devices = zoom_dss_devices,
+	.default_device = &zoom_lcd_device,
+};
+
+static struct platform_device zoom_dss_device = {
+	.name          = "omapdss",
+	.id            = -1,
+	.dev            = {
+		.platform_data = &zoom_dss_data,
+	},
+};

ifdefs here is what i want to avoid.

+#ifdef CONFIG_MACH_OMAP_3630SDP
+	.phy.venc.type          = OMAP_DSS_VENC_TYPE_SVIDEO,
+#else
+	.phy.venc.type          = OMAP_DSS_VENC_TYPE_COMPOSITE,
+#endif


~A

> > 
> > ~A
> > 
> > --- On Wed, 1/6/10, Marek Vasut <marek.vasut at gmail.com>
> wrote:
> > > From: Marek Vasut <marek.vasut at gmail.com>
> > > Subject: Re: Avoiding #ifdefs
> > > To: linux-arm at lists.infradead.org
> > > Cc: "CoDeBrEaKeR" <codebreaker28 at yahoo.com>
> > > Date: Wednesday, January 6, 2010, 11:53 AM
> > > Dne St 6. ledna 2010 07:04:37
> > >
> > > CoDeBrEaKeR napsal(a):
> > > > Most of the times its is easy to start
> having a lot of
> > >
> > > #ifdef statements in
> > >
> > > >  your code. Since this is not a proper
> thing to
> > >
> > > do, placing the #ifdef in a
> > >
> > > >  header file would be the usual
> suggestion. well,
> > >
> > > i understand this as far
> > >
> > > >  as #ifdefs in functions are concerned.
> How about
> > >
> > > structures?
> > >
> > > > for Ex:
> > > >
> > > >  static struct something = {
> > > >     .name   
>    
> > >
> > >            =
> "xyz",
> > >
> > > >     .driver_name 
>    
> > >
> > >       = "something",
> > >
> > > > #ifdef SOME_ARCH_TYPE
> > > >     .bla   
>    
> > >
> > >         
>    = DO_THIS,
> > >
> > > > #else
> > > >     .bla   
>    
> > >
> > >         
>    =
> > > DO_SOMETHING_ELSE,
> > >
> > > > #endif
> > > > };
> > > >
> > > > How do i avoid #ifdef here, any idea??
> > >
> > > If you want to do some run-time detection, then
> do so and
> > > assign 'bla' at
> > > runtime...
> > > if (x)
> > >  something.bla = somefn;
> > > else
> > > ...
> > >
> > > > Thanks.
> > > >
> > > > ~A
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> _______________________________________________
> > > > linux-arm mailing list
> > > > linux-arm at lists.infradead.org
> > > > http://lists.infradead.org/mailman/listinfo/linux-arm
> > >
> > > _______________________________________________
> > > linux-arm mailing list
> > > linux-arm at lists.infradead.org
> > > http://lists.infradead.org/mailman/listinfo/linux-arm
> > 
> 


      



More information about the linux-arm mailing list