📄 algorithm.hpp
字号:
/* Context : Fuzzy Clustering Algorithms Author : Frank Hoeppner, see also AUTHORS file Description : header of function module algorithm History : see source file Comment : This file was generated automatically. DO NOT EDIT. Copyright : Copyright (C) 1999-2000 Frank Hoeppner This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*//* The University of Applied Sciences Oldenburg/Ostfriesland/Wilhelmshaven hereby disclaims all copyright interests in the program package `fc' (tool package for fuzzy cluster analysis) written by Frank Hoeppner. Prof. Haass, President of Vice, 2000-Mar-10*/#ifndef algorithm_HEADER#define algorithm_HEADER/* configuration include */#ifdef HAVE_CONFIG_H/*//FILETREE_IFDEF HAVE_CONFIG_H*/#include "config.h"/*//FILETREE_ENDIF*/#endif/* necessary includes */#include "trace.hpp"#include "Analysis.hpp"//#define INLINE inline/* global types and constants *//* data interface *//* Algorithm interface */template <class IN>class Algorithm { public: typedef IN input_type; public: virtual ~Algorithm(); virtual void operator()(IN&) = 0; };template <class IN>class OnePassAlgorithm : public Algorithm<IN> { public: virtual void operator()(IN&) = 0; // required. by egcs virtual void operator()(IN&,typename IN::opt_type&) = 0; virtual void operator()(IN&,typename IN::data_type&) = 0; virtual void operator()(IN&,typename IN::prot_type&) = 0; virtual void operator()(IN&,typename IN::link_type&) = 0; private: virtual void reset(IN&) = 0; };template <class IN>class IterateAlgorithm : public Algorithm<IN> { public: IterateAlgorithm(); virtual void operator()(IN&) = 0; // required by egcs virtual void operator()(const typename IN::data_type&,int,const typename IN::data_type* p=NULL, const typename IN::data_type* f=NULL) = 0; virtual void operator()(const typename IN::prot_type&,int) = 0; };template <class IN>class NoOperation : public OnePassAlgorithm<IN> { public: virtual void operator()(IN&) {} virtual void operator()(IN&,typename IN::opt_type&) {} virtual void operator()(IN&,typename IN::data_type&) {} virtual void operator()(IN&,typename IN::prot_type&) {} virtual void operator()(IN&,typename IN::link_type&) {} private: virtual void reset(IN&) {} };template <class IN>class NoOperation2 : public Algorithm<IN> { public: virtual void operator()(IN&) {} };/* inline implementation */template <class ALGORITHM,class INPUT>void run(ALGORITHM* ap_alg,INPUT& a_input) { (*ap_alg)(a_input); delete ap_alg; }inline NoOperation<basic_analysis_type>* basic_nop() { return new NoOperation<basic_analysis_type>(); }inline NoOperation<tree_analysis_type>*tree_nop() { return new NoOperation<tree_analysis_type>(); }template <class IN>inline NoOperation<IN>* nop(IN&) { return new NoOperation<IN>(); }template <class ALGORITHM,class ANALYSIS> inline void call_successor ( ALGORITHM* ap_algorithm, ANALYSIS& a_analysis, char_cc ap_history ) { string history_backup(a_analysis.option().history()); a_analysis.option().history() += '.'; a_analysis.option().history() += ap_history; (*ap_algorithm)(a_analysis); a_analysis.option().history() = history_backup; }#endif /* algorithm_HEADER */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -