public ES_ClassData.Builder GetOrCreateClass(ES_AccessModifier accessMod, ArrayPointer <byte> name, ArrayPointer <byte> sourceUnit ) { CheckDisposed(); if (CheckTypeExists(name, ES_TypeTag.Class) != null) { throw new CompilationException(ES_FrontendErrors.ClashingTypeExists); } if (ClassBuilders.TryGetValue(name, out var builder)) { return(builder); } var classDataPtr = envBuilder.MemoryManager.GetMemory <ES_ClassData> (); builder = new ES_ClassData.Builder(classDataPtr, accessMod, new ES_FullyQualifiedName(NamespaceName, name), sourceUnit); ClassBuilders.Add(name, builder); NamespaceData.types.Add(&classDataPtr->TypeInfo); var unknType = NamespaceData.environment.TypeUnknownValue; builder.BaseClass = (ES_ClassData *)unknType; builder.InterfacesList = ArrayPointer <Pointer <ES_InterfaceData> > .Null; return(builder); }
public IGeneratedTypeBuilder WithClass(string name) { var generatedClassBuilder = new GeneratedClassBuilder(this, name); ClassBuilders.Add(generatedClassBuilder); return(generatedClassBuilder); }