OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

dita-sidsc message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Action #0039 | Write up use case for modularize...


I've prepared the attached txt file in an attempt to show how the concept of
object oriented inheritance might be used to have a base set of elements for
Component, MemoryMap, AddressBlock, Register, and BitField.  I'm not sure
how this type of inheritance relationship would be specified in a DTD and
DITA specialization. The attached file also lists some benefits and XML
examples.
 
Cheers,
  Jeremy




--
Jeremy Ralph
PDTi      :: http://www.productive-eda.com
SpectaReg :: http://www.productive-eda.com/SpectaReg
Spec-down code and doc generation for register interfaces

  
 
 
 
 
  
Contributed to DITA-SIDSC by Jeremy Ralph of PDTi on 2007-11-12 

This attempts to show how the concept of object oriented inheritance might be used to have a base set of elements for Component, MemoryMap, AddressBlock, Register, and BitField.  I'm not sure how this inheritance relationship would be specified in a DTD and DITA Specialization.    
 
----------------------
Class Structure
----------------------

BaseObject
+ has a name
+ has a description
+ has a briefDescription

Component extends BaseObject
+ contains MemoryMaps

MemoryMap extends BaseObject
+ contains AddressBlocks

AddressBlock extends BaseObject
+ contains Registers

Register extends BaseObject
+ contains BitFields

BitField extends BaseObject


If each instance of BaseObject is mapped to it's own topic then I don't think there would be an issue. However, if BitField is not specified as its own topic but is specified in a Register topic then there would be two different name elements in a single Topic which may cause some issues.  One advantage with having a BitField as its own topic is that it is easier to move BitFields between registers (a common use-case) and re-use BitFields between different projects in different registers.  

------------------------------------------
Benefits of this inheritance relationship:
------------------------------------------
1) centralized processing of the abstract BaseObject level (code reuse)
2) ability to change the definition of all BaseObjects in one central location (for example adding an id member/element) 
--------------------------------------------
Example 1) XML using abstract naming method.
This would be mapped into several topics.
-------------------------------------------

<component>
  <name>SomeComponent</name>
  <description>This is a great Component.</description>
  ...
  <memoryMap>
    <name>SomeMemoryMap</name>
    <description>This is a great MemoryMap</description>
    ...
	  <addressBlock>
	    <name>SomeAddressBlock</name>
	    <description>This is a great AddressBlock</description>
			...
		  <register>
		    <name>SomeRegister</name>
		    <description>This is a great Register</description>
				...
			  <bitField>
			    <name>SomeBitField</name>
			    <description>This is a great BitField</description>
					...
				</bitField>
			</register>
		</addressblock>
	</memoryMap>
</component>

----------------------------------------------------
Example 2) XML using context specific naming method.
Again mapped into several topics.
---------------------------------------------------

<component>
  <componentName>SomeComponent</componentName>
  <componentDescription>This is a great Component.</componentDescription>
  ...
  <memoryMap>
    <memoryMapName>SomeMemoryMap</memoryMapName>
    <description>This is a great MemoryMap</description>
    ...
	  <addressBlock>
	    <addressBlockName>SomeAddressBlock</addressBlockName>
	    <addressBlockDescription>This is a great AddressBlock</addressBlockDescription>
			...
		</addressblock>
	</memoryMap>
</component>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]