File: Props.hxx

package info (click to toggle)
stella 0.7-2
  • links: PTS
  • area: non-free
  • in suites: hamm, slink
  • size: 864 kB
  • ctags: 1,158
  • sloc: cpp: 6,615; ansic: 492; makefile: 224; asm: 31
file content (81 lines) | stat: -rw-r--r-- 2,360 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//============================================================================
//
//    SSSS    tt          lll  lll              
//   SS  SS   tt           ll   ll                
//   SS     tttttt  eeee   ll   ll   aaaa    "An Atari 2600 VCS Emulator"
//    SSSS    tt   ee  ee  ll   ll      aa      
//       SS   tt   eeeeee  ll   ll   aaaaa   Copyright (c) 1995,1996,1997
//   SS  SS   tt   ee      ll   ll  aa  aa         Bradford W. Mott
//    SSSS     ttt  eeeee llll llll  aaaaa    
//
//============================================================================

#ifndef PROPERTIES_HXX
#define PROPERTIES_HXX

#include "machine.hxx"

/**
  Maintains a collection of property names and values.  Upon
  construction the property object contains some reasonable default
  values for most properties as well as "Cartridge.Image" set to 
  the name of the ROM image and "Cartridge.Id" set to the 
  cartridge's computed identification.

  @author  Bradford W. Mott
  @version $Id: Props.hxx,v 1.2 1997/05/17 19:00:07 bwmott Exp $
*/
class Properties
{
  public:
    /// Construct a property object for the specified ROM image file
    Properties(const char* filename);
 
    /// Destructor
    virtual ~Properties();

  public: 
    /// Answer the value of the property
    const char* find(const char* property) const;

    /// Answer the integer value of the property
    int integer(const char* property) const;

  public:
    /// Answer the value assigned to property
    const char* get(const char* property) const;

    /// Set the value of property to the specified value
    void set(const char* property, const char* value);

  private:
    // Make sure the values assigned to properties are reasonable
    void validate();

    // Autodetect the properties from the given BIN file
    void autodetect(const char* filename);

    // Calculate the Cartridge Id associated with the ROM Image
   void calculateId(const char* file, char* id);

    // Determine the cartridge's type
    const char* cartridgeType(const char* filename, const char* id);

  private:
    struct Property 
    {
      char* keyword;
      char* value;
    };

    // Array of properties
    Property* myProperties;

    // Size of the properties array 
    unsigned int mySize;

    // Number of properties being held
    unsigned int myNumberOfProperties;
};
#endif