// Construction public CHeaderFile( EHeaderFileID id, CHeaderFileRecord old_header_file_record ) { ID = id; ProjectID = EProjectID.Invalid; OldHeaderFileRecord = old_header_file_record; NewHeaderFileRecord = null; CreationState = EHeaderFileCreationState.Deleted; State = EHeaderFileState.Invalid; }
private void Parse_Project_File( FileInfo project_file ) { XElement project_root = XElement.Load( project_file.FullName ); string project_path = CEnumReflector.TopLevelDirectory + project_file.Directory.Name; foreach ( var elt in project_root.Elements().Where( e => e.Name.LocalName == "ItemGroup" ). Elements().Where( e => e.Name.LocalName == "ClInclude" ). Attributes().Where( a => a.Name.LocalName == "Include" ) ) { string header_file_name = project_path + Path.DirectorySeparatorChar + elt.Value; string []split_directory = header_file_name.Split( Path.DirectorySeparatorChar ); bool is_generated = false; for ( int i = 0; i + 1 < split_directory.Length; i++ ) { if ( split_directory[ i ] == "GeneratedCode" ) { is_generated = true; break; } } if ( is_generated ) { continue; } FileInfo header_file_info = new FileInfo( header_file_name ); CHeaderFileRecord new_header_record = new CHeaderFileRecord( header_file_name, NewProjectRecord.Name, header_file_info.LastWriteTime ); CEnumReflector.HeaderFileTracker.Register_Header_File( ID, new_header_record ); } }
public CHeaderFile( EHeaderFileID id, EProjectID project_id, CHeaderFileRecord new_record ) { ID = id; ProjectID = project_id; OldHeaderFileRecord = null; NewHeaderFileRecord = new_record; CreationState = EHeaderFileCreationState.New; State = EHeaderFileState.Dirty; }
public void Register_Header_File( EProjectID project_id, CHeaderFileRecord header_record ) { EHeaderFileID header_id = EHeaderFileID.Invalid; if ( m_HeaderFileIDMap.TryGetValue( header_record.FileNameWithPath, out header_id ) ) { CHeaderFile header_file = null; if ( !m_HeaderFiles.TryGetValue( header_id, out header_file ) ) { throw new Exception( "Internal header file mapping error" ); } header_file.Initialize_Existing( project_id, header_record ); } else { header_id = Allocate_Header_File_ID(); CHeaderFile header_file = new CHeaderFile( header_id, project_id, header_record ); m_HeaderFileIDMap.Add( header_file.FileNameWithPath, header_id ); m_HeaderFiles.Add( header_id, header_file ); } }
// Methods // Public interface public void Initialize_Existing( EProjectID project_id, CHeaderFileRecord new_record ) { NewHeaderFileRecord = new_record; CreationState = EHeaderFileCreationState.Unchanged; State = ( NewHeaderFileRecord.LastModifiedTime > OldHeaderFileRecord.LastModifiedTime ) ? EHeaderFileState.Dirty : EHeaderFileState.Unchanged; ProjectID = project_id; }