summary refs log blame commit diff stats
path: root/tests/generics/texplicitgeneric2.nim
blob: 573b10ae8a57cffaa3c049023580f944d9707a55 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                                                                
                

   


                                  
                               

                                                

                                                    

                   

                                         
                    
 

                                                       
                                          
 


                              
                     




                                          
                     

                                           
                 
discard """
  output: "Key: 12 value: 12Key: 13 value: 13 Key: A value: 12 Key: B value: 13"
  disabled: true
"""

# test explicit type instantiation

type
  TDict*[TKey, TValue] = object
    data: seq[tuple[k: TKey, v: TValue]]
  PDict*[TKey, TValue] = ref TDict[TKey, TValue]

proc newDict*[TKey, TValue](): PDict[TKey, TValue] =
  new(result)
  result.data = @[]

proc add*(d: PDict, k: TKey, v: TValue) =
  d.data.add((k, v))


#iterator items*(d: PDict): tuple[k: TKey, v: TValue] =
#  for k, v in items(d.data): yield (k, v)

var d = newDict[int, string]()
d.add(12, "12")
d.add(13, "13")
for k, v in items(d):
  stdout.write("Key: ", $k, " value: ", v)

var c = newDict[char, string]()
c.add('A', "12")
c.add('B', "13")
for k, v in items(c):
  stdout.write(" Key: ", $k, " value: ", v)

stdout.write "\n"