searching AA

lurker lurker at lurker.com
Mon Mar 24 02:42:25 PDT 2008


below is the program fragment. i am using dmd 2012.
does anybody have a clue on how to search for a key and return the HASHTAG  value?

struct HASHTAG {
  string VR;
  string RET;
  string NAME;
}

class Tag {
  private:
  HASHTAG[string] Tags;

  public:
  this() {
    Tags = [
    "(0002,0000)": HASHTAG("UL","N","Group Length"),
    "(0002,0001)": HASHTAG("OB","N","File Meta Information Version"),
    "(0002,0002)": HASHTAG("UI","N","Media Storage SOP Class UID")
     ];
   }

  bool Search(string key, ref TData pData) {
	  string RET,VR;
	  int nVR; HASHTAG *tt;

// the below works, it displays values correctly

    HASHTAG xx[] = Tags.values;
    for(int i= 0; i <Tags.length; i++) {
      writefln("%s %s", xx[i].VR, xx[i].NAME);
    }

 // ----> will always be null, not finding the HASHTAG 
    tt = ("(0002,0000)" in Tags);
    if (tt == null)        
      return false;
  }
}

displaying the keys of the hash shows, that "(0002,0000)" is contained in the hash.





lurker Wrote:

> when i do as in the docs
> 
> 
> HASHTAG  *tt = ("(0002,0000)" in Tags);
> 
> it will always return null.
> 
> 
> lurker Wrote:
> 
> > ok all that worked. how do i  find for ex. "(0002,0000)" and get HASHTAG back??
> > 
> > thanks for any help
> > 
> > Frits van Bommel Wrote:
> > 
> > > lurker wrote:
> > > > hi,
> > > > 
> > > > i try to have a hash and initialize it. it doesn't work. can anybody please 
> > > > tell me how to initialize the below with many values such as 
> > > > 
> > > > 
> > > >       key                      struct values
> > > > "(0002,0000)"     "UL","N","Group Length",
> > > > "(0002,0001)"     "OB","N","File Meta Information Version",
> > > > 
> > > >                        ....
> > > > 
> > > > 
> > > > struct HASHTAG {
> > > >   //string Tag;
> > > >   string VR;
> > > >   string RET;
> > > >   string NAME;
> > > > }
> > > > 
> > > > HASHTAG[string] tags = [
> > > >   "(0002,0000)": {"UL","N","Group Length"},
> > > > ]
> > > > 
> > > > this does not work. many thanks in advance.
> > > 
> > > A variation on a common theme here: AA literals aren't constants and can 
> > > therefore not be used as initializers for global variables.
> > > Also, struct literals not directly used as initializers can't use the '{ 
> > > <members> }' syntax.
> > > 
> > > Try this instead:
> > > ---
> > > HASHTAG[string] tags;
> > > static this() {
> > >      tags = ["(0002,0000)": HASHTAG("UL","N","Group Length")];
> > > }
> > > ---
> > 
> 



More information about the Digitalmars-d-learn mailing list