Exemplo n.º 1
0
 public void CloneFrom(FieldData f)
 {
     this.Type = f.Type;
     this.TypeString = f.TypeString;
     this.Units = f.Units;
     this.Elements = f.Elements;
     this.ElementNames = f.ElementNames;
     this.Options = f.Options;
     this.DefaultValues = f.DefaultValues;
 }
Exemplo n.º 2
0
        private static string GetEnumName(ObjectData obj, FieldData f, bool includeDot)
        {
            if (!f.IsEnum) return "";

            return string.Format("{0}_{1}{2}", obj.Name, f.Name, (includeDot ? "." : "") );
        }
Exemplo n.º 3
0
 private static string GetReadOperation(FieldData f)
 {
     switch (f.TypeString)
     {
         case "float":  return "ReadSingle";
         case "int8":   return "ReadSByte";
         case "uint8":  return "ReadByte";
         case "int16":  return "ReadInt16";
         case "uint16": return "ReadUInt16";
         case "int32":  return "ReadInt32";
         case "uint32": return "ReadUInt32";
         case "enum":   return "ReadByte";
         default:
             Console.WriteLine("ERROR: Unknown uavType: " + f.TypeString);
             return "UNKNOWN_UAV_TYPE";
     }
 }
Exemplo n.º 4
0
        private static string GetEnumTypeCast(ObjectData obj, FieldData f)
        {
            if (!f.IsEnum)
                return "";

            return String.Format("({0})", GetEnumName(obj, f, false));
        }
Exemplo n.º 5
0
        private static string GetSerializeTypeCast(ObjectData obj, FieldData f)
        {
            if (!f.IsEnum)
                return "";

            return "(byte)";
        }
Exemplo n.º 6
0
 private static string GetCSharpType(ObjectData obj, FieldData f)
 {
     switch (f.TypeString)
     {
         case "float": return "float";
         case "int8": return "SByte";
         case "uint8": return "byte";
         case "int16": return "Int16";
         case "uint16": return "UInt16";
         case "enum": return GetEnumName(obj, f, false);
         case "int32": return "Int32";
         case "uint32": return "UInt32";
         default: 
             Console.WriteLine("ERROR: Unknown uavType: " + f.TypeString);
             return "!!!!";
     }
 }
Exemplo n.º 7
0
        private static string GetArrayModifier(FieldData f, bool withNumberOfElements)
        {
            int numElements = f.NumElements;

            if (numElements <= 1) return "";

            return string.Format("[{0}]", (withNumberOfElements ? numElements.ToString() : ""));
        }
Exemplo n.º 8
0
        private static ObjectData GetObjectFromXml(XmlTextReader reader)
        {
            ObjectData currentObject = null;
            FieldData currentField = null;

            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    switch (reader.Name)
                    {
                        case "object":
                            currentObject = new ObjectData();
                            currentObject.Name = reader.GetAttribute("name");
                            currentObject.IsSettingsInt = GetIntFromBoolString(reader.GetAttribute("settings"));
                            currentObject.IsSingleInstInt = GetIntFromBoolString(reader.GetAttribute("singleinstance"));
                            break;
                        case "description":
                            currentObject.Description = reader.ReadString();
                            break;
                        case "field":
                            currentField = new FieldData();
                            currentField.Name = reader.GetAttribute("name");
                            currentObject.FieldsIndexedByName.Add(currentField.Name, currentField);

                            if (IsClone(reader))
                            {
                                currentField.CloneFrom(currentObject.FieldsIndexedByName[reader.GetAttribute("cloneof")]);
                            }
                            else
                            {
                                currentField.TypeString = reader.GetAttribute("type");
                                currentField.Type = GetFieldTypeFromString(currentField.TypeString);
                                currentField.Elements = reader.GetAttribute("elements");
                                currentField.Units = reader.GetAttribute("units");
                                currentField.ParseElementNamesFromAttribute(reader.GetAttribute("elementnames"));
                                currentField.ParseOptionsFromAttribute(reader.GetAttribute("options"));
                                currentField.ParseDefaultValuesFromAttribute(reader.GetAttribute("defaultvalue"));
                            }
                            currentObject.Fields.Add(currentField);
                            break;
                        case "option":
                            currentField.Options.Add(reader.ReadString());
                            break;
                        case "elementname":
                            currentField.ElementNames.Add(reader.ReadString());
                            break;
                    }
                }
            }

            ExpandDefaultValues(currentObject);
            SortFields(currentObject);

            SummaryGenerator.RegisterObjectId(
                Hasher.CalculateId(currentObject),
                string.Format("{0}.{1}", CSharpGenerator.Namespace, currentObject.Name));

            return currentObject;
        }
Exemplo n.º 9
0
        private static string GetDefaultValuesList(ObjectData obj, FieldData f)
        {

            // Case 0: No default values: just return empty.

            if (f.DefaultValues.Count == 0) return "";

            // Case 1: there is a default value for every item

            if (f.DefaultValues.Count == f.NumElements)
            {
                if (f.IsEnum)
                    return GetBracketedString(GetEnumCommaSeparatedValues(GetEnumName(obj, f, false), f.DefaultValues));
                else
                    return GetBracketedString(GetCommaSeparatedValues(f.DefaultValues, GetFieldTypeSuffix(f)));
            }

            return "";
        }
Exemplo n.º 10
0
 private static string GetFormattedDefaultValue(ObjectData obj, FieldData f, int index)
 {
     if (f.IsEnum)
     {
         return string.Format("{0}.{1}", GetEnumName(obj, f, false), FieldData.GetEscapedItemName(f.DefaultValues[index]));
     }
     else
     {
         return string.Format("{0}{1}", f.DefaultValues[index], GetFieldTypeSuffix(f));
     }
 }
Exemplo n.º 11
0
        private static string GetDefaultValue(ObjectData obj, FieldData f)
        {   
            // Cases:
            // - Single value
            //   - float n = 0.0f
            //   - MyEnum n = MyEnum.Value
            // - Array value
            //   - float[] n = new float[3];    // Roll, Pitch, Yaw
            //   - float[] n = new float[3] { 0.1f, 2f, 0.3f };   // Roll, Pitch, Yaw
            //   - MyEnum[] n = new MyEnum[3] { MyEnum.Value, MyEnum.Value };   // RollMode, PitchMode

            if (f.NumElements <= 1)
            {
                // Single value
                if (f.DefaultValues.Count == 1)
                {
                    return " = " + GetFormattedDefaultValue(obj, f, 0);
                }
            }
            else
            {
                // Array value
                return string.Format(" = new {0}[{1}] {2}",
                    GetCSharpType(obj, f), f.NumElements, GetDefaultValuesList(obj, f));
            }

            return "";
        }
Exemplo n.º 12
0
        // __ Helpers _____________________________________________________________


        private static string GetElementNameAt(FieldData f, int index)
        {
            if (index < f.ElementNames.Count) return f.ElementNames[index];

            return "NO_ELEMENT_NAME";
        }
Exemplo n.º 13
0
 private static string GetPrivateFieldName(FieldData f)
 {
     return(string.Format("m{0}", f.Name));
 }
Exemplo n.º 14
0
        // __ Impl _______________________________________________________

        private static ObjectData GetObjectFromXml(XDocument xmlDocument)
        {
            ObjectData currentObject = null;
            FieldData currentField = null;

            if (xmlDocument.DescendantNodes().Any())
            {
                currentObject = new ObjectData();
                IEnumerable<XNode> nodes = xmlDocument.DescendantNodes();

                foreach (dynamic node in nodes)
                {
                    if (node is XElement)
                    {
                        string name = node.Name.LocalName;
                        var xnode = node as XElement;
                        switch (name)
                        {
                            case "object":
                                var nameElement =
                                    xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "name");
                                if (nameElement != null)
                                    currentObject.Name = nameElement.Value;
                                var settigsElement =
                                    xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "settings");
                                if (settigsElement != null)
                                    currentObject.IsSettingsInt = GetIntFromBoolString(settigsElement.Value);
                                currentObject.IsSingleInstInt =
                                    GetIntFromBoolString(
                                        xnode.Attributes()
                                            .FirstOrDefault(a => a.Name.LocalName == "singleinstance")
                                            .Value);
                                break;
                            case "description":
                                currentObject.Description = node.Value;
                                break;
                            case "field":
                                currentField = new FieldData();
                                currentField.Name =
                                    xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "name").Value;
                                currentObject.FieldsIndexedByName.Add(currentField.Name, currentField);

                                if (IsClone(node))
                                {
                                    currentField.CloneFrom(
                                        currentObject.FieldsIndexedByName[
                                            xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "cloneof").Value]);
                                }
                                else
                                {
                                    XAttribute typeElement =
                                        xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "type");
                                    if (typeElement != null)
                                    {
                                        string typeString = typeElement.Value;
                                        currentField.TypeString = typeString;
                                        currentField.Type = GetFieldTypeFromString(currentField.TypeString);
                                        XAttribute elementsAttribute =
                                            xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "elements");
                                        if (elementsAttribute !=
                                            null)
                                            currentField.Elements = elementsAttribute.Value;
                                        XAttribute unitsElement =
                                            xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "units");
                                        if (unitsElement != null)
                                            currentField.Units = unitsElement.Value;
                                        XAttribute elementNamesElement =
                                            xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "elementnames");
                                        if (
                                            elementNamesElement !=
                                            null)
                                            currentField.ParseElementNamesFromAttribute(elementNamesElement.Value);
                                        XAttribute optionsElement =
                                            xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "options");
                                        if (optionsElement !=
                                            null)
                                            currentField.ParseOptionsFromAttribute(optionsElement.Value);
                                        XAttribute defaultValueElement =
                                            xnode.Attributes().FirstOrDefault(a => a.Name.LocalName == "defaultvalue");
                                        if (
                                            defaultValueElement !=
                                            null)
                                            currentField.ParseDefaultValuesFromAttribute(defaultValueElement.Value);
                                    }
                                }
                                currentObject.Fields.Add(currentField);
                                break;
                            case "option":
                                currentField.Options.Add(node.Value);
                                break;
                            case "elementname":
                                currentField.ElementNames.Add(node.Value);
                                break;
                        }
                    }
                }
                ExpandDefaultValues(currentObject);
                SortFields(currentObject);

                SummaryGenerator.RegisterObjectId(
                    Hasher.CalculateId(currentObject),
                    string.Format("{0}.{1}", CSharpGenerator.Namespace, currentObject.Name));
            }
            return currentObject;
        }
Exemplo n.º 15
0
        private static string GetEnumItems(FieldData f)
        {
            if (!f.IsEnum) return "";

            List<string> escapedEnum = new List<string>();
            foreach (string s in f.Options)
                escapedEnum.Add(FieldData.GetEscapedItemName(s));

            return GetCommaSeparatedValues(escapedEnum, "");
        }
Exemplo n.º 16
0
 private static string GetPrivateFieldName(FieldData f)
 {
     return string.Format("m{0}", f.Name);
 }
Exemplo n.º 17
0
 private static string GetFieldTypeSuffix(FieldData f)
 {
     switch (f.Type)
     {
         case FieldDataType.FLOAT32:
             return "f";
         default:
             return "";
     }
 }