Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Public Attributes | List of all members
dart::kernel::LibraryHelper Class Reference

#include <kernel_translation_helper.h>

Public Types

enum  Field {
  kFlags , kLanguageVersion , kCanonicalName , kName ,
  kSourceUriIndex , kProblemsAsJson , kAnnotations , kDependencies
}
 
enum  Flag { kSynthetic = 1 << 0 , kNonNullableByDefaultCompiledModeBit1 = 1 << 1 , kNonNullableByDefaultCompiledModeBit2 = 1 << 2 , kUnsupported = 1 << 3 }
 

Public Member Functions

 LibraryHelper (KernelReaderHelper *helper)
 
void ReadUntilIncluding (Field field)
 
void ReadUntilExcluding (Field field)
 
void SetNext (Field field)
 
void SetJustRead (Field field)
 
bool IsSynthetic () const
 
NNBDCompiledMode GetNonNullableByDefaultCompiledMode () const
 

Public Attributes

uint8_t flags_ = 0
 
NameIndex canonical_name_
 
StringIndex name_index_
 
intptr_t source_uri_index_ = 0
 

Detailed Description

Definition at line 823 of file kernel_translation_helper.h.

Member Enumeration Documentation

◆ Field

Enumerator
kFlags 
kLanguageVersion 
kCanonicalName 
kName 
kSourceUriIndex 
kProblemsAsJson 
kAnnotations 
kDependencies 

Definition at line 825 of file kernel_translation_helper.h.

825 {
826 kFlags,
827 kLanguageVersion /* from binary version 27 */,
829 kName,
834 // There are other fields in a library:
835 // * kAdditionalExports
836 // * kParts
837 // * kTypedefs
838 // * kClasses
839 // * kExtensions
840 // * kExtensionTypeDeclarations
841 // * kToplevelField
842 // * kToplevelProcedures
843 // * kSourceReferences
844 // * kLibraryIndex
845 // but we never read them via this helper and it makes extending the format
846 // harder to keep the code around.
847 };

◆ Flag

Enumerator
kSynthetic 
kNonNullableByDefaultCompiledModeBit1 
kNonNullableByDefaultCompiledModeBit2 
kUnsupported 

Definition at line 849 of file kernel_translation_helper.h.

Constructor & Destructor Documentation

◆ LibraryHelper()

dart::kernel::LibraryHelper::LibraryHelper ( KernelReaderHelper helper)
inlineexplicit

Definition at line 856 of file kernel_translation_helper.h.

857 : helper_(helper), next_read_(kFlags) {}

Member Function Documentation

◆ GetNonNullableByDefaultCompiledMode()

NNBDCompiledMode dart::kernel::LibraryHelper::GetNonNullableByDefaultCompiledMode ( ) const
inline

Definition at line 869 of file kernel_translation_helper.h.

869 {
872 if (!bit1 && !bit2) return NNBDCompiledMode::kStrong;
873 if (bit1 && !bit2) return NNBDCompiledMode::kWeak;
874 if (bit1 && bit2) return NNBDCompiledMode::kAgnostic;
875 if (!bit1 && bit2) return NNBDCompiledMode::kInvalid;
876 UNREACHABLE();
877 }
#define UNREACHABLE()
Definition: assert.h:248

◆ IsSynthetic()

bool dart::kernel::LibraryHelper::IsSynthetic ( ) const
inline

Definition at line 868 of file kernel_translation_helper.h.

868{ return (flags_ & kSynthetic) != 0; }

◆ ReadUntilExcluding()

void dart::kernel::LibraryHelper::ReadUntilExcluding ( Field  field)

Definition at line 1433 of file kernel_translation_helper.cc.

1433 {
1434 if (field <= next_read_) return;
1435
1436 // Ordered with fall-through.
1437 switch (next_read_) {
1438 // Note that this (up to canonical name) needs to be kept in sync with
1439 // "library_canonical_name" (currently in "kernel_loader.h").
1440 case kFlags: {
1441 flags_ = helper_->ReadFlags();
1442 if (++next_read_ == field) return;
1444 }
1445 case kLanguageVersion: {
1446 helper_->ReadUInt(); // Read major language version.
1447 helper_->ReadUInt(); // Read minor language version.
1448 if (++next_read_ == field) return;
1450 }
1451 case kCanonicalName:
1453 helper_->ReadCanonicalNameReference(); // read canonical_name.
1454 if (++next_read_ == field) return;
1456 case kName:
1457 name_index_ = helper_->ReadStringReference(); // read name index.
1458 if (++next_read_ == field) return;
1460 case kSourceUriIndex:
1461 source_uri_index_ = helper_->ReadUInt(); // read source_uri_index.
1463 if (++next_read_ == field) return;
1465 case kProblemsAsJson: {
1466 intptr_t length = helper_->ReadUInt(); // read length of table.
1467 for (intptr_t i = 0; i < length; ++i) {
1468 helper_->SkipBytes(helper_->ReadUInt()); // read strings.
1469 }
1470 if (++next_read_ == field) return;
1471 }
1473 case kAnnotations:
1474 helper_->SkipListOfExpressions(); // read annotations.
1475 if (++next_read_ == field) return;
1477 case kDependencies: {
1478 intptr_t dependency_count = helper_->ReadUInt(); // read list length.
1479 for (intptr_t i = 0; i < dependency_count; ++i) {
1480 helper_->SkipLibraryDependency();
1481 }
1482 if (++next_read_ == field) return;
1483 }
1484 return;
1485 }
1486}
virtual void set_current_script_id(intptr_t id)
size_t length
#define FALL_THROUGH
Definition: globals.h:15

◆ ReadUntilIncluding()

void dart::kernel::LibraryHelper::ReadUntilIncluding ( Field  field)
inline

Definition at line 859 of file kernel_translation_helper.h.

859 {
860 ReadUntilExcluding(static_cast<Field>(static_cast<int>(field) + 1));
861 }

◆ SetJustRead()

void dart::kernel::LibraryHelper::SetJustRead ( Field  field)
inline

Definition at line 866 of file kernel_translation_helper.h.

866{ next_read_ = field + 1; }

◆ SetNext()

void dart::kernel::LibraryHelper::SetNext ( Field  field)
inline

Definition at line 865 of file kernel_translation_helper.h.

865{ next_read_ = field; }

Member Data Documentation

◆ canonical_name_

NameIndex dart::kernel::LibraryHelper::canonical_name_

Definition at line 880 of file kernel_translation_helper.h.

◆ flags_

uint8_t dart::kernel::LibraryHelper::flags_ = 0

Definition at line 879 of file kernel_translation_helper.h.

◆ name_index_

StringIndex dart::kernel::LibraryHelper::name_index_

Definition at line 881 of file kernel_translation_helper.h.

◆ source_uri_index_

intptr_t dart::kernel::LibraryHelper::source_uri_index_ = 0

Definition at line 882 of file kernel_translation_helper.h.


The documentation for this class was generated from the following files: