INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

NONFRAMEWORK CODE
Driver Interfaces
Drivers
Libraries
Utilities

FRAMEWORK CODE
Interfaces
Components
Libraries
Utilities

Full Software Listings

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

componentdefinition.h

00001 /*
00002  * Orca-Robotics Project: Components for robotics 
00003  *               http://orca-robotics.sf.net/
00004  * Copyright (c) 2004-2009 Alex Brooks, Alexei Makarenko, Tobias Kaupp
00005  *
00006  * This copy of Orca is licensed to you under the terms described in
00007  * the LICENSE file included in this distribution.
00008  *
00009  */
00010  
00011 #ifndef ORCADEF_COMPONENT_DEFINITION_H
00012 #define ORCADEF_COMPONENT_DEFINITION_H
00013 
00014 #include <string>
00015 #include <vector>
00016 
00017 #include <orca/common.h>
00018 #include <orca/ocm.h>
00019 
00020 namespace orcadef
00021 {
00022 
00023 //
00024 // Notes:
00025 //
00026 // - 'Defaults' are the default values to use in the config files.
00027 // - Optional Definition fields can be left empty.  They'll be filled
00028 //   out with reasonable values when .cfg files are generated.
00029 //
00030 
00031 
00032 //
00033 // Component Definition: these bits are static for a given component
00034 //
00036 
00038 class InterfaceDef
00039 {
00040 public:
00042     std::string tag;
00044     std::string type;
00045 };
00046 
00048 class ProvidedDef : public InterfaceDef
00049 {
00050 public:
00052     std::string name;
00053 };
00054 
00056 class RequiredDef : public InterfaceDef
00057 {
00058 public:
00060     std::string proxy;
00061 //     orca::FQInterfaceName fqname;
00062 };
00063 
00065 struct ConfigDef
00066 {
00068     std::string tag;
00070     std::string value;
00072     std::string comment;
00074     std::string type;
00077     bool isExternal;
00078 };
00079 
00085 struct ComponentDef
00086 {
00088     std::string              filename;
00089 
00091     std::string              tag;
00093     std::string              endpoints;
00095     bool isSpecialEndpoints;
00097     std::vector<std::string> comments;
00098 
00100     std::vector<ProvidedDef> provided;
00102     std::vector<RequiredDef> required;
00104     std::vector<ConfigDef>   configs;
00106     std::vector<ConfigDef> externalConfigs;
00107 };
00108 
00109 //
00110 // Component Configuration: these bits are user-edittable.
00111 //
00113 
00115 class InterfaceCfg
00116 {
00117 public:
00119     std::string tag;
00120 };
00121 
00123 class ProvidedCfg : public InterfaceCfg
00124 {
00125 public:
00127     std::string name;
00128 };
00129 
00131 class RequiredCfg : public InterfaceCfg
00132 {
00133 public:
00135     std::string proxy;
00136 //     orca::FQInterfaceName fqname;
00137 };
00138 
00140 struct ConfigCfg
00141 {
00143     std::string tag;
00145     std::string value;
00146 };
00147 
00153 struct ComponentCfg
00154 {
00156     orca::FQComponentName  fqname;
00158     orca::FQExecutableName fqexecutable;
00160     std::string endpoints;
00162     std::vector<ProvidedCfg> provided;
00164     std::vector<RequiredCfg> required;
00166     std::vector<ConfigCfg> configs;
00168     std::vector<ConfigCfg> externalConfigs;
00169 };
00170 
00175 ComponentCfg toCfg( const ComponentDef & def );
00176 
00181 const std::string toCfgText( const ComponentDef & def );
00182 
00186 const std::string toCfgTextWithHeaders( const ComponentDef &def, const std::vector<std::string> & headers );
00187 
00192 const std::string toXmlText( const ComponentDef & def, bool withTemplate=false );
00193 
00198 const std::string toXmlTemplateText( const ComponentDef & def );
00199 
00205 ComponentDef invertDef( const ComponentDef & def, const std::string & invTag );
00206 
00211 const std::string toDefText( const ComponentDef & def );
00212 
00213 // Debugging functions: see the entire contents of the ComponentDef.
00214 const std::string toString( const ProvidedDef &def );
00215 const std::string toString( const RequiredDef &def );
00216 const std::string toString( const ConfigDef &def );
00217 const std::string toString( const ComponentDef &def );
00218 
00219 // Debugging functions: see the entire contents of the ComponentCfg.
00220 const std::string toString( const ProvidedCfg &c );
00221 const std::string toString( const RequiredCfg &c );
00222 const std::string toString( const ConfigCfg &c );
00223 const std::string toString( const ComponentCfg &c );
00224 
00225 } // namespace
00226 
00227 #endif
 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5