001    /*
002            Copyright (c) 2009 Olivier Chafik, All Rights Reserved
003            
004            This file is part of JNAerator (http://jnaerator.googlecode.com/).
005            
006            JNAerator is free software: you can redistribute it and/or modify
007            it under the terms of the GNU Lesser General Public License as published by
008            the Free Software Foundation, either version 3 of the License, or
009            (at your option) any later version.
010            
011            JNAerator is distributed in the hope that it will be useful,
012            but WITHOUT ANY WARRANTY; without even the implied warranty of
013            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014            GNU Lesser General Public License for more details.
015            
016            You should have received a copy of the GNU Lesser General Public License
017            along with JNAerator.  If not, see <http://www.gnu.org/licenses/>.
018    */
019    package com.ochafik.lang.jnaerator.runtime.globals;
020    
021    import com.sun.jna.NativeLibrary;
022    import com.sun.jna.Pointer;
023    
024    public abstract class Global {
025            protected String[] symbols;
026            protected NativeLibrary library;
027            protected Pointer pointer;
028            public Global(NativeLibrary library, String... symbols) {
029                    this.symbols = symbols;
030                    this.library = library;
031            }
032            protected Pointer getPointer() {
033                    if (pointer == null)
034                            for (String symbol : symbols)
035                                    if ((pointer = library.getGlobalVariableAddress(symbol)) != null)
036                                            break;
037                    return pointer;
038            }
039    }