Welcome Guest Search | Active Topics | Members | Log In | Register

Singleton Class Options · View
derek
Posted: Thursday, April 24, 2008 5:13:58 AM
Rank: Advanced Member
Groups: Member

Joined: 4/24/2008
Posts: 6
Points: 18
Location: Scotland
Lets you create a Singleton class (one instance, global scope). Really just a mod to the existing Class command but worth while as a learning exercise.

Code:

<?xml version="1.0"?>
<Commands xmlns="http://schemas.devprojects.net/AutoCode/v3.0">
  <Command name="SingletonClass" priority="100">

    <CommandBehavior>
      <CommandLine shortcut="singleton" />
      <ActiveDocument extensions=".cs"/>
    </CommandBehavior>

    <CommandInfo>
      <LanguageCategory>CSharp</LanguageCategory>
      <Category>Code</Category>
      <Usage>
        <![CDATA[<prop1Type> <prop1Name> ... <className> singleton]]>
      </Usage>
      <Description>Constructs a Singleton Class with multiple properties.</Description>
      <Author>Derek Smyth</Author>
      <HelpUrl>http://www.dsmyth.net/wiki</HelpUrl>
    </CommandInfo>

    <CommandCode language="csharp">

      <Render>
        <![CDATA[
     
      RenderClassBegin(Arguments[Arguments.Length-1]);
     
      RenderSingletonInstance(Arguments[Arguments.Length-1]);

     
     RenderStartRegion(@"Fields");
      for (int n=0; n<Arguments.Length-1; n+=2)
      {
        RenderField(Arguments[n], Arguments[n+1]);
      }
      RenderEndRegion();
     
     
      RenderStartRegion(@"Constructors");
      RenderConstructors(Arguments);
      RenderEndRegion();
     
     
      RenderStartRegion(@"Properties");
      for (int n=0; n<Arguments.Length-1; n+=2)
      {
        RenderProperty(Arguments[n], Arguments[n+1]);
      }
      RenderEndRegion();
     
     
      RenderStartRegion(@"Methods");
      RenderGetSingletonMethod(Arguments[Arguments.Length-1]);
      RenderEndRegion();
     
      RenderClassEnd();
      ]]>
      </Render>


      <Codes>
        <Code id="ClassBegin">
          <![CDATA[public sealed class <%=ToPascalCase(args[0])%>
     {
        ]]>
        </Code>

        <Code id="SingletonInstance">
          <![CDATA[private static readonly <%=ToPascalCase(args[0])%> singletonInstance = new <%=ToPascalCase(args[0])%>();
         
          ]]>
        </Code>
        
            
        <Code id="StartRegion">
          <![CDATA[
              #region <%=args[0]%>
             
        ]]>
        </Code>
        
        <Code id="EndRegion">
          <![CDATA[
              #endregion
        ]]>
        </Code>
        
    
        <Code id="Field">
          <![CDATA[private <%=args[0]%> <%=ToUnderscore(args[1])%>;
          ]]>
        </Code>


        <Code id="Constructors">
          <![CDATA[private <%=ToPascalCase(args[args.Length-1])%>(/**/)
        {
          //initialise singleton variables here
        }
       
        ]]>
        </Code>

     
        <Code id="Property" codeElement="Selection" codePoint="StartOfSelection">
          <![CDATA[public <%=args[0]%> <%=ToPascalCase(args[1])%>
         
          {
            get { return <%=ToUnderscore(args[1])%>; }
            set { <%=ToUnderscore(args[1])%> = value; }
          }

           ]]>
        </Code>

       
        <Code id="GetSingletonMethod">
          <![CDATA[
              public static <%=ToPascalCase(args[0])%> Get<%=ToPascalCase(args[0])%>() {
                  return singletonInstance;
              }
          ]]>
        </Code>
       
       
        <Code id="ClassEnd">
          <![CDATA[
          }
          ]]>
        </Code>
      </Codes>

      <SmartFormat>
        <Start codeElement="ClassBegin" codePoint="StartOfElement" />
        <End codeElement="ClassEnd" codePoint="EndOfElement" />
      </SmartFormat>

      <Selection codeElement="Constructors" codePoint="StartOfElement" clearSelection="true">
        <SelectText>/**/</SelectText>
      </Selection>

    </CommandCode>
  </Command>

</Commands>

Alvaro
Posted: Thursday, April 24, 2008 7:16:47 PM
Rank: Administration
Groups: Administration

Joined: 3/16/2008
Posts: 22
Points: 72
Location: Spain
Thanks Derek,

I wonder if you don’t mind if I publish it in the Catalog section.

Thanks,

Alvaro
derek
Posted: Friday, April 25, 2008 11:24:15 AM
Rank: Advanced Member
Groups: Member

Joined: 4/24/2008
Posts: 6
Points: 18
Location: Scotland
Alvaro wrote:
Thanks Derek,

I wonder if you don’t mind if I publish it in the Catalog section.

Thanks,

Alvaro


Hi Alvaro,

Yeah of course on you go. Just take it as granted that any commands I post are for use where ever you want. Here is the VB.NET equivalent.

Code:

<?xml version="1.0"?>
<Commands xmlns="http://schemas.devprojects.net/AutoCode/v3.0">
  <Command name="SingletonClass" priority="100">

    <CommandBehavior>
      <CommandLine shortcut="singleton" />
      <ActiveDocument extensions=".vb"/>
    </CommandBehavior>

    <CommandInfo>
      <LanguageCategory>VB.NET</LanguageCategory>
      <Category>Code</Category>
      <Usage>
        <![CDATA[<prop1Type> <prop1Name> ... <className> singleton]]>
      </Usage>
      <Description>Constructs a Singleton Class with multiple properties.
      Only value type properties are supported.</Description>
      <Author>Derek Smyth</Author>
      <HelpUrl>http://www.dsmyth.net/wiki</HelpUrl>
    </CommandInfo>

    <CommandCode language="csharp">

      <Render>
        <![CDATA[
     
      RenderClassBegin(Arguments[Arguments.Length-1]);
     
     
      RenderSingletonInstance(Arguments[Arguments.Length-1]);

     
      RenderStartRegion(@"Fields");
      for (int n=0; n<Arguments.Length-1; n+=2)
      {
        RenderField(Arguments[n], Arguments[n+1]);
      }
      RenderEndRegion();
     
     
      RenderStartRegion(@"Constructors");
      RenderConstructors();
      RenderEndRegion();
     
     
      RenderStartRegion(@"Properties");
      for (int n=0; n<Arguments.Length-1; n+=2)
      {
        RenderProperty(Arguments[n], Arguments[n+1]);
      }
      RenderEndRegion();
     
     
      RenderStartRegion(@"Methods");
      RenderGetSingletonMethod(Arguments[Arguments.Length-1]);
      RenderEndRegion();
     
      RenderClassEnd();
      ]]>
      </Render>

      <Codes>
        <Code id="ClassBegin">
          <![CDATA[Public NotInheritable Class <%=ToPascalCase(args[0])%>
        ]]>
        </Code>

        <Code id="SingletonInstance">
          <![CDATA[Private Shared singletonInstance As New <%=ToPascalCase(args[0])%>()
          ]]>
        </Code>
        
        
        
       <Code id="StartRegion">
          <![CDATA[
              #Region "<%=args[0]%>"
             
        ]]>
        </Code>
        
       <Code id="EndRegion">
          <![CDATA[
              #End Region
        ]]>
        </Code>
        
        
        
    
        <Code id="Field">
          <![CDATA[Dim <%=ToUnderscore(args[1])%> As <%=args[0]%>
          ]]>
        </Code>


        <Code id="Constructors">
          <![CDATA[Private Sub New()
             'initialise singleton variables here
        End Sub
        
        ]]>
        </Code>

     
        <Code id="Property" codeElement="Selection" codePoint="StartOfSelection">
          <![CDATA[Public Property <%=ToPascalCase(args[1])%>() As <%=args[0]%>
            Get
    Return <%=ToUnderscore(args[1])%>
            End Get
            Set(ByVal value As <%=args[0]%>)
    <%=ToUnderscore(args[1])%> = value
            End Set
          End Property
           ]]>
        </Code>

       
        <Code id="GetSingletonMethod">
          <![CDATA[
              Public Shared Function Get<%=ToPascalCase(args[0])%>() As <%=ToPascalCase(args[0])%>
                  return singletonInstance
              End Function
          ]]>
        </Code>
       
       
        <Code id="ClassEnd">
          <![CDATA[
          End Class ]]>
        </Code>
      </Codes>

      <SmartFormat>
        <Start codeElement="ClassBegin" codePoint="StartOfElement" />
        <End codeElement="ClassEnd" codePoint="EndOfElement" />
      </SmartFormat>

      <Selection codeElement="Constructors" codePoint="StartOfElement" clearSelection="true">
        <SelectText>/**/</SelectText>
      </Selection>

    </CommandCode>
  </Command>

</Commands>

Alvaro
Posted: Monday, April 28, 2008 12:30:55 PM
Rank: Administration
Groups: Administration

Joined: 3/16/2008
Posts: 22
Points: 72
Location: Spain
Thanks Derek,

I’m working in the Catalog section to organize all commands, allow people post new commands and make it possible to search inside the catalog and download them. I’ll publish these as soon as I finish with it.

By the way, I edited the templates <HelpUrl> tag to show your site http://www.dsmyth.net/wiki

Thanks again,

Alvaro

Users browsing this topic
Guest


Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Powered by Yet Another Forum.net version 1.9.1.8 (NET v2.0) - 3/29/2008