1 /************************************************************************ 2 ************************************************************************ 3 FAUST compiler 4 Copyright (C) 2003-2018 GRAME, Centre National de Creation Musicale 5 --------------------------------------------------------------------- 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 ************************************************************************ 20 ************************************************************************/ 21 22 #ifndef _JAVA_CODE_CONTAINER_H 23 #define _JAVA_CODE_CONTAINER_H 24 25 #include "code_container.hh" 26 #include "dsp_factory.hh" 27 #include "java_instructions.hh" 28 29 using namespace std; 30 31 class JAVACodeContainer : public virtual CodeContainer { 32 protected: 33 JAVAInstVisitor fCodeProducer; 34 std::ostream* fOut; 35 string fSuperKlassName; 36 37 public: JAVACodeContainer(const string & name,const string & super,int numInputs,int numOutputs,std::ostream * out)38 JAVACodeContainer(const string& name, const string& super, int numInputs, int numOutputs, std::ostream* out) 39 : fCodeProducer(out), fOut(out), fSuperKlassName(super) 40 { 41 initialize(numInputs, numOutputs); 42 fKlassName = name; 43 } ~JAVACodeContainer()44 virtual ~JAVACodeContainer() {} 45 46 virtual void produceClass(); 47 virtual void generateCompute(int tab) = 0; 48 void produceInternal(); 49 50 virtual dsp_factory_base* produceFactory(); 51 printHeader()52 virtual void printHeader() { CodeContainer::printHeader(*fOut); } 53 54 CodeContainer* createScalarContainer(const string& name, int sub_container_type); 55 56 static CodeContainer* createContainer(const string& name, const string& super, int numInputs, int numOutputs, 57 ostream* dst = new stringstream()); 58 }; 59 60 class JAVAScalarCodeContainer : public JAVACodeContainer { 61 protected: 62 public: 63 JAVAScalarCodeContainer(const string& name, const string& super, int numInputs, int numOutputs, std::ostream* out, 64 int sub_container_type); 65 virtual ~JAVAScalarCodeContainer(); 66 67 void generateCompute(int tab); 68 }; 69 70 #endif 71