mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 00:12:26 -06:00 
			
		
		
		
	This allows for building GoToSocial with [SQLite transpiled to WASM](https://github.com/ncruces/go-sqlite3) and accessed through [Wazero](https://wazero.io/).
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package wasm
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
// SectionElementCount returns the count of elements in a given section ID
 | 
						|
//
 | 
						|
// For example...
 | 
						|
// * SectionIDType returns the count of FunctionType
 | 
						|
// * SectionIDCustom returns the count of CustomSections plus one if NameSection is present
 | 
						|
// * SectionIDHostFunction returns the count of HostFunctionSection
 | 
						|
// * SectionIDExport returns the count of unique export names
 | 
						|
func (m *Module) SectionElementCount(sectionID SectionID) uint32 { // element as in vector elements!
 | 
						|
	switch sectionID {
 | 
						|
	case SectionIDCustom:
 | 
						|
		numCustomSections := uint32(len(m.CustomSections))
 | 
						|
		if m.NameSection != nil {
 | 
						|
			numCustomSections++
 | 
						|
		}
 | 
						|
		return numCustomSections
 | 
						|
	case SectionIDType:
 | 
						|
		return uint32(len(m.TypeSection))
 | 
						|
	case SectionIDImport:
 | 
						|
		return uint32(len(m.ImportSection))
 | 
						|
	case SectionIDFunction:
 | 
						|
		return uint32(len(m.FunctionSection))
 | 
						|
	case SectionIDTable:
 | 
						|
		return uint32(len(m.TableSection))
 | 
						|
	case SectionIDMemory:
 | 
						|
		if m.MemorySection != nil {
 | 
						|
			return 1
 | 
						|
		}
 | 
						|
		return 0
 | 
						|
	case SectionIDGlobal:
 | 
						|
		return uint32(len(m.GlobalSection))
 | 
						|
	case SectionIDExport:
 | 
						|
		return uint32(len(m.ExportSection))
 | 
						|
	case SectionIDStart:
 | 
						|
		if m.StartSection != nil {
 | 
						|
			return 1
 | 
						|
		}
 | 
						|
		return 0
 | 
						|
	case SectionIDElement:
 | 
						|
		return uint32(len(m.ElementSection))
 | 
						|
	case SectionIDCode:
 | 
						|
		return uint32(len(m.CodeSection))
 | 
						|
	case SectionIDData:
 | 
						|
		return uint32(len(m.DataSection))
 | 
						|
	default:
 | 
						|
		panic(fmt.Errorf("BUG: unknown section: %d", sectionID))
 | 
						|
	}
 | 
						|
}
 |