/* * * ProLinga-Run * * Copyright (C) 2002-2008 Xobas Software. * All rights reserved. * * This file is part of ProLinga-Run. * * ProLinga-Run 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 3 of the License, or * (at your option) any later version. * * ProLinga-Run 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 ProLinga-Run. If not, see . * * More information is available at the following addresses: * * Website : http://www.prolinga.org * * Email : prolinga-list@prolinga.org * * */ #ifndef __LOGIC_HPP #define __LOGIC_HPP class Parameter { public: Parameter(); ~Parameter(); Parameter *createList(); char *getValue(Parameter *paramPtr, const int entry); void putValue(Parameter **paramPtr, const int entry, const char *value); int countList(Parameter *paramPtr) const; void deleteList(Parameter **paramPtr); void printList(Parameter *paramPtr) const; private: int paramEntry; char *paramValue; Parameter *nextPtr; }; typedef Parameter *ParameterPtr; class ParameterStack { public: ParameterStack(); ~ParameterStack(); void push(ParameterStack **topPtr, Parameter *paramPtr); void pop(ParameterStack **topPtr); void deleteStack(ParameterStack **topPtr); Parameter *getValue(ParameterStack *topPtr); private: Parameter *paramListPtr; ParameterStack *nextPtr; }; typedef ParameterStack *ParameterStackPtr; class DataReturn { public: DataReturn(); ~DataReturn(); DataReturn *createList(); char *getDataRefName(DataReturn *dataPtr, const int entry); char *getDataRefValue(DataReturn *dataPtr, const int entry); void putDataRefName(DataReturn **dataPtr, const int entry, const char *value); void putDataRefValue(DataReturn **dataPtr, const int entry, const char *value); int countList(DataReturn *dataPtr) const; void deleteList(DataReturn **dataPtr); void printList(DataReturn *dataPtr) const; private: int dataEntry; char *dataRefName; char *dataRefValue; DataReturn *nextPtr; }; typedef DataReturn *DataReturnPtr; class DataReturnStack { public: DataReturnStack(); ~DataReturnStack(); void push(DataReturnStack **topPtr, DataReturn *dataPtr); void pop(DataReturnStack **topPtr); void deleteStack(DataReturnStack **topPtr); DataReturn *getValue(DataReturnStack *topPtr); private: DataReturn *dataListPtr; DataReturnStack *nextPtr; }; typedef DataReturnStack *DataReturnStackPtr; /* For count stack */ class ForCountStack { public: ForCountStack(); ~ForCountStack(); void push(ForCountStack **topPtr, char *dataref, int count, int end, int step, char *dmName); void pop(ForCountStack **topPtr); char *getCountDataRef(ForCountStack *topPtr); int getCount(ForCountStack *topPtr); int getEndValue(ForCountStack *topPtr); int getStep(ForCountStack *topPtr); char *getDataModel(ForCountStack *topPtr); void putCountDataRef(ForCountStack **topPtr, char *dataref); void putCount(ForCountStack **topPtr, int count); void putEndValue(ForCountStack **topPtr, int end); void putStep(ForCountStack **topPtr, int step); void putDataModel(ForCountStack **topPtr, char *dmName); private: char *countDataRef; int forCount; int forStep; int forEndValue; char *foreachDataModel; ForCountStack *nextPtr; }; typedef ForCountStack *ForCountStackPtr; class ForBreakStack { public: ForBreakStack(); ~ForBreakStack(); void push(ForBreakStack **topPtr, int sequence); int pop(ForBreakStack **topPtr); int getSequenceNo(ForBreakStack *topPtr); private: int sequenceNo; ForBreakStack *nextPtr; }; typedef ForBreakStack *ForBreakStackPtr; #endif /* __LOGIC_HPP */