//public static TheClass Get(CsEntity pEntity) { // CsEntityClass typeRef = pEntity as CsEntityClass; // if (typeRef != null) { // CsClass theClass = typeRef.nodes.First.Value as CsClass; // if (theClass == null) { // return get(typeRef); // } // if (!_classes.ContainsKey(theClass)) // _classes[theClass] = new TheClass(theClass); // return _classes[theClass]; // } // CsEntityInterface entityInterface = pEntity as CsEntityInterface; //} public static TheClass Get(CsEntityTypeRef pEntityTyperef, FactoryExpressionCreator pCreator) { if (pEntityTyperef == null) { return(null); } if ( pEntityTyperef.u is CsEntityGenericParam || pEntityTyperef.u is CsEntityArraySpecifier ) { return(null); } CsEntityInstanceSpecifier entityInstanceSpecifier = pEntityTyperef.u as CsEntityInstanceSpecifier; CsEntity entityClass = entityInstanceSpecifier == null ? (CsEntity)pEntityTyperef.u : (CsEntity)entityInstanceSpecifier.type.u; return(Get(entityClass, pCreator)); //return Get(entityClass.nodes.First.Value); }
public static string GetType(CsEntityTypeRef pDirective) { if (pDirective == null) { return(null); } if (_entityTypeRef.ContainsKey(pDirective.type)) { return(_entityTypeRef[pDirective.type]); } switch (pDirective.type) { case cs_entity_type.et_valuetype: return(null); case cs_entity_type.et_array: return(GetType(((CsEntityArraySpecifier)pDirective.u).type) + "[]"); case cs_entity_type.et_enum: return(((CsEntityEnum)pDirective.u).name); case cs_entity_type.et_generic_param: CsEntityGenericParam egp = pDirective.u as CsEntityGenericParam; //TODO: check generics parameters return("<" + egp.name + ">"); case cs_entity_type.et_genericinst: CsEntityInstanceSpecifier eis = pDirective.u as CsEntityInstanceSpecifier; if (eis != null) { string ret = GetType(eis.type); if (eis.arguments != null) { List <string> val = new List <string> { "<" }; foreach (CsEntityTypeRef argument in eis.arguments) { val.Add(GetType(argument)); val.Add(", "); } val.RemoveAt(val.Count - 1); val.Add(">"); ret += string.Join("", val.ToArray()); } return(ret); } throw new Exception(); case cs_entity_type.et_class: CsEntityInterface itf = pDirective.u as CsEntityInterface; if (itf != null) { if (itf.interfaces != null && itf.interfaces.Count > 0) { List <string> val = new List <string>(itf.interfaces.Count); foreach (CsEntityTypeRef typeRef in itf.interfaces) { val.Add(GetType(typeRef)); } return(string.Join(", ", val.ToArray())); } if (!string.IsNullOrEmpty(itf.name)) { return(itf.name); } } CsEntityClass cls = pDirective.u as CsEntityClass; if (cls != null) { //if (cls.indexers != null) { // foreach (CsEntityProperty indexer in cls.indexers) { // return GetType(indexer.type); // } //} return(cls.name); } CsEntityDelegate entityDelegate = pDirective.u as CsEntityDelegate; if (entityDelegate != null) { return("function"); } return("IHaveNOIdeaWhatShouldBeHere"); } throw new Exception("Unknown EntityTypeRef: " + pDirective.type); }
//public static TheClass Get(CsEntity pEntity) { // CsEntityClass typeRef = pEntity as CsEntityClass; // if (typeRef != null) { // CsClass theClass = typeRef.nodes.First.Value as CsClass; // if (theClass == null) { // return get(typeRef); // } // if (!_classes.ContainsKey(theClass)) // _classes[theClass] = new TheClass(theClass); // return _classes[theClass]; // } // CsEntityInterface entityInterface = pEntity as CsEntityInterface; //} public static TheClass Get(CsEntityTypeRef pEntityTyperef, FactoryExpressionCreator pCreator) { if (pEntityTyperef == null) return null; if ( pEntityTyperef.u is CsEntityGenericParam || pEntityTyperef.u is CsEntityArraySpecifier ) return null; CsEntityInstanceSpecifier entityInstanceSpecifier = pEntityTyperef.u as CsEntityInstanceSpecifier; CsEntity entityClass = entityInstanceSpecifier == null ? (CsEntity)pEntityTyperef.u : (CsEntity)entityInstanceSpecifier.type.u; return Get(entityClass, pCreator); //return Get(entityClass.nodes.First.Value); }
public static string GetType(CsEntityTypeRef pDirective) { if (pDirective == null) { return null; } if (_entityTypeRef.ContainsKey(pDirective.type)) { return _entityTypeRef[pDirective.type]; } switch (pDirective.type) { case cs_entity_type.et_valuetype: return null; case cs_entity_type.et_array: return GetType(((CsEntityArraySpecifier)pDirective.u).type) + "[]"; case cs_entity_type.et_enum: return ((CsEntityEnum)pDirective.u).name; case cs_entity_type.et_generic_param: CsEntityGenericParam egp = pDirective.u as CsEntityGenericParam; //TODO: check generics parameters return "<"+egp.name+">"; case cs_entity_type.et_genericinst: CsEntityInstanceSpecifier eis = pDirective.u as CsEntityInstanceSpecifier; if (eis != null) { string ret = GetType(eis.type); if (eis.arguments != null) { List<string> val = new List<string> {"<"}; foreach (CsEntityTypeRef argument in eis.arguments) { val.Add(GetType(argument)); val.Add(", "); } val.RemoveAt(val.Count - 1); val.Add(">"); ret += string.Join("", val.ToArray()); } return ret; } throw new Exception(); case cs_entity_type.et_class: CsEntityInterface itf = pDirective.u as CsEntityInterface; if (itf != null) { if (itf.interfaces != null && itf.interfaces.Count > 0) { List<string> val = new List<string>(itf.interfaces.Count); foreach (CsEntityTypeRef typeRef in itf.interfaces) { val.Add(GetType(typeRef)); } return string.Join(", ", val.ToArray()); } if (!string.IsNullOrEmpty(itf.name)) { return itf.name; } } CsEntityClass cls = pDirective.u as CsEntityClass; if (cls != null) { //if (cls.indexers != null) { // foreach (CsEntityProperty indexer in cls.indexers) { // return GetType(indexer.type); // } //} return cls.name; } CsEntityDelegate entityDelegate = pDirective.u as CsEntityDelegate; if (entityDelegate != null) { return "function"; } return "IHaveNOIdeaWhatShouldBeHere"; } throw new Exception("Unknown EntityTypeRef: " + pDirective.type); }
public Expression(string pValue, CsEntityTypeRef pType, bool pIsInternal) { Value = pValue; Type = pType; InternalType = pIsInternal; }
public Expression(string pValue, CsEntityTypeRef pType) { Value = pValue; Type = pType; }