Skip to content

Commit

Permalink
Made staticVar uppercase for Python constants
Browse files Browse the repository at this point in the history
I added an extra boolean parameter to `staticVar` (disregarded by all
but the Python renderer) to say if the static variable is a variable or
a constant.  Then I used that to uppercase static constants in the
Python renderer.

The one thing I don't like about this is that it requires static
variables to be slightly dishonest about their contents: their name is
as given, while their contents are uppercase.
  • Loading branch information
B-rando1 committed Jul 18, 2024
1 parent c55c83b commit 5ab5045
Show file tree
Hide file tree
Showing 14 changed files with 94 additions and 85 deletions.
18 changes: 9 additions & 9 deletions code/drasil-code/lib/Language/Drasil/Code/Imperative/Import.hs
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ import qualified Language.Drasil.Mod as M (Class(..))
import GOOL.Drasil (Label, SFile, MSBody, MSBlock, VSType, SVariable, SValue,
MSStatement, MSParameter, SMethod, CSStateVar, SClass, NamedArgs,
Initializers, OOProg, PermanenceSym(..), bodyStatements, BlockSym(..),
TypeSym(..), VariableSym(..), OOVariableSym(..), VariableElim(..), ($->), ValueSym(..),
Literal(..), VariableValue(..), NumericExpression(..), BooleanExpression(..),
Comparison(..), ValueExpression(..), OOValueExpression(..),
objMethodCallMixedArgs, List(..), StatementSym(..), AssignStatement(..),
DeclStatement(..), IOStatement(..), StringStatement(..), ControlStatement(..),
ifNoElse, ScopeSym(..), ParameterSym(..), MethodSym(..), OOMethodSym(..),
pubDVar, privDVar, nonInitConstructor, convTypeOO, ScopeTag(..), CodeType(..),
onStateValue)
TypeSym(..), VariableSym(..), OOVariableSym(..), staticConst,
VariableElim(..), ($->), ValueSym(..), Literal(..), VariableValue(..),
NumericExpression(..), BooleanExpression(..), Comparison(..),
ValueExpression(..), OOValueExpression(..), objMethodCallMixedArgs, List(..),
StatementSym(..), AssignStatement(..), DeclStatement(..), IOStatement(..),
StringStatement(..), ControlStatement(..), ifNoElse, ScopeSym(..),
ParameterSym(..), MethodSym(..), OOMethodSym(..), pubDVar, privDVar,
nonInitConstructor, convTypeOO, ScopeTag(..), CodeType(..), onStateValue)
import qualified GOOL.Drasil as C (CodeType(List, Array))

import Prelude hiding (sin, cos, tan, log, exp)
Expand Down Expand Up @@ -100,7 +100,7 @@ variable s t = do
g <- get
let cs = codeSpec g
defFunc Var = var
defFunc Const = staticVar
defFunc Const = staticConst
if s `elem` map codeName (inputs cs)
then inputVariable (inStruct g) Var (var s t)
else if s `elem` map codeName (constants $ codeSpec g)
Expand Down
43 changes: 22 additions & 21 deletions code/drasil-gool/lib/GOOL/Drasil.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,23 @@ module GOOL.Drasil (Label, GSProgram, SFile, MSBody, MSBlock, VSType,
extObjDecNewNoParams, IOStatement(..), StringStatement(..),
FuncAppStatement(..), OOFuncAppStatement(..), CommentStatement(..),
initObserverList, addObserver, ControlStatement(..), ifNoElse, switchAsIf,
VariableSym(..), OOVariableSym(..), VariableElim(..), ($->), listOf, listVar,
ValueSym(..), Argument(..), Literal(..), MathConstant(..), VariableValue(..),
OOVariableValue, CommandLineArgs(..), NumericExpression(..),
BooleanExpression(..), Comparison(..), ValueExpression(..),
OOValueExpression(..), funcApp, funcAppNamedArgs, selfFuncApp, extFuncApp,
libFuncApp, newObj, extNewObj, libNewObj, exists, objMethodCall,
objMethodCallNamedArgs, objMethodCallMixedArgs, objMethodCallNoParams,
FunctionSym(..), ($.), selfAccess, GetSet(..), List(..), listSlice,
listIndexExists, at, ObserverPattern(..), StrategyPattern(..), ScopeSym(..),
ParameterSym(..), MethodSym(..), OOMethodSym(..), privMethod, pubMethod,
initializer, nonInitConstructor, StateVarSym(..), privDVar, pubDVar, pubSVar,
ClassSym(..), ModuleSym(..), convType, convTypeOO, ProgData(..), FileData(..),
ModData(..), ScopeTag(..), CodeType(..), GOOLState(..), lensMStoVS, headers,
sources, mainMod, initialState, onStateValue, onCodeList, unCI, unPC, unJC,
unCSC, unCPPC, unSC, pyName, pyVersion, jName, jVersion, csName, csVersion,
cppName, cppVersion, swiftName, swiftVersion
VariableSym(..), OOVariableSym(..), staticVar, staticConst, VariableElim(..),
($->), listOf, listVar, ValueSym(..), Argument(..), Literal(..),
MathConstant(..), VariableValue(..), OOVariableValue, CommandLineArgs(..),
NumericExpression(..), BooleanExpression(..), Comparison(..),
ValueExpression(..), OOValueExpression(..), funcApp, funcAppNamedArgs,
selfFuncApp, extFuncApp, libFuncApp, newObj, extNewObj, libNewObj, exists,
objMethodCall, objMethodCallNamedArgs, objMethodCallMixedArgs,
objMethodCallNoParams, FunctionSym(..), ($.), selfAccess, GetSet(..),
List(..), listSlice, listIndexExists, at, ObserverPattern(..),
StrategyPattern(..), ScopeSym(..), ParameterSym(..), MethodSym(..),
OOMethodSym(..), privMethod, pubMethod, initializer, nonInitConstructor,
StateVarSym(..), privDVar, pubDVar, pubSVar, ClassSym(..), ModuleSym(..),
convType, convTypeOO, ProgData(..), FileData(..), ModData(..), ScopeTag(..),
CodeType(..), GOOLState(..), lensMStoVS, headers, sources, mainMod,
initialState, onStateValue, onCodeList, unCI, unPC, unJC, unCSC, unCPPC, unSC,
pyName, pyVersion, jName, jVersion, csName, csVersion, cppName, cppVersion,
swiftName, swiftVersion
) where

import GOOL.Drasil.InterfaceCommon (Label, MSBody, MSBlock, VSType, SVariable,
Expand All @@ -43,11 +44,11 @@ import GOOL.Drasil.InterfaceCommon (Label, MSBody, MSBlock, VSType, SVariable,
listIndexExists, at, ScopeSym(..), ParameterSym(..), MethodSym(..), convType)
import GOOL.Drasil.InterfaceGOOL (GSProgram, SFile, FSModule, SClass,
CSStateVar, VSFunction, OOProg, ProgramSym(..), FileSym(..), ModuleSym(..),
ClassSym(..), OOMethodSym(..), OOTypeSym(..), OOVariableSym(..), ($->),
PermanenceSym(..), privMethod, pubMethod, initializer, nonInitConstructor,
StateVarSym(..), privDVar, pubDVar, pubSVar, OOVariableValue,
OOValueExpression(..), selfFuncApp, newObj, extNewObj, libNewObj,
OODeclStatement(..), objDecNewNoParams, extObjDecNewNoParams,
ClassSym(..), OOMethodSym(..), OOTypeSym(..), OOVariableSym(..), staticVar,
staticConst, ($->), PermanenceSym(..), privMethod, pubMethod, initializer,
nonInitConstructor, StateVarSym(..), privDVar, pubDVar, pubSVar,
OOVariableValue, OOValueExpression(..), selfFuncApp, newObj, extNewObj,
libNewObj, OODeclStatement(..), objDecNewNoParams, extObjDecNewNoParams,
OOFuncAppStatement(..), GetSet(..), objMethodCall, objMethodCallNamedArgs,
objMethodCallMixedArgs, objMethodCallNoParams, FunctionSym(..), ($.),
selfAccess, ObserverPattern(..), initObserverList, addObserver,
Expand Down
2 changes: 1 addition & 1 deletion code/drasil-gool/lib/GOOL/Drasil/CodeInfo.hs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ instance VariableSym CodeInfo where
arrayElem _ _ = noInfo

instance OOVariableSym CodeInfo where
staticVar _ _ = noInfo
staticVar' _ _ _ = noInfo
self = noInfo
classVar _ _ = noInfo
extClassVar _ _ = noInfo
Expand Down
15 changes: 11 additions & 4 deletions code/drasil-gool/lib/GOOL/Drasil/InterfaceGOOL.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ module GOOL.Drasil.InterfaceGOOL (
GSProgram, SFile, FSModule, SClass, VSFunction, CSStateVar,
-- Typeclasses
OOProg, ProgramSym(..), FileSym(..), ModuleSym(..), ClassSym(..),
OOTypeSym(..), OOVariableSym(..), ($->), OOValueSym, OOVariableValue,
OOValueExpression(..), selfFuncApp, newObj, extNewObj, libNewObj,
OODeclStatement(..), objDecNewNoParams, extObjDecNewNoParams,
OOTypeSym(..), OOVariableSym(..), staticVar, staticConst, ($->), OOValueSym,
OOVariableValue, OOValueExpression(..), selfFuncApp, newObj, extNewObj,
libNewObj, OODeclStatement(..), objDecNewNoParams, extObjDecNewNoParams,
OOFuncAppStatement(..), GetSet(..), InternalValueExp(..), objMethodCall,
objMethodCallNamedArgs, objMethodCallMixedArgs, objMethodCallNoParams,
OOMethodSym(..), privMethod, pubMethod, initializer, nonInitConstructor,
Expand Down Expand Up @@ -130,13 +130,20 @@ class (TypeSym r) => OOTypeSym r where
class (ValueSym r, OOTypeSym r) => OOValueSym r

class (VariableSym r, OOTypeSym r) => OOVariableSym r where
staticVar :: Label -> VSType r -> SVariable r
-- Bool: False for variable, True for constant. Required by the Python renderer.
staticVar' :: Bool -> Label -> VSType r -> SVariable r
self :: SVariable r
classVar :: VSType r -> SVariable r -> SVariable r
extClassVar :: VSType r -> SVariable r -> SVariable r
objVar :: SVariable r -> SVariable r -> SVariable r
objVarSelf :: SVariable r -> SVariable r

staticVar :: (OOVariableSym r) => Label -> VSType r -> SVariable r
staticVar = staticVar' False

staticConst :: (OOVariableSym r) => Label -> VSType r -> SVariable r
staticConst = staticVar' True

($->) :: (OOVariableSym r) => SVariable r -> SVariable r -> SVariable r
infixl 9 $->
($->) = objVar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ instance VariableSym CSharpCode where
arrayElem i = G.arrayElem (litInt i)

instance OOVariableSym CSharpCode where
staticVar = G.staticVar
staticVar' _ = G.staticVar
self = C.self
classVar = CP.classVar R.classVar
extClassVar = classVar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ instance (Pair p) => VariableSym (p CppSrcCode CppHdrCode) where
arrayElem i = pair1 (arrayElem i) (arrayElem i)

instance (Pair p) => OOVariableSym (p CppSrcCode CppHdrCode) where
staticVar n = pair1 (staticVar n) (staticVar n)
staticVar' c n = pair1 (staticVar' c n) (staticVar' c n)
self = on2StateValues pair self self
classVar = pair2 classVar classVar
extClassVar = pair2 extClassVar extClassVar
Expand Down Expand Up @@ -1163,7 +1163,7 @@ instance VariableSym CppSrcCode where
arrayElem i = G.arrayElem (litInt i)

instance OOVariableSym CppSrcCode where
staticVar = G.staticVar
staticVar' _ = G.staticVar
self = C.self
classVar c' v'= do
c <- c'
Expand Down Expand Up @@ -1862,7 +1862,7 @@ instance VariableSym CppHdrCode where
arrayElem _ _ = mkStateVar "" void empty

instance OOVariableSym CppHdrCode where
staticVar = G.staticVar
staticVar' _ = G.staticVar
self = mkStateVar "" void empty
classVar _ _ = mkStateVar "" void empty
extClassVar _ _ = mkStateVar "" void empty
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ instance VariableSym JavaCode where
arrayElem i = G.arrayElem (litInt i)

instance OOVariableSym JavaCode where
staticVar = G.staticVar
staticVar' _ = G.staticVar
self = C.self
classVar = CP.classVar R.classVar
extClassVar = classVar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ import GOOL.Drasil.LanguageRenderer (classDec, dot, ifLabel, elseLabel,
import qualified GOOL.Drasil.LanguageRenderer as R (sqrt, fabs, log10,
log, exp, sin, cos, tan, asin, acos, atan, floor, ceil, multiStmt, body,
classVar, listSetFunc, castObj, dynamic, break, continue, addComments,
commentedMod, commentedItem)
commentedMod, commentedItem, var)
import GOOL.Drasil.LanguageRenderer.Constructors (mkStmtNoEnd, mkStateVal,
mkVal, mkStateVar, VSOp, unOpPrec, powerPrec, multPrec, andPrec, orPrec,
unExpr, unExpr', typeUnExpr, binExpr, typeBinExpr)
unExpr, unExpr', typeUnExpr, binExpr, typeBinExpr, mkStaticVar)
import qualified GOOL.Drasil.LanguageRenderer.LanguagePolymorphic as G (
multiBody, block, multiBlock, listInnerType, obj, negateOp, csc, sec, cot,
equalOp, notEqualOp, greaterOp, greaterEqualOp, lessOp, lessEqualOp, plusOp,
Expand Down Expand Up @@ -262,7 +262,8 @@ instance VariableSym PythonCode where
arrayElem i = G.arrayElem (litInt i)

instance OOVariableSym PythonCode where
staticVar = G.staticVar
staticVar' c n t = if c then mkStaticVar n t (R.var (map toUpper n))
else G.staticVar n t
self = zoom lensVStoMS getClassName >>= (\l -> mkStateVar pySelf (obj l) (text pySelf))
classVar = CP.classVar R.classVar
extClassVar c v = join $ on2StateValues (\t cm -> maybe id ((>>) . modify .
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ instance VariableSym SwiftCode where
arrayElem i = G.arrayElem (litInt i)

instance OOVariableSym SwiftCode where
staticVar = G.staticVar
staticVar' _ = G.staticVar
self = CP.self
classVar = CP.classVar R.classVar
extClassVar = classVar
Expand Down
2 changes: 1 addition & 1 deletion code/stable/pdcontroller/src/python/Calculations.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions code/stable/pdcontroller/src/python/Constants.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 13 additions & 13 deletions code/stable/swhsnopcm/src/python/Constants.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 5ab5045

Please sign in to comment.