Added example project and data file
This commit is contained in:
		
						commit
						f1d96e7cc7
					
				| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
#  Parameters - Class for sharing data between classes
 | 
			
		||||
## Using
 | 
			
		||||
* Copy the source files into the corresponding directory in your project
 | 
			
		||||
* Create a pointer and initialize the class. For example:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Parameters *parameters = Parameters::GetInstance();
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
It's the only way to initialize it, because the constructor is private.
 | 
			
		||||
 | 
			
		||||
## How it works?
 | 
			
		||||
On the first initialization, it reads the file in the given format:
 | 
			
		||||
 | 
			
		||||
Energy Shape
 | 
			
		||||
Length_X Lenght_Y Length_Z
 | 
			
		||||
Nx Ny Nz
 | 
			
		||||
index material (*Nx*Ny*Nz)
 | 
			
		||||
 | 
			
		||||
Throws error if the index is incorrect in the file.
 | 
			
		||||
 | 
			
		||||
## Public functions
 | 
			
		||||
 | 
			
		||||
Returns with the material form the list by it's index (returns -1 if the index is out of range): 
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
double GetMaterial(int index);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Returns with the material from the list by it's coordinates (not implemented yet):
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
double GetMaterial(int x, int y, int z);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Returns with the list size:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
double GetListSize();
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Returns with the vector:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
std::vector<double> GetMaterialList();
 | 
			
		||||
```
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
100 0
 | 
			
		||||
5 5 5
 | 
			
		||||
3 3 3
 | 
			
		||||
0 26
 | 
			
		||||
1 25
 | 
			
		||||
2 24
 | 
			
		||||
3 23
 | 
			
		||||
4 22
 | 
			
		||||
5 21
 | 
			
		||||
6 20
 | 
			
		||||
7 19
 | 
			
		||||
8 18
 | 
			
		||||
9 17
 | 
			
		||||
10 16
 | 
			
		||||
11 15
 | 
			
		||||
12 14
 | 
			
		||||
13 13
 | 
			
		||||
14 12
 | 
			
		||||
15 11
 | 
			
		||||
16 10
 | 
			
		||||
17 9
 | 
			
		||||
18 8
 | 
			
		||||
19 7
 | 
			
		||||
20 6
 | 
			
		||||
21 5
 | 
			
		||||
22 4
 | 
			
		||||
23 3
 | 
			
		||||
24 2
 | 
			
		||||
25 1
 | 
			
		||||
26 0
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,52 @@
 | 
			
		|||
//
 | 
			
		||||
//  Parameters.hpp
 | 
			
		||||
//  Parameters
 | 
			
		||||
//
 | 
			
		||||
//  Created by Baranyai David on 2018. 06. 30..
 | 
			
		||||
//  Copyright © 2018. Baranyai David. All rights reserved.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef Parameters_hpp
 | 
			
		||||
#define Parameters_hpp
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <fstream>
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
 | 
			
		||||
class Parameters
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    static Parameters *GetInstance();
 | 
			
		||||
    
 | 
			
		||||
    double GetMaterial(int, int, int); //Get by coordinates
 | 
			
		||||
    double GetMaterial(int); //Get by index
 | 
			
		||||
    std::vector<double> GetMaterialList(); //Get the whole vector
 | 
			
		||||
    double GetListSize();
 | 
			
		||||
    
 | 
			
		||||
    ~Parameters();
 | 
			
		||||
private:
 | 
			
		||||
    Parameters();
 | 
			
		||||
    static Parameters *instance;
 | 
			
		||||
    
 | 
			
		||||
    std::ifstream file;
 | 
			
		||||
    
 | 
			
		||||
    double energy;
 | 
			
		||||
    double shape;
 | 
			
		||||
    
 | 
			
		||||
    //Shape dimension
 | 
			
		||||
    double length_x;
 | 
			
		||||
    double length_y;
 | 
			
		||||
    double length_z;
 | 
			
		||||
    
 | 
			
		||||
    //Voxel
 | 
			
		||||
    double n_x;
 | 
			
		||||
    double n_y;
 | 
			
		||||
    double n_z;
 | 
			
		||||
    
 | 
			
		||||
    std::vector<double> material;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif /* Parameters_hpp */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
//
 | 
			
		||||
//  main.cpp
 | 
			
		||||
//  Parameters
 | 
			
		||||
//
 | 
			
		||||
//  Created by Baranyai David on 2018. 06. 30..
 | 
			
		||||
//  Copyright © 2018. Baranyai David. All rights reserved.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include "Parameters.hpp"
 | 
			
		||||
 | 
			
		||||
int main(int argc, const char * argv[])
 | 
			
		||||
{
 | 
			
		||||
    Parameters *param = Parameters::GetInstance();
 | 
			
		||||
    
 | 
			
		||||
    for(int i = 0; i < param -> GetListSize(); i++)
 | 
			
		||||
    {
 | 
			
		||||
        std::cout << param -> GetMaterial(i) << std::endl;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,87 @@
 | 
			
		|||
//
 | 
			
		||||
//  Parameters.cpp
 | 
			
		||||
//  Parameters
 | 
			
		||||
//
 | 
			
		||||
//  Created by Baranyai David on 2018. 06. 30..
 | 
			
		||||
//  Copyright © 2018. Baranyai David. All rights reserved.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include "Parameters.hpp"
 | 
			
		||||
 | 
			
		||||
Parameters* Parameters::GetInstance()
 | 
			
		||||
{
 | 
			
		||||
    if (instance == 0)
 | 
			
		||||
    {
 | 
			
		||||
        instance = new Parameters();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    return instance;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Parameters* Parameters::instance = 0;
 | 
			
		||||
 | 
			
		||||
Parameters::Parameters()
 | 
			
		||||
{
 | 
			
		||||
    try
 | 
			
		||||
    {
 | 
			
		||||
        file.open("data.txt");
 | 
			
		||||
        if(!file.is_open())
 | 
			
		||||
        {
 | 
			
		||||
            throw "File opening error";
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        int index_helper = 0;
 | 
			
		||||
        double material_helper = 0;
 | 
			
		||||
        
 | 
			
		||||
        //Read the data
 | 
			
		||||
        file >> energy >> shape;
 | 
			
		||||
        file >> length_x >> length_y >> length_z;
 | 
			
		||||
        file >> n_x >> n_y >> n_z;
 | 
			
		||||
        for(int i = 0; i < (n_x * n_y * n_z); i++)
 | 
			
		||||
        {
 | 
			
		||||
            file >> index_helper;
 | 
			
		||||
            if(index_helper == i)
 | 
			
		||||
            {
 | 
			
		||||
                file >> material_helper;
 | 
			
		||||
                material.push_back(material_helper);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                throw "Index mismatch in file";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    //Check if any errors happen when opening the file
 | 
			
		||||
    catch(char param)
 | 
			
		||||
    {
 | 
			
		||||
        std::cout << param << std::endl;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
double Parameters::GetMaterial(int x, int y, int z)
 | 
			
		||||
{
 | 
			
		||||
    //To-Do
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
double Parameters::GetMaterial(int index)
 | 
			
		||||
{
 | 
			
		||||
    if(index > material.size() || index < 0)
 | 
			
		||||
    {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        return material[index];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::vector<double> Parameters::GetMaterialList()
 | 
			
		||||
{
 | 
			
		||||
    return material;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
double Parameters::GetListSize()
 | 
			
		||||
{
 | 
			
		||||
    return material.size();
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue