abstractprocessor.h

00001 /***************************************************************************
00002  *   Copyright (C) 2003 by Gav Wood                                        *
00003  *   gav@cs.york.ac.uk                                                     *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU Library General Public License as       *
00007  *   published by the Free Software Foundation; either version 2 of the    *
00008  *   License, or (at your option) any later version.                       *
00009  ***************************************************************************/
00010 
00011 #ifndef _RGEDDEI_ABSTRACTPROCESSOR_H
00012 #define _RGEDDEI_ABSTRACTPROCESSOR_H
00013 
00014 #ifdef __GEDDEI_BUILD
00015 #include "processor.h"
00016 #include "abstractprocessorport.h"
00017 #else
00018 #include <geddei/processor.h>
00019 #include <rgeddei/abstractprocessorport.h>
00020 #endif
00021 using namespace Geddei;
00022 using namespace rGeddei;
00023 
00024 namespace Geddei
00025 {
00026  class SubProcessor;
00027 }
00028 
00029 namespace rGeddei
00030 {
00031 
00032 class LocalProcessor;
00033 class RemoteProcessor;
00034 class LocalDomProcessor;
00035 class RemoteDomProcessor;
00036 class LocalSession;
00037 class RemoteSession;
00038 class AbstractProcessor;
00039 class AbstractProcessorGroup;
00040 
00060 class AbstractProcessor
00061 {
00062  AbstractProcessorGroup *theGroup;
00063 
00064 protected:
00073  virtual void doInit(const QString &name, AbstractProcessorGroup *g, const Properties &p) = 0;
00074 
00079  AbstractProcessor() : theGroup(0) {}
00080 
00081 public:
00094  void setGroup(AbstractProcessorGroup &g);
00095 
00108  void setNoGroup();
00109 
00118  virtual const bool go() = 0;
00119 
00132  virtual const Processor::ErrorType waitUntilGoing(int *errorData = 0) = 0;
00133 
00140  virtual void waitUntilDone() = 0;
00141 
00148  virtual void stop() = 0;
00149 
00156  virtual void reset() = 0;
00157 
00166  virtual void split(const uint sourceIndex) = 0;
00167 
00176  virtual void share(const uint sourceIndex) = 0;
00177 
00199  virtual const bool connect(const uint sourceIndex, const RemoteProcessor *sink, const uint sinkIndex, const uint bufferSize = 1) = 0;
00200 
00222  virtual const bool connect(const uint sourceIndex, const LocalProcessor *sink, const uint sinkIndex, const uint bufferSize = 1) = 0;
00223 
00233  virtual void disconnect(const uint sourceIndex) = 0;
00234 
00240  virtual void disconnectAll() = 0;
00241 
00250  virtual const QString name() const = 0;
00251 
00261  void init(const QString &name, AbstractProcessorGroup &g, const Properties &p = Properties()) { doInit(name, &g, p); }
00262 
00276  void init(const QString &name = "", const Properties &p = Properties()) { doInit(name, 0, p); }
00277 
00288  AbstractProcessorPort operator[](const uint port) { return AbstractProcessorPort(this, port); }
00289 
00320  static LocalProcessor *create(LocalSession &session, Processor &processor);
00321  
00341  static LocalProcessor *create(LocalSession &session, Processor *processor);
00342  
00353  static LocalProcessor *create(LocalSession &session, const QString &type);
00354  
00365  static RemoteProcessor *create(RemoteSession &session, const QString &type);
00366  
00367  virtual ~AbstractProcessor() {} 
00368 };
00369 
00370 };
00371 
00372 #endif

Generated on Fri Nov 10 21:58:25 2006 for Exscalibar by  doxygen 1.5.1