|
/*
* Copyright 2006, Dustin Metzgar
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.CodeDom;
using System.Collections.Generic;
namespace XmiCodeDomLib.Version1_0
{
[XmiParser("Foundation.Core.DataType")]
public class XmiDataType : XmiBaseClass, IFoundationCoreModelElement, IFoundationCoreGeneralizableElement
{
#region Members
private bool _IsSystemType = false;
private Type _SystemType = null;
[XmiIgnore]
public bool IsSystemType
{
get { return _IsSystemType; }
}
[XmiIgnore]
public Type SystemType
{
get { return _SystemType; }
}
private void EvaluateSystemType()
{
string name = XmiRoot.GetSafeName(Name);
if (name != string.Empty)
{
_SystemType = Type.GetType("system." + name, false, true);
_IsSystemType = _SystemType != null;
if (!_IsSystemType)
{
switch (name.ToLower())
{
case "float":
_SystemType = typeof(float);
_IsSystemType = true;
break;
case "bool":
_SystemType = typeof(bool);
_IsSystemType = true;
break;
case "uint":
goto case "int";
case "int":
_SystemType = typeof(int);
_IsSystemType = true;
break;
}
}
_Name = name;
}
}
#endregion
#region IFoundationCoreModelElement Members
private string _Name = string.Empty;
private bool _IsSpecification;
private string _Visibility = string.Empty;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
EvaluateSystemType();
}
}
public bool IsSpecification
{
get
{
return _IsSpecification;
}
set
{
_IsSpecification = value;
}
}
public string Visibility
{
get
{
return _Visibility;
}
set
{
_Visibility = value;
}
}
private XmiBaseClass _Namespace = null;
public XmiBaseClass Namespace
{
get { return _Namespace; }
set { _Namespace = value; }
}
#endregion
#region IFoundationCoreGeneralizableElement Members
private bool _IsRoot;
private bool _IsLeaf;
private bool _IsAbstract;
public bool IsRoot
{
get
{
return _IsRoot;
}
set
{
_IsRoot = value;
}
}
public bool IsLeaf
{
get
{
return _IsLeaf;
}
set
{
_IsLeaf = value;
}
}
public bool IsAbstract
{
get
{
return _IsAbstract;
}
set
{
_IsAbstract = value;
}
}
#endregion
#region Methods for creating CodeDom graph
public void AddToNamespace(CodeNamespace cn)
{
if (!_IsSystemType)
{
string name = XmiRoot.GetSafeName(Name);
if (name != string.Empty)
{
CodeTypeDeclaration ctd = new CodeTypeDeclaration(name);
cn.Types.Add(ctd);
ctd.IsStruct = true;
}
}
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.