diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2024-10-24 09:58:16 -0600 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2024-10-24 09:58:16 -0600 |
commit | a584a9ca11138bae15ebc1052d596af272b3fd79 (patch) | |
tree | 9d69e25e638cfdf84a2d3db2dc2709470588f478 | |
parent | 977758cb8c968a9b371fdddbadf456e92107d11c (diff) | |
download | fiddle-a584a9ca11138bae15ebc1052d596af272b3fd79.tar.gz fiddle-a584a9ca11138bae15ebc1052d596af272b3fd79.tar.bz2 fiddle-a584a9ca11138bae15ebc1052d596af272b3fd79.zip |
C backend now implmeents some enums
-rw-r--r-- | goal.fiddle | 4 | ||||
-rw-r--r-- | package.yaml | 1 | ||||
-rw-r--r-- | src/Language/Fiddle/Compiler/Backend/C.hs | 11 |
3 files changed, 8 insertions, 8 deletions
diff --git a/goal.fiddle b/goal.fiddle index ded2c42..b2abca7 100644 --- a/goal.fiddle +++ b/goal.fiddle @@ -8,7 +8,7 @@ import "./types.fdl"; [[ cpp: namespace = "stm32l432::gpio" ]] [[ rust: package = "Stm32l432.Gpio" ]] [[ zig: package = "stm32l432.gpio" ]] -[[ c: prefix = "stm32l432_gpio_" ]] +[[ c: unqualified ]] package stm32l4.gpio { location gpio_a_base = 0x4800_0000; location gpio_b_base = 0x4800_0400; @@ -19,6 +19,7 @@ package stm32l4.gpio { /** * Structure of the GPIO port on an stm32l432 */ + [[ c: unqualified ]] type gpio_t : struct { assert_pos(0); @@ -55,6 +56,7 @@ package stm32l4.gpio { * The GPIO pin is capable of sinking to ground (for LOW) or providing * power (for HIGH). */ + [[ c: unqualified ]] push_pull = 0, /** diff --git a/package.yaml b/package.yaml index 6d5825c..3940bd2 100644 --- a/package.yaml +++ b/package.yaml @@ -59,6 +59,7 @@ ghc-options: - -XTypeOperators - -XUndecidableInstances - -XViewPatterns + - -O2 dependencies: - base >= 4.0.0 diff --git a/src/Language/Fiddle/Compiler/Backend/C.hs b/src/Language/Fiddle/Compiler/Backend/C.hs index a10839a..71344c5 100644 --- a/src/Language/Fiddle/Compiler/Backend/C.hs +++ b/src/Language/Fiddle/Compiler/Backend/C.hs @@ -9,23 +9,18 @@ module Language.Fiddle.Compiler.Backend.C (cBackend) where import Control.Arrow import Control.Monad (unless) import Control.Monad.RWS -import Control.Monad.State -import Control.Monad.Trans.Writer (Writer, execWriter) import qualified Data.Bits import Data.Char (isSpace) import Data.Data (Typeable, cast) -import Data.Foldable (forM_, toList) +import Data.Foldable (forM_) import Data.Kind (Type) -import qualified Data.List.NonEmpty as NonEmpty import Data.Map (Map) import qualified Data.Map as Map -import Data.Maybe (fromMaybe, mapMaybe) +import Data.Maybe (mapMaybe) import Data.Set (Set) import qualified Data.Set as Set -import Data.String (IsString) import Data.Text (Text) import qualified Data.Text as Text -import Data.Word import Language.Fiddle.Ast import Language.Fiddle.Compiler.Backend import Language.Fiddle.Compiler.Backend.Internal @@ -46,6 +41,8 @@ data CBackendFlags = CBackendFlags cHeaderOut :: FilePath } +-- data StructureInterface = Leaf String String + type StructName = Text -- | Header fragment. The top. Starts which include guards and has include |