/* * RegExpOptimize.cpp * * Created on: 20. 1. 2014 * Author: Tomas Pecka */ #include "RegExpOptimize.h" #include "../properties/RegExpEpsilon.h" #include <exception/CommonException.h> #include <cassert> #include <iostream> #include <iostream> namespace regexp { namespace simplify { regexp::RegExp RegExpOptimize::optimize(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } FormalRegExp < > RegExpOptimize::optimize( const FormalRegExp < > & regexp ) { return regexp::FormalRegExp < > ( RegExpOptimize::optimize ( regexp.getRegExp ( ) ) ); } auto RegExpOptimizeFormalRegExp = RegExpOptimize::RegistratorWrapper<FormalRegExp < >, FormalRegExp < > >(RegExpOptimize::optimize); FormalRegExpStructure < alphabet::Symbol > RegExpOptimize::optimize( const FormalRegExpStructure < alphabet::Symbol > & regexp ) { FormalRegExpElement < alphabet::Symbol > * optimized = optimizeInner( regexp.getStructure ( ) ); return regexp::FormalRegExpStructure < alphabet::Symbol > ( std::manage_move ( optimized ) ); } UnboundedRegExp < > RegExpOptimize::optimize( const UnboundedRegExp < > & regexp ) { return regexp::UnboundedRegExp < > ( RegExpOptimize::optimize ( regexp.getRegExp ( ) ) ); } auto RegExpOptimizeUnboundedRegExp = RegExpOptimize::RegistratorWrapper<UnboundedRegExp < >, UnboundedRegExp < > >(RegExpOptimize::optimize); UnboundedRegExpStructure < alphabet::Symbol > RegExpOptimize::optimize( const UnboundedRegExpStructure < alphabet::Symbol > & regexp ) { UnboundedRegExpElement < alphabet::Symbol > * optimized = optimizeInner( regexp.getStructure( ) ); return regexp::UnboundedRegExpStructure < alphabet::Symbol > ( std::manage_move ( optimized ) ); } } /* namespace regexp */ } /* namespace simplify */ #include "RegExpOptimizeUnboundedPart.cxx" #include "RegExpOptimizeFormalPart.cxx"