Added permissions to analyzed sections
This commit is contained in:
parent
07540e0abc
commit
e2947eab8c
@ -187,7 +187,7 @@ func (analyzer *AnalysisOperation) resolvePrimitive (
|
||||
case "U16": section = &PrimitiveU16
|
||||
case "U32": section = &PrimitiveU32
|
||||
case "U64": section = &PrimitiveU64
|
||||
case "Objt": section = &PrimitiveObjt
|
||||
case "Obj": section = &PrimitiveObj
|
||||
case "Face": section = &PrimitiveFace
|
||||
case "Func": section = &PrimitiveFunc
|
||||
case "String": section = &BuiltInString
|
||||
|
@ -12,7 +12,7 @@ var PrimitiveU8 = createPrimitive("U8", Type {})
|
||||
var PrimitiveU16 = createPrimitive("U16", Type {})
|
||||
var PrimitiveU32 = createPrimitive("U32", Type {})
|
||||
var PrimitiveU64 = createPrimitive("U64", Type {})
|
||||
var PrimitiveObjt = createPrimitive("Objt", Type {})
|
||||
var PrimitiveObj = createPrimitive("Obj", Type {})
|
||||
var PrimitiveFace = createPrimitive("Face", Type {})
|
||||
var PrimitiveFunc = createPrimitive("Func", Type {})
|
||||
|
||||
|
@ -3,6 +3,7 @@ package analyzer
|
||||
import "os"
|
||||
import "sort"
|
||||
import "path/filepath"
|
||||
import "git.tebibyte.media/arf/arf/types"
|
||||
|
||||
// locator uniquely identifies a section in the section table.
|
||||
type locator struct {
|
||||
@ -77,6 +78,7 @@ type Section interface {
|
||||
Complete () (complete bool)
|
||||
ModulePath () (path string)
|
||||
ModuleName () (path string)
|
||||
Permission () (permission types.Permission)
|
||||
locator () (where locator)
|
||||
|
||||
// Must be implemented by each individual section
|
||||
@ -85,8 +87,9 @@ type Section interface {
|
||||
|
||||
// sectionBase is a struct that all sections must embed.
|
||||
type sectionBase struct {
|
||||
where locator
|
||||
complete bool
|
||||
where locator
|
||||
complete bool
|
||||
permission types.Permission
|
||||
}
|
||||
|
||||
// Name returns the name of the section.
|
||||
@ -113,6 +116,13 @@ func (section sectionBase) Complete () (complete bool) {
|
||||
return
|
||||
}
|
||||
|
||||
// Permission returns the permission of the section.
|
||||
func (section sectionBase) Permission () (permission types.Permission) {
|
||||
permission = section.permission
|
||||
return
|
||||
}
|
||||
|
||||
// locator returns the module path and name of the section.
|
||||
func (section sectionBase) locator () (where locator) {
|
||||
where = section.where
|
||||
return
|
||||
|
@ -41,7 +41,10 @@ func (member ObjectMember) ToString (indent int) (output string) {
|
||||
|
||||
// ToString returns all data stored within the type section, in string form.
|
||||
func (section TypeSection) ToString (indent int) (output string) {
|
||||
output += doIndent(indent, "typeSection ", section.where.ToString(), "\n")
|
||||
output += doIndent(indent, "typeSection ")
|
||||
output += section.permission.ToString() + " "
|
||||
output += section.where.ToString()
|
||||
output += "\n"
|
||||
output += section.what.ToString(indent + 1)
|
||||
if section.argument != nil {
|
||||
output += section.argument.ToString(indent + 1)
|
||||
@ -68,6 +71,8 @@ func (analyzer AnalysisOperation) analyzeTypeSection () (
|
||||
infoerr.ErrorKindError)
|
||||
}
|
||||
|
||||
outputSection.permission = inputSection.Permission()
|
||||
|
||||
outputSection.what, err = analyzer.analyzeType(inputSection.Type())
|
||||
if err != nil { return }
|
||||
|
||||
|
Reference in New Issue
Block a user