File: SoConcatenate.h

package info (click to toggle)
inventor 2.1.5-10%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 35,712 kB
  • sloc: ansic: 33,864; lisp: 7,361; cpp: 3,874; yacc: 369; sh: 360; perl: 234; awk: 141; makefile: 80; csh: 35; sed: 11
file content (133 lines) | stat: -rw-r--r-- 4,294 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 *
 *  Copyright (C) 2000 Silicon Graphics, Inc.  All Rights Reserved. 
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  Further, this software is distributed without any warranty that it is
 *  free of the rightful claim of any third person regarding infringement
 *  or the like.  Any license provided herein, whether implied or
 *  otherwise, applies only to this software file.  Patent licenses, if
 *  any, provided herein do not apply to combinations of this program with
 *  other software, or any other product whatsoever.
 * 
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
 *  Mountain View, CA  94043, or:
 * 
 *  http://www.sgi.com 
 * 
 *  For further information regarding this notice, see: 
 * 
 *  http://oss.sgi.com/projects/GenInfo/NoticeExplan/
 *
 */

//  -*- C++ -*-

/*
 * Copyright (C) 1990,91   Silicon Graphics, Inc.
 *
 _______________________________________________________________________
 ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
 |
 |   $Revision: 1.2 $
 |
 |   Description:
 |	This file defines the "concatenation" engine that joins
 |	together several (up to 10) fields.  Its inputs are several
 |      multi-valued fields (automatic field conversion will do the
 |      right thing, so you can attach single-valued fields) of the
 |      same type, output is a multi-value field of the same type.
 |
 |      If you need to concatenate more than 10 fields together,
 |      concatenate the outputs of several of these into yet another
 |      concatenate engine.
 |
 |   Classes:
 |	SoConcatenate
 |
 |   Author(s)		: Ronen Barzel, Gavin Bell
 |
 ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
 _______________________________________________________________________
 */

#ifndef  _SO_CONCATENATE_
#define  _SO_CONCATENATE_

#include <Inventor/engines/SoSubEngine.h>
#include <Inventor/fields/SoSFName.h>

//////////////////////////////////////////////////////////////////////////////
//
//  Class: SoConcatenate
//
//  Concatenate several fields together into one big field.
//
//////////////////////////////////////////////////////////////////////////////

class SoMField;

// C-api: public=input,output
// C-api: prefix=SoConcat
class SoConcatenate : public SoEngine {

    SO_ENGINE_HEADER(SoConcatenate);

  public:
    // Constructor, takes a subclass of SoMField.
    SoConcatenate(SoType mfInputType);

    // Inputs; connect them like this:
    //    concatenate->input[0]->connectFrom(...)
    // The names of these inputs is input0 ... input9.
    // The default value for these fields is no values.
    SoMField *input[10];

    // Output.  Is of the same type as the inputs (note that it is a
    // pointer, unlike most engine outputs).
    SoEngineOutput *output;

  SoINTERNAL public:
    // Initializes engine class
    static void		initClass();

  protected:

    virtual SoFieldContainer *	copyThroughConnection() const;
  
  private:
    // Constructor/Destructor.  This constructor is used only when
    // reading these from file.
    SoConcatenate();
    ~SoConcatenate();

    // Concatenate engines must write out their input type before writing
    // their fields, so these are overridden:
    virtual SbBool	readInstance(SoInput *in, unsigned short flags);
    virtual void	writeInstance(SoOutput *out);

    void		setup(SoType);
    virtual void	evaluate();

    int conversionCase;

    SoFieldData *myInputData;
    SoEngineOutputData *myOutputData;

    SoSFName typeField; // Used when reading/writing
};

#endif /* _SO_CONCATENATE_ */