/*
 Copyright 2019 Alain Dargelas
 
 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.
 */

// Surelog 
// IDL for Parser cache.

include "header.fbs";

file_identifier "SLPA";
file_extension "slpa";

namespace SURELOG.PARSECACHE;

table DesignElement {
    m_name:ulong; 
    m_fileId:ulong;
    m_type:uint;
    m_uniqueId:ulong;
    m_line:uint;
    m_timeInfo:CACHE.TimeInfo;
    m_parent:ulong;
    m_node:uint;
}

// This is what we need to encode, 
//  but we limit all the ulong and uint objects to 20 bits and the ushort stays at 16 bits for the line and 12 bits for the type
/*
table VObject {
    m_name:ulong; 
    m_type:ushort;
    m_line:uint;
    m_parent:uint;
    m_definition:uint;
    m_child:uint;
    m_sibling:uint;
    m_file:ulong;
}  
*/
/*
 It results in a compressed struct as below:
*/
struct VObject {
    m_field1:ulong; 
    m_field2:ulong;
    m_field3:ulong;
}


table ParseCache {
  m_header:CACHE.Header;
  m_errors:[CACHE.Error];
  m_symbols:[string];
  m_elements:[DesignElement];
  m_objects:[VObject];
}

root_type ParseCache;
