Fawkes API Fawkes Development Version
factory.h
1
2/***************************************************************************
3 * factory.h - Camera factory
4 *
5 * Created: Wed Apr 11 14:40:22 2007
6 * Copyright 2005-2007 Tim Niemueller [www.niemueller.de]
7 *
8 ****************************************************************************/
9
10/* This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version. A runtime exception applies to
14 * this software (see LICENSE.GPL_WRE file mentioned below for details).
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Library General Public License for more details.
20 *
21 * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22 */
23
24#ifndef _FIREVISION_CAMS_FACTORY_H_
25#define _FIREVISION_CAMS_FACTORY_H_
26
27#include <core/exception.h>
28#include <core/exceptions/software.h>
29#include <fvcams/cam_exceptions.h>
30#include <fvcams/camera.h>
31
32#include <cstddef>
33
34namespace firevision {
35
36class CameraArgumentParser;
37
39{
40public:
41 static Camera *instance(const char *as);
42 static Camera *instance(const CameraArgumentParser *cap);
43
44 /** Get typed instance of camera.
45 * Creates a new instance and converts it to the requested type. If the type
46 * does not match the requested camera an exception is thrown.
47 * @param as camera argument string
48 * @return typed camera instance
49 * @exception TypeMismatchException thrown, if requested camera does not match
50 * requested type.
51 */
52 template <class C>
53 static C *instance(const char *as);
54};
55
56template <class C>
57C *
59{
61 C * tc = dynamic_cast<C *>(c);
62 if (tc == NULL) {
63 throw fawkes::TypeMismatchException("Returned camera is not of expected type");
64 }
65 return tc;
66}
67
68} // end namespace firevision
69
70#endif
Camera argument parser.
Definition: camargp.h:36
Camera factory.
Definition: factory.h:39
static Camera * instance(const char *as)
Get camera instance.
Definition: factory.cpp:228
Camera interface for image aquiring devices in FireVision.
Definition: camera.h:33