Skip to content

Commit

Permalink
Rename writeFunctionSignature modes
Browse files Browse the repository at this point in the history
  • Loading branch information
nigeltao committed Jan 6, 2020
1 parent 9e03357 commit 0c63d6e
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 22 deletions.
8 changes: 4 additions & 4 deletions internal/cgen/cgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ func insertInterfaceDeclarations(buf *buffer) error {
buf.printf("typedef struct wuffs_base__%s__struct wuffs_base__%s;\n\n", n, n)

for _, f := range builtInInterfaceMethods[qid] {
if err := g.writeFuncSignature(buf, f, cppNone); err != nil {
if err := g.writeFuncSignature(buf, f, wfsCDecl); err != nil {
return err
}
buf.writes(";\n\n")
Expand All @@ -361,7 +361,7 @@ func insertInterfaceDeclarations(buf *buffer) error {

buf.writes("\n#ifdef __cplusplus\n\n")
for _, f := range builtInInterfaceMethods[qid] {
if err := g.writeFuncSignature(buf, f, cppInsideStruct); err != nil {
if err := g.writeFuncSignature(buf, f, wfsCppDecl); err != nil {
return err
}
buf.writes("{ return ")
Expand Down Expand Up @@ -405,7 +405,7 @@ func insertInterfaceDefinitions(buf *buffer) error {
returnsStatus := f.Effect().Coroutine() ||
((f.Out() != nil) && f.Out().IsStatus())

if err := g.writeFuncSignature(buf, f, cppNone); err != nil {
if err := g.writeFuncSignature(buf, f, wfsCDecl); err != nil {
return err
}
buf.writes("{\n")
Expand Down Expand Up @@ -1045,7 +1045,7 @@ func (g *gen) writeCppMethods(b *buffer, n *a.Struct) error {
continue
}

if err := g.writeFuncSignature(b, f, cppInsideStruct); err != nil {
if err := g.writeFuncSignature(b, f, wfsCppDecl); err != nil {
return err
}
b.writes("{ return ")
Expand Down
30 changes: 12 additions & 18 deletions internal/cgen/func.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,14 @@ func (g *gen) funcCName(n *a.Func) string {
return g.pkgPrefix + n.FuncName().Str(g.tm)
}

// C++ related function signature constants.
// writeFunctionSignature modes.
const (
cppNone = 0 // Not C++, just plain C.
cppInsideStruct = 1
cppOutsideStruct = 2
wfsCDecl = 0
wfsCppDecl = 1
)

func (g *gen) writeFuncSignature(b *buffer, n *a.Func, cpp uint32) error {
if cpp != cppNone {
func (g *gen) writeFuncSignature(b *buffer, n *a.Func, wfs uint32) error {
if wfs != wfsCDecl {
b.writes("inline ")
} else if n.Public() {
b.writes("WUFFS_BASE__MAYBE_STATIC ")
Expand All @@ -102,21 +101,16 @@ func (g *gen) writeFuncSignature(b *buffer, n *a.Func, cpp uint32) error {
// start of a line.
b.writes("//\n")

switch cpp {
case cppNone:
switch wfs {
case wfsCDecl:
b.writes(g.funcCName(n))
case cppInsideStruct:
b.writes(n.FuncName().Str(g.tm))
case cppOutsideStruct:
b.writes(g.pkgPrefix)
b.writes(n.Receiver().Str(g.tm))
b.writes("::")
case wfsCppDecl:
b.writes(n.FuncName().Str(g.tm))
}

b.writeb('(')
comma := false
if cpp == cppNone {
if wfs == wfsCDecl {
if r := n.Receiver(); !r.IsZero() {
if n.Effect().Pure() {
b.writes("const ")
Expand All @@ -138,14 +132,14 @@ func (g *gen) writeFuncSignature(b *buffer, n *a.Func, cpp uint32) error {
}

b.printf(")")
if cpp != cppNone && !n.Receiver().IsZero() && n.Effect().Pure() {
if wfs != wfsCDecl && !n.Receiver().IsZero() && n.Effect().Pure() {
b.writes(" const ")
}
return nil
}

func (g *gen) writeFuncPrototype(b *buffer, n *a.Func) error {
if err := g.writeFuncSignature(b, n, cppNone); err != nil {
if err := g.writeFuncSignature(b, n, wfsCDecl); err != nil {
return err
}
b.writes(";\n\n")
Expand All @@ -156,7 +150,7 @@ func (g *gen) writeFuncImpl(b *buffer, n *a.Func) error {
k := g.funks[n.QQID()]

b.printf("// -------- func %s.%s\n\n", g.pkgName, n.QQID().Str(g.tm))
if err := g.writeFuncSignature(b, n, cppNone); err != nil {
if err := g.writeFuncSignature(b, n, wfsCDecl); err != nil {
return err
}
b.writes("{\n")
Expand Down

0 comments on commit 0c63d6e

Please sign in to comment.