/*
         * CONSTRUCTEURS
         */

        /// <summary>
        /// Construit un objet de traitement des commandes
        /// </summary>
        ///
        public AeroCalcCommandProcessor()
        {
            // Construction du container de données de performances
            ModelsLib = new DataModelContainer();
            // Construction de l'objet d'environnement
            EnvContext = new EnvironmentContext();
            // Construction de la pile mémoire
            MemStack = new MemoryStack();
            // Reglage intial du flag initialized
            initialized = false;
        }
Beispiel #2
0
        /*
         * CONSTRUCTEURS
         */

        /// <summary>
        /// Constructeur d'objet Commande
        /// </summary>
        /// <param name="inputText">string contenant la commande en mode texte, sans traitement préalable.</param>
        /// <param name="DMC">DataModelContainer, Conteneur de modèles de calculs</param>
        /// <param name="EC">EnvironmentContext, Objet contenant toutes les données de contexte</param>
        /// <param name="MS">MemoryStack, Pile de mémoire</param>
        public AeroCalcCommand(string inputText, DataModelContainer DMC, EnvironmentContext EC, MemoryStack MS)
        {
            // Initialisation des propriétés
            startOfProcess = new DateTime(DateTime.Now.Ticks, DateTimeKind.Utc);
            action         = ACTION_INITIAL_VALUE;
            eventCode      = ECODE_INITIAL_VALUE;
            numericResult  = Double.NaN;
            subs           = null;
            Factors        = new List <CommandFactor>();
            Container      = DMC;
            EnvContext     = EC;
            MemStack       = MS;

            if (EnvContext.verbose)
            {
                verbosed = true;
            }

            if (string.IsNullOrEmpty(inputText))
            {
                // Cas particulier de la chaine nulle
                rawTxtCommand = "";
                action        = ACTION_UNDETERMINED;
                eventCode     = ECODE_ERR_CMD_VOID;
            }
            else
            {
                // La chaine de texte n'est pas vide, traitement de la commande
                rawTxtCommand = inputText;
                if (!execute())
                {
                    // Un problème majeur s'est produit dans le traitement de la commande
                    eventCode = ECODE_ERR_PROCESSOR_FAILURE;
                    verbosed  = true;
                }
                else
                {
                    // Commande traitée
                    if (EC.verbose)
                    {
                        verbosed = true;
                    }
                }
            }
        }