File: DSIGTransformList.hpp

package info (click to toggle)
xml-security-c 1.5.1-3%2Bsqueeze3
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 7,424 kB
  • ctags: 5,832
  • sloc: cpp: 45,357; sh: 8,270; makefile: 689
file content (147 lines) | stat: -rw-r--r-- 3,017 bytes parent folder | download | duplicates (4)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*
 * Copyright 2002-2005 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 * XSEC
 *
 * DSIGTransformList := List that holds all the transforms in the Signature.
 *
 * Author(s): Berin Lautenbach
 *
 * $Id: DSIGTransformList.hpp 351364 2005-06-04 11:30:26Z blautenb $
 *
 */

#ifndef DSIGTRANSFORMLIST_INCLUDE
#define DSIGTRANSFORMLIST_INCLUDE


// XSEC Includes
#include <xsec/framework/XSECDefs.hpp>

// General includes
#include <vector>

class DSIGTransform;

/**
 * @ingroup internal
 */

/**
 * @brief The class used for holding Transform Elements within a signature.
 *
 * This class is the container for the \<Transforms\> list in a Reference or
 * KeyInfo list.  It holds a list of Transform elements that can be
 * manipulated by the caller, or asked to provide the appropriate
 * TXFM* class to actually perform a transform.
 *
 */


class DSIG_EXPORT DSIGTransformList {

public:

#if defined(XSEC_NO_NAMESPACES)
	typedef vector<DSIGTransform *>			TransformListVectorType;
#else
	typedef std::vector<DSIGTransform *>	TransformListVectorType;
#endif

#if defined(XSEC_SIZE_T_IN_NAMESPACE_STD)
	typedef std::size_t		size_type;
#else
	typedef size_t			size_type;
#endif

	/** @name Constructors and Destructors */
	//@{

	/**
	 * \brief Construct the list
	 *
	 */

	DSIGTransformList();

	/**
	 * \brief Destroy all Transform resources
	 *
	 * Destroys the list - including the contained DSIGTransform* elements.
	 * Does not destroy the underlying DOM structure.
	 *
	 */

	~DSIGTransformList();

	//@}

	/** @name Manipulate existing structures */
	//@{

	/**
	 * \brief Add a transform to the list
	 *
	 * Should never be called directly - will add a pre-built
	 * transform to the list.
	 *
	 * @note Will not add any DOM structures
	 * @param ref The transform structure to add
	 */

	void addTransform(DSIGTransform * ref);

	/**
	 * \brief Remove a transform from the list.
	 *
	 * Should never be called directly - will simply remove the element
	 * without deleting
	 */

	void removeTransform(size_type index);

	/**
	 * \brief Delete the transform at the indicated position.
	 *
	 * @param index The position to delete from.
	 */

	DSIGTransform * item(size_type index);

	/** 
	 * \brief Get the number of items.
	 *
	 */

	size_type	getSize();

	/**
	 * \brief Remove all elements - but delete none.
	 */

	bool empty();


	// Get information

private:

	TransformListVectorType					m_transformList;
};


#endif /* DSIGTRANSFORMLIST_INCLUDE */