From 61bfe2d70cae6be8c4086a210a5451135ccca9ea Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sat, 2 Aug 2008 08:21:29 +0000 Subject: added doc tool --- docs/tool/Modules/NaturalDocs/SourceDB/File.pm | 129 +++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 docs/tool/Modules/NaturalDocs/SourceDB/File.pm (limited to 'docs/tool/Modules/NaturalDocs/SourceDB/File.pm') diff --git a/docs/tool/Modules/NaturalDocs/SourceDB/File.pm b/docs/tool/Modules/NaturalDocs/SourceDB/File.pm new file mode 100644 index 00000000..c364c948 --- /dev/null +++ b/docs/tool/Modules/NaturalDocs/SourceDB/File.pm @@ -0,0 +1,129 @@ +############################################################################### +# +# Package: NaturalDocs::SourceDB::File +# +############################################################################### +# +# A class used to index items by file. +# +############################################################################### + +# This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure +# Natural Docs is licensed under the GPL + +use strict; +use integer; + + +package NaturalDocs::SourceDB::File; + +use NaturalDocs::DefineMembers 'ITEMS'; + + +# +# Variables: Members +# +# These constants serve as indexes into the object array. +# +# ITEMS - An arrayref where an is the index and the members are existence hashrefs of the item strigs defined +# in this file. The arrayref will always exist, but the hashrefs may be undef. +# + + +# +# Function: New +# +# Returns a new object. +# +sub New + { + my $package = shift; + + my $object = [ ]; + $object->[ITEMS] = [ ]; + + bless $object, $package; + return $object; + }; + + +# +# Function: AddItem +# +# Adds an item to this file. Returns whether this added a new item. +# +sub AddItem #(ExtensionID extension, string itemString) => bool + { + my ($self, $extension, $itemString) = @_; + + if (!defined $self->[ITEMS]->[$extension]) + { + $self->[ITEMS]->[$extension] = { $itemString => 1 }; + return 1; + } + elsif (!exists $self->[ITEMS]->[$extension]->{$itemString}) + { + $self->[ITEMS]->[$extension]->{$itemString} = 1; + return 1; + } + else + { + return 0; + }; + }; + + +# +# Function: HasItem +# +# Returns whether the item exists in this file. +# +sub HasItem #(ExtensionID extension, string itemString) => bool + { + my ($self, $extension, $itemString) = @_; + + if (defined $self->[ITEMS]->[$extension]) + { return exists $self->[ITEMS]->[$extension]->{$itemString}; } + else + { return 0; }; + }; + + +# +# Function: DeleteItem +# +# Deletes the passed item. Returns whether it existed. +# +sub DeleteItem #(ExtensionID extension, string itemString) => bool + { + my ($self, $extension, $itemString) = @_; + + if (!defined $self->[ITEMS]->[$extension]) + { return 0; } + elsif (exists $self->[ITEMS]->[$extension]->{$itemString}) + { + delete $self->[ITEMS]->[$extension]->{$itemString}; + return 1; + } + else + { return 0; }; + }; + + +# +# Function: ListItems +# +# Returns an array of all the item strings defined for a particular extension, or an empty list if none. +# +sub ListItems #(ExtensionID extension) => string array + { + my ($self, $extension) = @_; + + if (defined $self->[ITEMS]->[$extension]) + { return keys %{$self->[ITEMS]->[$extension]}; } + else + { return ( ); }; + }; + + +1; -- cgit 1.4.1