Class TBaseItem

Unit

Declaration

type TBaseItem = class(TSerializable)

Description

This is a basic item class, that is linkable, and has some RawDescription.

Source: source/component/PasDoc_Items.pas (line 157).

Hierarchy

Show Additional Members:

Overview

Methods

Public class function Read7BitEncodedInt(const ASource: TStream): Integer;
Public class procedure Write7BitEncodedInt(Value: Integer; const ADestination: TStream);
Public class function LoadStringFromStream(const ASource: TStream): string;
Public class procedure SaveStringToStream(const AValue: string; const ADestination: TStream);
Public class function LoadDoubleFromStream(const ASource: TStream): double;
Public class procedure SaveDoubleToStream(const AValue: double; const ADestination: TStream);
Public class function LoadIntegerFromStream(const ASource: TStream): Longint;
Public class procedure SaveIntegerToStream(const AValue: Longint; const ADestination: TStream);
Public class procedure SerializeObject(const AObject: TSerializable; const ADestination: TStream);
Public class function DeserializeObject(const ASource: TStream): TSerializable;
Public class procedure Register(const AClass: TSerializableClass);
Public procedure SerializeToFile(const AFileName: string);
Public class function DeserializeFromFile(const AFileName: string): TSerializable;
Protected procedure Serialize(const ADestination: TStream); override;
Protected procedure Deserialize(const ASource: TStream); override;
Public constructor Create; override;
Public destructor Destroy; override;
Public procedure RegisterTags(TagManager: TTagManager); virtual;
Public function FindItem(const NameParts: TNameParts): TBaseItem; virtual;
Public function FindItemMaybeInAncestors(const NameParts: TNameParts): TBaseItem; virtual;
Public function FindName(const NameParts: TNameParts): TBaseItem; virtual;
Public function RawDescriptionInfo: PRawDescriptionInfo;
Public function QualifiedName: String; virtual;
Public function BasePath: string; virtual;
Public function Signature: string; virtual;

Properties

Public property WasDeserialized: boolean read FWasDeserialized;
Public property DetailedDescription: string read FDetailedDescription write FDetailedDescription;
Public property RawDescription: string read GetRawDescription write WriteRawDescription;
Public property FullLink: string read FFullLink write FFullLink;
Public property LastMod: string read FLastMod write FLastMod;
Public property Name: string read FName write FName;
Public property Authors: TStringVector read FAuthors write SetAuthors;
Public property Created: string read FCreated;
Public property AutoLinkHereAllowed: boolean read FAutoLinkHereAllowed write FAutoLinkHereAllowed default true;

Description

Methods

Public class function Read7BitEncodedInt(const ASource: TStream): Integer;

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 49).

Public class procedure Write7BitEncodedInt(Value: Integer; const ADestination: TStream);

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 50).

Public class function LoadStringFromStream(const ASource: TStream): string;

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 52).

Public class procedure SaveStringToStream(const AValue: string; const ADestination: TStream);

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 53).

Public class function LoadDoubleFromStream(const ASource: TStream): double;

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 54).

Public class procedure SaveDoubleToStream(const AValue: double; const ADestination: TStream);

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 55).

Public class function LoadIntegerFromStream(const ASource: TStream): Longint;

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 56).

Public class procedure SaveIntegerToStream(const AValue: Longint; const ADestination: TStream);

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 57).

Public class procedure SerializeObject(const AObject: TSerializable; const ADestination: TStream);

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 60).

Public class function DeserializeObject(const ASource: TStream): TSerializable;

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 61).

Public class procedure Register(const AClass: TSerializableClass);

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 62).

Public procedure SerializeToFile(const AFileName: string);

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 63).

Public class function DeserializeFromFile(const AFileName: string): TSerializable;

This item is declared in ancestor TSerializable.

Read back from file.

Exceptions raised
EInvalidCacheFileVersion
When the cached file contents are from an old pasdoc version (or invalid).

Source: source/component/PasDoc_Serialize.pas (line 67).

Protected procedure Serialize(const ADestination: TStream); override;

Serialization of TPasItem need to store in stream only data that is generated by parser. That's because current approach treats "loading from cache" as equivalent to parsing a unit and stores to cache right after parsing a unit. So what is generated by parser must be written to cache.

That said,

  1. It will not break anything if you will accidentally store in cache something that is not generated by parser. That's because saving to cache will be done anyway right after doing parsing, so properties not initialized by parser will have their initial values anyway. You're just wasting memory for cache, and some cache saving/loading time.

  2. For now, in implementation of serialize/deserialize we try to add even things not generated by parser in a commented out code. This way if approach to cache will change some day, we will be able to use this code.

Source: source/component/PasDoc_Items.pas (line 215).

Protected procedure Deserialize(const ASource: TStream); override;

This item has no description.

Source: source/component/PasDoc_Items.pas (line 216).

Public constructor Create; override;

This item has no description.

Source: source/component/PasDoc_Items.pas (line 218).

Public destructor Destroy; override;

This item has no description.

Source: source/component/PasDoc_Items.pas (line 219).

Public procedure RegisterTags(TagManager: TTagManager); virtual;

It registers TTags that init Authors, Created, LastMod and remove relevant tags from description. You can override it to add more handlers.

Source: source/component/PasDoc_Items.pas (line 224).

Public function FindItem(const NameParts: TNameParts): TBaseItem; virtual;

Search for an item with name NameParts inside this Pascal item. For units, it searches for items declared inside this unit (like a procedure, or a class in this unit). For classes it searches for items declared within this class (like a method or a property). For an enumerated type, it searches for members of this enumerated type.

All normal rules of ObjectPascal scope apply, which means that e.g. classes have their separate namespace. When searching for Foo from the unit level, we do not "look into" class namespaces.

Returns nil if not found.

Note that it never compares NameParts with Self.Name. You may want to check this yourself if you want.

Note that for TPasItem descendants, it always returns also some TPasItem descendant (so if you use this method with some TPasItem instance, you can safely cast result of this method to TPasItem).

Implementation in this class always returns nil. Override as necessary.

Source: source/component/PasDoc_Items.pas (line 249).

Public function FindItemMaybeInAncestors(const NameParts: TNameParts): TBaseItem; virtual;

This is just like FindItem, but in case of classes or such it should also search within ancestors. In this class, the default implementation just calls FindItem.

Source: source/component/PasDoc_Items.pas (line 254).

Public function FindName(const NameParts: TNameParts): TBaseItem; virtual;

Do all you can to find link specified by NameParts.

While searching this tries to mimic ObjectPascal identifier scope as much as it can. It seaches within this item, but also within class enclosing this item, within ancestors of this class, within unit enclosing this item, then within units used by unit of this item.

Source: source/component/PasDoc_Items.pas (line 265).

Public function RawDescriptionInfo: PRawDescriptionInfo;

Full info about RawDescription of this item, including it's filename and position.

This is intended to be initialized by parser.

This returns PRawDescriptionInfo instead of just TRawDescriptionInfo to allow natural setting of properties of this record (otherwise

Item.RawDescriptionInfo.StreamName := 'foo';

would not work as expected) .

Source: source/component/PasDoc_Items.pas (line 296).

Public function QualifiedName: String; virtual;

Returns the qualified name of the item. This is intended to return a concise and not ambigous name. E.g. in case of TPasItem it is overridden to return Name qualified by class name and unit name.

In this class this simply returns Name.

Source: source/component/PasDoc_Items.pas (line 315).

Public function BasePath: string; virtual;

The full (absolute) path used to resolve filenames in this item's descriptions. Must always end with PathDelim. In this class, this simply returns GetCurrentDir (with PathDelim added if needed).

Source: source/component/PasDoc_Items.pas (line 333).

Public function Signature: string; virtual;

Just like Name but optionally with added routine parameter types, to be unique when overloading is used. For example, for routines it may be like MyMethod(String) or MyMethod(Integer).

Source: source/component/PasDoc_Items.pas (line 339).

Properties

Public property WasDeserialized: boolean read FWasDeserialized;

This item is declared in ancestor TSerializable.

This item has no description.

Source: source/component/PasDoc_Serialize.pas (line 68).

Public property DetailedDescription: string read FDetailedDescription write FDetailedDescription;

Detailed description of this item.

In case of TPasItem, this is something more elaborate than TPasItem.AbstractDescription.

This is already in the form suitable for final output, ready to be put inside final documentation.

Source: source/component/PasDoc_Items.pas (line 274).

Public property RawDescription: string read GetRawDescription write WriteRawDescription;

This stores unexpanded version (as specified in user's comment in source code of parsed units) of description of this item.

Actually, this is just a shortcut to RawDescriptionInfo.Content

Source: source/component/PasDoc_Items.pas (line 283).

Public property FullLink: string read FFullLink write FFullLink;

a full link that should be enough to link this item from anywhere else

Source: source/component/PasDoc_Items.pas (line 299).

Public property LastMod: string read FLastMod write FLastMod;

Contains '' or string with date of last modification. This string is already in the form suitable for final output format (i.e. already processed by TDocGenerator.ConvertString).

Source: source/component/PasDoc_Items.pas (line 304).

Public property Name: string read FName write FName;

name of the item

Source: source/component/PasDoc_Items.pas (line 307).

Public property Authors: TStringVector read FAuthors write SetAuthors;

list of strings, each representing one author of this item

Source: source/component/PasDoc_Items.pas (line 318).

Public property Created: string read FCreated;

Contains '' or string with date of creation. This string is already in the form suitable for final output format (i.e. already processed by TDocGenerator.ConvertString).

Source: source/component/PasDoc_Items.pas (line 323).

Public property AutoLinkHereAllowed: boolean read FAutoLinkHereAllowed write FAutoLinkHereAllowed default true;

Is auto-link mechanism allowed to create link to this item ? This may be set to False by @noAutoLinkHere tag in item's description.

Source: source/component/PasDoc_Items.pas (line 327).


Generated by PasDoc 1.0.2.