Rosetta 3.5
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
src
core
pack
task
operation
TaskOperationFactory.hh
Go to the documentation of this file.
1
// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2
// vi: set ts=2 noet:
3
//
4
// (c) Copyright Rosetta Commons Member Institutions.
5
// (c) This file is part of the Rosetta software suite and is made available under license.
6
// (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7
// (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8
// (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9
10
/// @file core/pack/task/operation/TaskOperationFactory.hh
11
/// @brief
12
/// @author ashworth
13
14
#ifndef INCLUDED_core_pack_task_operation_TaskOperationFactory_hh
15
#define INCLUDED_core_pack_task_operation_TaskOperationFactory_hh
16
17
// Unit Headers
18
#include <
core/pack/task/operation/TaskOperationFactory.fwd.hh
>
19
20
// Package Headers
21
#include <
core/pack/task/operation/TaskOperation.fwd.hh
>
22
#include <
core/pack/task/operation/TaskOperationCreator.fwd.hh
>
23
#include <
core/pack/task/operation/ResLvlTaskOperationCreator.fwd.hh
>
24
#include <
core/pack/task/operation/ResFilterCreator.fwd.hh
>
25
26
// Utility Headers
27
#include <utility/pointer/ReferenceCount.hh>
28
#include <utility/tag/Tag.hh>
29
#include <utility/vector1.fwd.hh>
30
31
// c++ headers
32
#include <string>
33
#include <map>
34
35
#include <utility/vector0.hh>
36
37
38
namespace
core {
39
namespace
pack {
40
namespace
task {
41
namespace
operation {
42
43
// singleton class
44
class
TaskOperationFactory
45
{
46
public
:
47
typedef
utility::vector1< TaskOperationOP >
TaskOperationOPs
;
48
typedef
std::map< std::string, TaskOperationCreatorOP >
TaskOperationCreatorMap
;
49
typedef
utility::tag::Tag
Tag
;
50
typedef
utility::tag::TagPtr
TagPtr
;
51
52
public
:
53
static
TaskOperationFactory
*
get_instance
();
54
void
factory_register
(
TaskOperationCreatorOP
);
55
56
///@brief add a prototype, using its default type name as the map key
57
void
add_creator
(
TaskOperationCreatorOP
);
58
bool
has_type
(
std::string
const
& )
const
;
59
///@brief pass through to child factories
60
void
add_creator
(
ResLvlTaskOperationCreatorOP
);
61
void
add_creator
(
ResFilterCreatorOP
);
62
///@brief return new TaskOperation by key lookup in task_operation_creator_map_ (new TaskOperation parses Tag if provided)
63
TaskOperationOP
newTaskOperation
(
64
std::string
const
&,
65
TagPtr
=
new
Tag
66
)
const
;
67
///@brief fills vector with new TaskOperations from nested "TASKOPERATIONS" TagPtr
68
void
newTaskOperations
(
TaskOperationOPs
&,
TagPtr
)
const
;
69
///@brief fills vector with new TaskOperations from xml-like tag file
70
void
newTaskOperations
(
TaskOperationOPs
&,
std::string
const
& )
const
;
71
72
private
:
73
// private constructor/destructor
74
TaskOperationFactory
();
75
virtual
~TaskOperationFactory
();
76
77
static
TaskOperationFactory
*
instance_
;
78
TaskOperationCreatorMap
task_operation_creator_map_
;
79
};
80
81
}
//namespace operation
82
}
//namespace task
83
}
//namespace pack
84
}
//namespace core
85
86
#endif
Generated on Sat Jun 1 2013 11:33:57 for Rosetta 3.5 by
1.8.4