LogicDataGenerator.MessageDslParser.ParseEnum C# (CSharp) Method

ParseEnum() private static method

private static ParseEnum ( string dslFile, Dsl.FunctionData funcData, string defGroupName, EnumTypeDef>.SortedDictionary enumTypes, bool &haveError ) : void
dslFile string
funcData Dsl.FunctionData
defGroupName string
enumTypes EnumTypeDef>.SortedDictionary
haveError bool
return void
        private static void ParseEnum(string dslFile, FunctionData funcData, string defGroupName, SortedDictionary<string, EnumTypeDef> enumTypes, ref bool haveError)
        {
            if (null != funcData) {
            CallData callData = funcData.Call;
            if (null != callData && callData.GetParamNum() >= 1) {
              string enumName, groupName;
              enumName = callData.GetParamId(0);
              if (callData.GetParamNum() > 1) {
            groupName = callData.GetParamId(1);
              } else {
            groupName = defGroupName;
              }

              EnumTypeDef enumTypeDef = new EnumTypeDef();
              enumTypeDef.m_EnumName = enumName;
              enumTypeDef.m_GroupName = groupName;
              if (enumTypes.ContainsKey(enumName)) {
            enumTypes[enumName] = enumTypeDef;
              } else {
            enumTypes.Add(enumName, enumTypeDef);
              }

              int nextValue = 0;
              foreach (ISyntaxComponent comp in funcData.Statements) {
            ValueData val = comp as ValueData;
            if (null != val) {
              if (val.HaveId()) {
                enumTypeDef.m_EnumMembers.Add(val.GetId(), nextValue);
                ++nextValue;
              } else {
                LogSystem.Error("enum member {0} must have name ! line {1} file {2}", comp.ToScriptString(), comp.GetLine(), dslFile);
                haveError = true;
              }
            } else {
              CallData field = comp as CallData;
              if (null != field) {
                if (field.HaveId()) {
                  if (field.GetParamNum() >= 1) {
                    ISyntaxComponent param = field.GetParam(0);
                    string id = param.GetId();
                    int idType = param.GetIdType();
                    if (idType == ValueData.NUM_TOKEN) {
                      nextValue = int.Parse(id);
                    } else {
                      LogSystem.Error("enum member {0} value must be number ! line {1} file {2}", comp.ToScriptString(), comp.GetLine(), dslFile);
                      haveError = true;
                    }
                    enumTypeDef.m_EnumMembers.Add(field.GetId(), nextValue);
                  } else {
                    enumTypeDef.m_EnumMembers.Add(field.GetId(), nextValue);
                  }
                  ++nextValue;
                } else {
                  LogSystem.Error("enum member {0} must have name ! line {1} file {2}", comp.ToScriptString(), comp.GetLine(), dslFile);
                  haveError = true;
                }
              } else {
                LogSystem.Error("enum member {0} must end with ';' ! line {1} file {2}", comp.ToScriptString(), comp.GetLine(), dslFile);
                haveError = true;
              }
            }
              }
            } else {
              LogSystem.Error("enum {0} must have 1 or 2 params (name and group) ! line {1} file {2}", funcData.ToScriptString(), funcData.GetLine(), dslFile);
              haveError = true;
            }
              }
        }