summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-10-24 09:58:16 -0600
committerJosh Rahm <joshuarahm@gmail.com>2024-10-24 09:58:16 -0600
commita584a9ca11138bae15ebc1052d596af272b3fd79 (patch)
tree9d69e25e638cfdf84a2d3db2dc2709470588f478
parent977758cb8c968a9b371fdddbadf456e92107d11c (diff)
downloadfiddle-a584a9ca11138bae15ebc1052d596af272b3fd79.tar.gz
fiddle-a584a9ca11138bae15ebc1052d596af272b3fd79.tar.bz2
fiddle-a584a9ca11138bae15ebc1052d596af272b3fd79.zip
C backend now implmeents some enums
-rw-r--r--goal.fiddle4
-rw-r--r--package.yaml1
-rw-r--r--src/Language/Fiddle/Compiler/Backend/C.hs11
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