On 10/24/2012 11:09 AM, Wayne Stambaugh wrote:
> On 10/24/2012 10:28 AM, Dick Hollenbeck wrote:
>> On 10/23/2012 03:53 PM, Wayne Stambaugh wrote:
>>> On 10/23/2012 9:44 AM, Dick Hollenbeck wrote:
>>>> On 10/22/2012 08:44 PM, Wayne Stambaugh wrote:
>>>>> Dick,
>>>>>
>>>>> I figured out what the problem is.  To be honest, I'm not sure how the
>>>>> library cache loader didn't fail.  When a NULL BOARD item is passed to
>>>>> the PCB_PARSER constructor, no layer look up table is created.  When you
>>>>> attempt to parse the module input, the layer checking algorithm
>>>>> complains that the layer is indeed not there.  The solution is to
>>>>> populate the layer look up table with the default layer values using
>>>>> BOARD::GetDefaultLayerName().
>>>> That sounds exactly like what I had in mind.  Then after that constructor, 
>>>> if a board is
>>>> present it could overwrite entries in that same hashtable I guess.
>>> I was actually thinking about using a static member hash table to store
>>> the default table.
>> Why?
>>
>> It's the same amount of code, yet is requires more memory space and reduces 
>> program
>> startup time.
>>
>> I don't see the advantage.  Plus this won't cover the case where there is a 
>> roque yet
>> valid layername in a board.
>>
>> I'd go with the constructor approach, then only have to do straight line
>> hashtable lookups.
>>
> The memory use should be fairly minimal as the hash table is nothing 
> more than a wxString used to look up a LAYER object where the maximum 
> number of layer objects is currently 32.  No start up penalty would be 
> incurred.  The default layer look up table would be populated at run 
> time the first time is needed.  Since the default layer table is fixed 
> (unlike the board layer table which can have user defined names), it 
> only needs to be populated once.  My thinking on this was not have to 
> recreate the exact same layer look up table for every new instance of 
> PCB_PARSER which when loading the new footprint library would occur for 
> each footprint file in the library.  If you think the memory hit is more 
> detrimental than the performance hit for recreating the table for every 
> instance of PCB_PARSER, I'm wouldn't be opposed to populating the 
> current look up table with the default layers in the constructor of 
> PCB_PARSER.


No mention was made of my concern for rogue layernames, but I think I 
understand your
concerns fully now.

Its going to be easier for me to just fix this.

Thanks for your pointers.

The conversation is taking longer than the coding would.


Dick




_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to