Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtinfo / dtinfogen / infolib / etc / ConcatTask.C
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: ConcatTask.C /main/3 1996/08/21 15:46:12 drk $ */
24 /* exported interfaces */
25 #include "ConcatTask.h"
26
27 /* imported interfaces */
28 #include "Expression.h"
29 #include "ExprList.h"
30 #include "Token.h"
31 #include "AttributeData.h"
32 #include "Content.h"
33 #include "FirstOf.h"
34 #include "GenericId.h"
35 #include "Literal.h"
36
37 Concat::Concat( const Token &t, 
38                 ExprList *elist,
39                 ActionType mode):OL_Data(t, mode)
40 {
41   
42   for ( OL_Expression *eptr = elist->first();
43         eptr;
44         eptr = elist->next(eptr) ) {
45     switch ( eptr->type() ) {
46
47       case REFERENCE:
48         addSubTask( new AttributeData( t, eptr->name(), mode ));
49         break;
50         
51       case CONTENT:
52         addSubTask( new Content(t,mode) );
53         break;
54
55       case CONCAT:
56         addSubTask( new Concat( t, 
57                                 (ExprList *)eptr->data_list(),
58                                 mode) );
59         break;
60
61       case FIRSTOF:
62         addSubTask( new FirstOf( t,
63                                  (ExprList *)eptr->data_list(),
64                                  mode) );
65         break;
66
67       case GENERIC_ID:
68         addSubTask( new GenericId( t,
69                                    eptr->name(),
70                                    mode) );
71         break;
72
73       case LITERAL:
74         addSubTask( new Literal( t, 
75                                  ( const char *)eptr->data_list(),
76                                  mode) );
77         break;
78     
79       default:
80         abort();
81     }
82   }
83 }
84
85