public EmitClassCPP( EmitModuleCPP module, string name, EmitClassCPP baseClass, Span headerSpan, Span sourceSpan) { _module = module; _name = name; _base = baseClass; _headerSpan = headerSpan; _sourceSpan = sourceSpan; string baseClassString = ""; if (baseClass != null) { baseClassString = string.Format(" : public {0}", baseClass._name); } _headerSpan.WriteLine("class {0}{1}", _name, baseClassString); _headerSpan.WriteLine("{"); _headerSpan.WriteLine("public:"); _publicSpan = _headerSpan.IndentSpan(); _publicFieldsSpan = _publicSpan.InsertSpan(); _headerSpan.WriteLine("protected:"); _protectedSpan = _headerSpan.IndentSpan(); _headerSpan.WriteLine("public:"); _privateSpan = _headerSpan.IndentSpan(); _headerSpan.WriteLine("};"); _sourceSpan.WriteLine("// {0}", _name); }
public EmitMethodCPP( EmitClassCPP clazz, string prefix, string name, string cconv, IEmitType resultType, Span headerSpan, Span sourceSpan) { _class = clazz; _name = name; _cconv = cconv; _resultType = resultType; _headerSpan = headerSpan; _sourceSpan = sourceSpan; _headerSpan.Write("static "); _headerParamsSpan = CreateSignatureSpan( _name, _headerSpan); _headerSpan.WriteLine(";"); _fullName = prefix + _name; _sourceParamsSpan = CreateSignatureSpan( prefix + _name, _sourceSpan); _sourceSpan.WriteLine(); _sourceSpan.WriteLine("{"); _bodySpan = _sourceSpan.IndentSpan(); _sourceSpan.WriteLine("}"); _thisParameter = (EmitValCPP)AddParameter( Target.Pointer(clazz), "self"); _entryBlock = new EmitBlockCPP(this, _bodySpan.InsertSpan()); }
public EmitMethodCPP( EmitClassCPP clazz, string prefix, string name, string cconv, IEmitType resultType, Span headerSpan, Span sourceSpan) { _class = clazz; _name = name; _cconv = cconv; _resultType = resultType; _headerSpan = headerSpan; _sourceSpan = sourceSpan; _headerSpan.Write( "static " ); _headerParamsSpan = CreateSignatureSpan( _name, _headerSpan); _headerSpan.WriteLine(";"); _fullName = prefix + _name; _sourceParamsSpan = CreateSignatureSpan( prefix + _name, _sourceSpan); _sourceSpan.WriteLine(); _sourceSpan.WriteLine("{"); _bodySpan = _sourceSpan.IndentSpan(); _sourceSpan.WriteLine("}"); _thisParameter = (EmitValCPP) AddParameter( Target.Pointer( clazz ), "self" ); _entryBlock = new EmitBlockCPP(this, _bodySpan.InsertSpan()); }
public EmitClassCPP( EmitModuleCPP module, string name, EmitClassCPP baseClass, Span headerSpan, Span sourceSpan) { _module = module; _name = name; _base = baseClass; _headerSpan = headerSpan; _sourceSpan = sourceSpan; string baseClassString = ""; if (baseClass != null) baseClassString = string.Format(" : public {0}", baseClass._name); _headerSpan.WriteLine("class {0}{1}", _name, baseClassString); _headerSpan.WriteLine("{"); _headerSpan.WriteLine("public:"); _publicSpan = _headerSpan.IndentSpan(); _publicFieldsSpan = _publicSpan.InsertSpan(); _headerSpan.WriteLine("protected:"); _protectedSpan = _headerSpan.IndentSpan(); _headerSpan.WriteLine("public:"); _privateSpan = _headerSpan.IndentSpan(); _headerSpan.WriteLine("};"); _sourceSpan.WriteLine("// {0}", _name); }