protected void Signature_TextChanged(object sender, EventArgs e)
        {
            // Attempt to parse the signature.
            var CSignature         = dlg.Signature.Text.Trim();
            ProcedureBase_v1 sProc = null;
            bool             isValid;

            if (!string.IsNullOrEmpty(CSignature))
            {
                var usb = new UserSignatureBuilder(program);
                sProc   = usb.ParseFunctionDeclaration(CSignature);
                isValid = (sProc != null);
            }
            else
            {
                CSignature = null;
                isValid    = true;
            }
            EnableControls(isValid);
            if (isValid)
            {
                if (sProc != null)
                {
                    dlg.ProcedureName.Text = sProc.Name;
                }
                EnableProcedureName();
            }
        }
        public ExternalProcedure LoadExternalProcedure(ProcedureBase_v1 sProc)
        {
            var sSig = sProc.Signature;
            var sser = new ProcedureSerializer(platform, this, this.defaultConvention);
            var sig  = sser.Deserialize(sSig, platform.Architecture.CreateFrame());   //$BUGBUG: catch dupes?

            return(new ExternalProcedure(sProc.Name, sig)
            {
                EnclosingType = sSig.EnclosingType
            });
        }
Beispiel #3
0
        private bool TryParseSignature(string txtSignature, out ProcedureBase_v1 sProc)
        {
            sProc = null;
            if (program == null || program.Platform == null)
            {
                return(false);
            }

            // Attempt to parse the signature.
            var usb = new UserSignatureBuilder(program);

            sProc = usb.ParseFunctionDeclaration(txtSignature);
            return(sProc != null);
        }
        public ExternalProcedure?LoadExternalProcedure(
            ProcedureBase_v1 sProc, ProcedureCharacteristics?chr = null)
        {
            if (sProc.Name is null)
            {
                return(null);
            }
            var sSig = sProc.Signature;
            var sser = new ProcedureSerializer(platform, this, this.defaultConvention ?? "");
            var sig  = sser.Deserialize(sSig, platform.Architecture.CreateFrame());   //$BUGBUG: catch dupes?

            if (sig is null)
            {
                return(null);
            }
            return(new ExternalProcedure(sProc.Name, sig, chr)
            {
                EnclosingType = sSig?.EnclosingType
            });
        }