digitalmars.D - private declaration in module
- novice <novice_member pathlink.com> Sep 22 2004
- Sjoerd van Leent <svanleent wanadoo.nl> Sep 22 2004
- Bastiaan Veelo <Bastiaan.N.Veelo ntnu.no> Sep 22 2004
- novice <novice_member pathlink.com> Sep 22 2004
- Andy Friesen <andy ikagames.com> Sep 22 2004
- Bastiaan Veelo <Bastiaan.N.Veelo ntnu.no> Sep 22 2004
- "Ben Hinkle" <bhinkle mathworks.com> Sep 22 2004
Hello. Can you help me? Newbie question: how i can hide come functions and other declarations in my D module from import? I want declare one or more public function in module (so other modules can use it), and one or more private (local) functions (for internal usage only, so other modules can't use it directly). Thanks. Alex
Sep 22 2004
novice wrote:Hello. Can you help me? Newbie question: how i can hide come functions and other declarations in my D module from import? I want declare one or more public function in module (so other modules can use it), and one or more private (local) functions (for internal usage only, so other modules can't use it directly). Thanks. Alex
Very simple, all protection attributes are module based (within a class, a struct, a template or without) with the exception to protected. package = The module and submodules may access it private = Only the module may access it protected = Only within classes and interfaces, only subclasses may access it public = Every module may access it Also: import = Imported modules are visible to other modules using your module private import = Imported modules are hidden for other modules using your module Regards, Sjoerd
Sep 22 2004
novice wrote:Hello. Can you help me? Newbie question: how i can hide come functions and other declarations in my D module from import? I want declare one or more public function in module (so other modules can use it), and one or more private (local) functions (for internal usage only, so other modules can't use it directly). Thanks. Alex
See protection attributes in http://www.digitalmars.com/d/attribute.html. #module mypackage.mymodule; # #/* public code */ # #package { # #/* code accessible by other modules in this package, # but not outside it */ # #} # #private { # #/* code accessible in this module only */ # #} You're welcome, Bastiaan.
Sep 22 2004
Thanks to Sjoerd and Bastiaan! May be, my question cause is my bad english. At http://www.digitalmars.com/d/attribute.html "private" described as applied to "enclosed class" only, but my program has no classes.Private means that only members of the enclosing class can access the member, or members and functions in the same module as the enclosing class. Private members cannot be overridden. Private module members are equivalent to static declarations in C programs
Sep 22 2004
novice wrote:Thanks to Sjoerd and Bastiaan! May be, my question cause is my bad english. At http://www.digitalmars.com/d/attribute.html "private" described as applied to "enclosed class" only, but my program has no classes.
Private can be used at the module level too. module foo; private int helper() { ... } int somethingInteresting() { ... } -- andy
Sep 22 2004
novice wrote:Thanks to Sjoerd and Bastiaan! May be, my question cause is my bad english. At http://www.digitalmars.com/d/attribute.html "private" described as applied to "enclosed class" only, but my program has no classes.Private means that only members of the enclosing class can access the member, or members and functions in the same module as the enclosing class. Private members cannot be overridden. Private module members are equivalent to static declarations in C programs
It is not your english, that sentence is misleading. I think "enclosing class" should read something like "enclosing class, enclosing template or enclosing module, whatever comes first". Bastiaan.
Sep 22 2004
"Bastiaan Veelo" <Bastiaan.N.Veelo ntnu.no> wrote in message news:cis370$2jgu$1 digitaldaemon.com...novice wrote:Thanks to Sjoerd and Bastiaan! May be, my question cause is my bad english. At http://www.digitalmars.com/d/attribute.html "private" described as applied to "enclosed class" only, but my program has no classes.Private means that only members of the enclosing class can access the
or members and functions in the same module as the enclosing class.
members cannot be overridden. Private module members are equivalent to
declarations in C programs
It is not your english, that sentence is misleading. I think "enclosing class" should read something like "enclosing class, enclosing template or enclosing module, whatever comes first". Bastiaan.
Some word-smithing wouldn't hurt, but note it does say "Private module members are equivalent to static ..." so it does address what private means for module-level declarations.
Sep 22 2004









Sjoerd van Leent <svanleent wanadoo.nl> 